1

我在集群的同一区域创建了一个区域静态 IP,并尝试将它与 LoadBalancer 一起使用:

---
apiVersion: v1
kind: Service
metadata:
  name: ambassador
spec:
  type: LoadBalancer
  externalTrafficPolicy: Local
  ports:
   - port: 80
     targetPort: 8080
  selector:
    service: ambassador
  loadBalancerIP: "x.x.x.x"

但是,我不知道为什么会收到此错误:

Error creating load balancer (will retry): failed to ensure load balancer for service default/ambassador: requested ip "x.x.x.x" is neither static nor assigned to the LB   

编辑:问题已解决,但..

当我创建静态 IP 地址时,我使用了:

gcloud compute addresses create regional-ip --region  europe-west1

我将此地址用于服务。它没有像我说的那样工作。

但是,当我使用 Web 控制台创建外部静态区域 IP 时,该 IP 与我的服务正常工作,并且连接没有问题。

4

1 回答 1

1

我敢打赌,源 IP 服务不会暴露。正如官方文档所说:

从 Kubernetes 1.5 开始,默认情况下,发送到 Type=LoadBalancer 的服务的数据包经过源 NAT,因为处于就绪状态的所有可调度 Kubernetes 节点都符合负载均衡流量的条件。因此,如果数据包到达没有端点的节点,系统会将其代理到具有端点的节点,将数据包上的源 IP 替换为节点的 IP(如上一节所述)。

尝试使用以下命令将源 IP 服务公开给负载均衡器:

kubectl expose deployment <source-ip-app> --name=loadbalancer --port=80 --target-port=8080 --type=LoadBalancer

在此页面上,您将找到更多指导和一些用于健全性检查的诊断命令。

https://kubernetes.io/docs/tutorials/services/source-ip/#source-ip-for-services-with-type-loadbalancer

于 2020-01-06T00:18:34.913 回答