Kubernetes 静态IP地址不可分配给Google云中的负载均衡器

Kubernetes 静态IP地址不可分配给Google云中的负载均衡器,kubernetes,google-kubernetes-engine,gcloud,traefik,traefik-ingress,Kubernetes,Google Kubernetes Engine,Gcloud,Traefik,Traefik Ingress,我试图为我的Traefik ingress负载平衡器分配一个静态IP地址,但在谷歌云上总是得到相同的响应: Error creating load balancer (will retry): failed to ensure load balancer for service default/traefik-service: requested ip "35.185.139.44" is neither static nor assigned to the LB coffee:gke

我试图为我的Traefik ingress负载平衡器分配一个静态IP地址,但在谷歌云上总是得到相同的响应:

Error creating load balancer (will retry): failed to ensure load   balancer for service default/traefik-service: requested ip   "35.185.139.44" is neither static nor assigned to the LB
coffee:gke Steven$ glcoud compute addresses list
我注意到所有的静态都是在保留和非说在使用中

# Declare Traefik ingress service
kind: Service
apiVersion: v1
metadata:
  name: traefik-service
spec:
  selector:
   app: traefik-gke-demo
   tier: reverse-proxy
  ports:
   - port: 80
     name: http
   - port: 443
     name: https
   - port: 8080
     name: admin
   type: LoadBalancer
   loadBalancerIP:  35.185.xx.xx

当您使用
服务
规范
类型:LoadBalancer

因此,删除
loadBalancerIP:35.185.139.44
kubectl apply--filename=…
,然后稍等片刻,然后
kubectl get service/traefik service
您应该会看到LB为您提供了服务

或者:

kubectl获取服务\
--选择器=应用程序=traefik gke演示,层=反向代理\
--output=jsonpath=“{.status.loadBalancer.ingress[0].ip}”
以及以下一些变体,以确认已配置负载平衡器:

gcloud计算转发规则列表\
--format=“value(IPAddress)\
--project=[[YOUR-project]]

NB以这种方式使用
服务将提供TCP负载平衡器。如果您更喜欢HTTP | L7负载平衡器,则应使用
Ingress
服务声明正确, 运行Kubernetes v1.1的Google容器引擎支持
loadBalancerIP
,您只需事先为您的项目创建静态IP,即

gcloud compute addresses create traefik-static-lb

gcloud compute addresses list
保留后,创建LB服务

UPD:

下面是一个分配了静态IP的我的LB服务示例:

sukhoversha@sukhoversha:~/GCP$ gcloud compute addresses list
NAME            ADDRESS/RANGE   TYPE      PURPOSE  NETWORK  REGION        SUBNET  STATUS
test-static-ip  35.198.94.139   EXTERNAL                    europe-west3          IN_USE


sukhoversha@sukhoversha:~/GCP$ kk get svc rabbitmq-management
NAME                  TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)           AGE
rabbitmq-management   LoadBalancer   10.59.241.225   35.198.94.139   15672:31728/TCP   4d


sukhoversha@sukhoversha:~/GCP$ kk get svc rabbitmq-management -oyaml 
apiVersion: v1
kind: Service
metadata:
  labels:
    app: rabbitmq
  name: rabbitmq-management
  namespace: default
spec:
  clusterIP: 10.59.241.225
  externalTrafficPolicy: Cluster
  loadBalancerIP: 35.198.94.139
  ports:
  - name: http
    nodePort: 31728
    port: 15672
    protocol: TCP
    targetPort: 15672
  selector:
    app: rabbitmq
  sessionAffinity: None
  type: LoadBalancer

我正在尝试使用静态IP地址。有没有办法告诉谷歌自动神奇地为负载平衡器使用静态IP地址?我正在尝试使用我自己的负载平衡器,而不是谷歌云负载平衡器,或者如果使用gcloud,至少可以设置负载平衡器的IP地址。我的错。对不起,你的问题很清楚。我问题是你不能告诉
服务
类型:负载平衡器
,因为这是在Kubernetes引擎中定义的,用于提供L4磅。我想可能实现这一点的方法是通过
入口
并使用
节点端口
定义
服务。让我做一些研究。嗯……又错了:我没有我不知道。让我们看看其他人怎么说。好吧,我可以给它分配一个入口,但不能分配一个负载均衡器。那有效吗?你创建了一个静态ip吗?
gcloud compute addresses list
是的,我有静态ip地址。问题是,似乎不可能将此ip地址分配给负载均衡器服务。它可以分配给一个Ingress yes。@StevenSmart从技术上讲,这是可能的,我已经用静态IP的LB svc示例更新了我的答案。如果您对此有问题,请检查堆栈驱动程序日志,可能是一些本地问题。