我在Google Cloud上运行Kubernetes的网站。目前,一切运作良好 - 通过http。但我需要https。我有几个服务,其中一个是暴露给外面的世界,我们称之为网络。据我所知,这是唯一需要修改的服务。我尝试在GCP的网络部分创建静态IP和TCP / SSL负载均衡器ssl-LB,并在我创建的web.yaml中使用该LB.创建服务时遇到了:
Error creating load balancer (will retry): Failed to create load
balancer for service default/web: requested ip <IP> is
neither static nor assigned to LB
aff3a4e1f487f11e787cc42010a84016(default/web): <nil>
根据GCP,我的IP是静态的。哈希的LB在任何地方都找不到,无论如何都应该分配给ssl-LB.如何正确分配?
更多详情:
以下是web.yaml的内容
apiVersion: v1
kind: Service
metadata:
name: web
labels:
...
spec:
type: LoadBalancer
loadBalancerIP: <RESERVED STATIC IP>
ports:
- port: 443
targetPort: 7770
selector:
...
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: web
spec:
replicas: 1
template:
metadata:
labels:
...
spec:
containers:
- name: web
image: gcr.io/<PROJECT>/<IMAGE NAME>
ports:
- containerPort: 7770
答案 0 :(得分:22)
由于您尚未提及此问题,我只是假设您正在使用Google容器引擎(GKE)进行Kubernetes设置。
在服务资源清单中,如果设置Type
to LoadBalancer
,Kuber上的Kubernetes会自动使用GCE设置网络负载平衡(L4负载均衡器)。您必须使用自己的自定义服务器或类似nginx
/ apache
的内容终止您的广告连接中的连接。
如果您的目标是设置(HTTP / HTTPS)L7负载均衡器(看起来就是这种情况),那么使用Ingress
resource in Kubernetes会更简单,更容易(从v1.1
开始)。 GKE使用此设置自动设置GCE HTTP / HTTPS L7负载平衡。
您将能够添加您的TLS证书,这些证书将由GKE自动在GCE负载均衡器上进行配置。
此设置具有以下优点:
URL Maps
进行配置)。Target proxies
进行配置)。health checks
。您的职责是处理后端服务逻辑以处理您的pod中的请求。
GKE page about setting up HTTP load balancing上提供了更多信息。
请记住,在使用GKE时,它会自动为上述两种用例使用可用的GCE负载均衡器支持,您无需手动设置GCE load balancing。