集群内的应用需要访问外部资源,被请求的时候请求来自slb,nodeport,应用将数据原路返回,但是无法主动通过slb对外进行访问,因此集群出方向也是需要关注的,默认的公网出方向能力提供为vpc的nat网关,我们在处理集群内外的出方向请求时,通常会有什么问题?
i.偶发出访问不通-出口NAT网关:
如果您有大量访问公网的机器或者pod,公网NAT网关做为统一公网出口,需要留意NAT网关的性能上限(带宽,最大连接数,吞吐量),可通过nat网关监控确认是否有达到性能瓶颈丢包等行为。
-偶发性的负载增加导致链路中出现丢包。 如遇负载徒增的问题导致丢包,基于tcpip协议的特性会有自动重传,小量的丢包可以忽略,如果量级比较高(可自行评估可承受的偶发延迟率,如超过1%的请求超过1s不可接受),需要评估是否需要横向扩展或者提高宿主机的配置,可参考上面所属的亲和性打散,cpu-static的优化,使用alinux2系统以及使用最新的规格如7代实例等。
ii.持续出访问不通
-底层实例网络故障
•先判断节点到公网,节点到节点是否能通
-集群网络模式
•Terway模式,pod拥有独立于ecs的eni, 需要留意pod eni的网络环境 (路由表,安全组等)。Terway Trunk ENI支持为每个Pod配置固定IP、独立的虚拟交换机、安全组。
•Flannel 模式,pod出方向经由节点eth0, 由CCM组件自动添加pod网段对应下一跳节点的路由条目。若路由表项缺失,会造成pod访问或者回包异常。
-是否设置NetworkPolicy
•Terway-eniip使用Calico的Felix作为NetworkPolicy功能的实现; 在基于IPvlan的ENI多IP的IPvlan模式中Terway的NetworkPolicy是通过集成Cilium组件来实现。
•注意NetworkPolicy的限制范围:可访问公网服务的来源IP网段;只能被带有特定标签的应用访问;限制一个Pod只能访问指定地址;控制命名空间下Pod公网访问权限。
-是否开启Istio注入
•开启Istio注入,Istio-proxy会根据用户设置的isito 规则改写iptables规则,pod出入流量会被istio-proxy拦截处理。
-EIP:
•通常VPC内配置NAT网关提供SNAT出公网能力,如果某些ECS实例已经绑定了EIP,这些ECS实例会优先通过绑定的EIP访问互联网,而VPC内的其他ECS实例通过NAT网关的SNAT功能访问互联网,造成VPC内ECS实例的公网出口IP不一致,EIP单独的网络环境也会带来额外的问题。
•以上场景非最佳实践,可以通过为ECS实例绑定弹性网卡来解决公网出口IP不统一的问题。为绑定了EIP的ECS实例单独分配一块弹性网卡,并将EIP绑定到弹性网卡,这样来自互联网的访问流量会经过弹性网卡到达ECS实例,当ECS实例需要访问互联网时会通过NAT网关进行转发。
-安全组出口规则
企业安全组需要明文规定出口规则。普通安全组出方向默认全开。参考官方文档中总结。
以上内容摘自《企业级云原生白皮书项目实战》电子书,点击https://developer.aliyun.com/ebook/download/7774可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云负载均衡(Server Load Balancer,简称SLB)是云原生时代应用高可用的基本要素。通过将流量分发到不同的后端服务来扩展应用系统的服务吞吐能力,消除单点故障并提升应用系统的可用性。 阿里云SLB包含面向4层的网络型负载均衡NLB、面向7层的应用型负载均衡ALB和传统型负载均衡CLB,是阿里云官方云原生网关。