服务网格ASM已添加Kubernetes集群,并且使用Local类型的负载均衡SLB部署入口网关。当应用Pod访问入口网关暴露的SLB地址时,出现以下问题:
如果Kubernetes集群的服务配置了externalTrafficPolicy: Local,则只有部署了服务的后端Pod才能访问SLB地址。因为SLB地址是集群外使用,如果集群节点和Pod不能直接访问SLB地址,请求不会路由到负载均衡,而是被当作服务的扩展IP地址,被kube-proxy的iptables或IPVS转发。
如果集群节点或者Pod所在的节点上没有相应的后端服务Pod,就会发生网络不通的问题。而如果有相应的后端服务Pod,则可以正常访问SLB地址。更多信息,请参见iptables规则。
说明 推荐使用该方法。
将入口网关服务中的externalTrafficPolicy修改为Cluster,但是在应用中会丢失源IP。关于修改入口网关的更多信息,请参见修改入口网关服务。
apiVersion: istio.alibabacloud.com/v1beta1kind: IstioGatewaymetadata: name: ingressgateway namespace: istio-system ....spec: externalTrafficPolicy: Cluster....
将入口网关服务中的externalTrafficPolicy修改为Cluster,并且添加ENI直通的Annotation,例如serviceAnnotations: service.beta.kubernetes.io/backend-type:"eni"。关于修改入口网关的更多信息,请参见修改入口网关服务。
apiVersion: istio.alibabacloud.com/v1beta1kind: IstioGatewaymetadata: name: ingressgateway namespace: istio-system ....spec: externalTrafficPolicy: Cluster maxReplicas: 5 minReplicas: 2 ports: - name: status-port port: 15020 targetPort: 15020 - name: http2 port: 80 targetPort: 80 - name: https port: 443 targetPort: 443 - name: tls port: 15443 targetPort: 15443 replicaCount: 2 resources: limits: cpu: '2' memory: 2G requests: cpu: 200m memory: 256Mi runAsRoot: false serviceAnnotations: service.beta.kubernetes.io/backend-type: eni serviceType: LoadBalancer
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。