Kubernetes网络概述

jurioo1年前容器服务155

容器服务 Kubernetes 版 ACK(Container Service for Kubernetes)将Kubernetes网络设计应用到了云的资源上,提供了稳定高性能的容器网络。本文介绍ACK中容器网络的重要概念,例如容器网络插件CNI、Service、Ingress、提供服务发现能力的DNS等。您可以通过了解这些概念,更合理地设计应用部署模型和网络访问的方式。

容器网络插件(CNI Plugin)

image

Kubernetes本身并未实现容器间的网络互联能力,但是它通过容器网络接口(CNI)对容器间的网络做出了标准化的定义:

  • Pod在容器网络中的状态随着Pod生命周期而变化。例如,Pod创建后需要加入网络,销毁后需要退出网络。

  • Pod在容器网络中拥有唯一的IP地址,以便于识别身份。

  • Pod可以与集群内的端点与集群外的端点互相访问。

容器网络插件(CNI Plugins)负责容器网络的具体实现。容器网络插件决定了Pod IP地址分配的机制、是否使用Overlay网络、集群内流量的转发链路、对Pod的访问控制机制等容器网络特性。目前已经有很多知名的开源容器网络插件,如Calico、Flannel、Cilium等。

Flannel容器网络插件

Flannel是一个经典的开源容器网络插件,它使用VXLAN等虚拟化网络技术为Pod构建了一个Overlay网络。Flannel的配置简单、易于使用,但是网络性能会受到NAT损失的影响,访问控制能力相较于Terway也更弱,并且集群的节点数量上限较低。Flannel适用于节点数量不超过1000的小规模集群,以及对网络性能和访问控制能力需求较低,希望快速搭建、使用集群的场景。

服务(Service)

由于云原生应用通常需要敏捷的迭代和快速的弹性,Pod在Kubernetes中被认为是临时性的、随时可替换的资源。当Pod被销毁、替换时,与其相关的网络资源也会发生变化,因此需要为Pod提供固定的访问方式。Kubernetes采用Service方式为一组拥有相同功能的容器提供固定的访问入口,并对这一组容器进行负载均衡。实现原理如下:

  • 通过Selector关联一组容器,以将这个Service的IP地址和端口负载均衡到这一组容器IP和端口上。

  • 在Pod发生变化时,Service会自动更新后端的转发规则,以保证通过Service能访问到最新的Pod。

ACK集群中的Service目前支持ClusterIP、NodePort、LoadBalancer、Headless Service、ExternalName模式,适用于集群内访问、集群外访问、公网访问等场景,详细信息请参见Service快速入门

路由(Ingress)

在ACK集群中,与Service的4层负载均衡不同,Ingress是集群内Service对外暴露7层的访问接入点,用于为集群中的多个Service提供统一的入口。您可以通过Ingress资源来配置不同的7层的转发规则,例如通过域名或者访问路径来路由到不同的Service上,从而达到7层的负载均衡作用。更多信息,请参见Ingress概述

image

服务发现DNS

ACK使用DNS来实现应用的服务发现能力,例如客户端应用可以通过Service的服务名解析出它的ClusterIP访问,再通过Service访问后端Pod。采用DNS服务发现的能力让集群中应用间的调用与IP地址和部署环境解耦。关于集群DNS组件的详细信息,请参见DNS概述

image


标签: k8s

相关文章

Kubernetes集群网络规划

Kubernetes集群网络规划

在创建ACK Kubernetes集群时,您需要指定专有网络VPC、虚拟交换机、Pod网络CIDR(地址段)和Service CIDR(地址段)。因此建议您提前规划ECS地址、Kubernetes P...

评论列表

www.yonboz.com
2024-11-26 23:21:23

你的文章让我学到了很多技能,非常实用。 https://www.4006400989.com/qyvideo/66013.html

vip影视大全
2024-12-15 03:58:05

《第14届中国金鹰电视艺术节开幕式暨文艺晚会》大陆综艺无广告高清版:https://www.jinzhuqq.com/dyvideo/20523.html

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。