我有2个在AKS 1.15.9中运行的LoadBalancer类型的Kubernetes服务
$ kubectl get svc --all-namespaces | grep Load
istio-system istio-egressgateway LoadBalancer 10.0.177.123 51.A.XXXXX
istio-system istio-ingressgateway LoadBalancer 10.0.198.456 20.B.XXXXX
但是,当我运行Pod检查出口IP时,它正在使用51.C.XXXX
curl -s checkip.dyndns.org
the AKS egress IP address is shown in the response is 51.C.XXXX
我希望AKS使用K8s服务中的其中一个LoadBalancer IP。
答案 0 :(得分:1)
ingress
IP和egress
IP之间是不同的。
出口,来自docs:
来自AKS群集的出站流量遵循Azure负载均衡器 约定。在第一个类型为LoadBalancer的Kubernetes服务之前 创建后,AKS集群中的代理节点不属于任何 Azure负载平衡器池。在此配置中,节点没有 实例级别公用IP地址。 Azure转换出站流 到不可配置的公共源IP地址或 确定性的。
话虽如此,从curl -s checkip.dyndns.org
返回的IP是出口IP。这是aks群集的出站公共IP。
入口,来自docs:
入口控制器是一款提供反向功能的软件 代理,可配置的流量路由和TLS终止 Kubernetes服务。 Kubernetes入口资源用于 为单个Kubernetes配置入口规则和路由 服务。使用入口控制器和入口规则,单个IP 该地址可用于将流量路由到一个 Kubernetes集群。
入口IP-在您的情况下,负载均衡器是公用\内部IP,负责反向代理和可配置的流量路由。
图: