对于集群内访问
svc:
•我们首先推荐集群使用svc 的 clusterip,此模式下,访问svc 的clusterip的转发模式取决于svc的internalTrafficPolicy配置,默认是cluster。 所以访问ClusterIP会被iptables/ipvs 规则默认转发到svc 后端的所有endpoint
•某些客户场景是通过lb类型暴露svc服务到集群外部, 同时配置lb的域名解析到lb的ip。而这个lb是提供给集群外和集群内访问。这种情况下,对于集群外部访问,lb可以均匀的转发到集群内后端的ep。但是对于集群内的pod访问svc的lb IP, 流量转发取决于externalTrafficPolicy的设置,一般情况下,ACK为Local模式,此时,客户端pod和lb后端的某个ep在同一个节点上时,流量才会被iptables/ipvs规则转发该节点上的后端ep上,而不会转发到其他节点上的ep。 这时候就产生了疑问,如何实现在集群内访问lb ip呢?可以给svc配置host(通过ervice.beta.kubernetes.io/alibaba- cloud-loadbalancer-hostname:""${your_service_hostname}""), 不过这种情况下,一般建议配置7层监听,如果是4层监听,可能存在访问回环的问题。
•有时不需要或不想要负载均衡,以及单独的 Service IP。 遇到这种情况,可以通过指定 Cluster IP(spec.clusterIP)的值为 ""None"" 来创建 Headless Service。
可以使用一个无头 Service 与其他服务发现机制进行接口,而不必与 Kubernetes 的实现捆绑在一起。对于无头 Services 并不会分配 Cluster IP,kube-proxy 不会处理它们, 而且平台也不会为它们进行负载均衡和路由。 DNS 如何实现自动配置,依赖于 Service 是否定义了选择算符。
以上内容摘自《企业级云原生白皮书项目实战》电子书,点击https://developer.aliyun.com/ebook/download/7774可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。