我正在尝试为GKE上的负载均衡器设置静态外部IP,但没有运气。这是我的Kubernetes服务配置文件:
kind: Service
apiVersion: v1
metadata:
name: myAppService
spec:
selector:
app: myApp
ports:
- protocol: TCP
port: 3001
targetPort: 3001
type: LoadBalancer
loadBalancerIP: *********
这不起作用。我希望看到我的外部IP为*********,但它只是说待处理:
➜ git:(master) kubectl get services
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ********* <none> 443/TCP 5m
myAppService ********* <pending> 3001:30126/TCP 5m
更多详情:
➜ git:(master) kubectl describe services
Name: kubernetes
Namespace: default
Labels: component=apiserver
provider=kubernetes
Annotations: <none>
Selector: <none>
Type: ClusterIP
IP: *********
Port: https 443/TCP
Endpoints: *********
Session Affinity: ClientIP
Events: <none>
Name: myAppService
Namespace: default
Labels: <none>
Annotations: <none>
Selector: app=myApp
Type: LoadBalancer
IP: *********
Port: <unset> 3001/TCP
NodePort: <unset> 30126/TCP
Endpoints:
Session Affinity: None
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
5m 20s 7 service-controller Normal CreatingLoadBalancer Creating load balancer
5m 19s 7 service-controller Warning CreatingLoadBalancerFailed Error creating load balancer (will retry): Failed to create load balancer for service default/myAppService: Cannot EnsureLoadBalancer() with no hosts
有什么想法吗?
答案 0 :(得分:1)
我遇到了同样的问题,但是仔细阅读文档后,结果发现我只是错误地保留了静态IP。
类型为LoadBalancer
的服务将创建区域性的网络负载平衡器。因此,您保留的静态IP地址也必须是区域性的(在您的群集中)。
当我更改为该解决方案时,一切对我来说都很好...
答案 1 :(得分:1)
这也让我陷入困境,希望有人能对此有所帮助。
除了Dirk所说的以外,如果您碰巧保留了一个与区域地址相对的全局静态IP地址;您需要按照文档中的说明使用Ingres:Configuring Domain Names with Static IP Addresses,尤其是步骤2b。
因此,基本上,您保留静态IP gcloud compute addresses create helloweb-ip --global
并添加一个Ingres:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: helloweb
# this is where you you add your reserved ip
annotations:
kubernetes.io/ingress.global-static-ip-name: helloweb-ip
labels:
app: hello
spec:
backend:
serviceName: helloweb-backend
servicePort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: helloweb-backend
labels:
app: hello
spec:
type: NodePort
selector:
app: hello
tier: web
ports:
- port: 8080
targetPort: 8080
文档还描述了如果您在步骤2a下选择“ LoadBalancer”类型,则如何分配静态IP。
答案 2 :(得分:-2)
经过一段时间的搜索,通过不必要的复杂和冗长的文档,这个简单的博客解决了我的问题:http://terrenceryan.com/blog/index.php/making-kubernetes-ip-addresses-static-on-google-container-engine/