Pod 联网 (CNI) - Amazon EKS

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

Pod 联网 (CNI)

Amazon EKS 支持与的本机VPC网络 Amazon VPC Kubernetes的容器网络接口(CNI)插件。使用此插件允许Kubernetespod在Pod内拥有与VPC网络上相同的IP地址。插件是一个开源项目,在GitHub上维护。有关更多信息,请参阅 亚马逊-vpc-cni-k8s提案: 用于通过AWSVPC建立Kubernetes网络的CNI插件 GitHub上。AmazonVPCCNI插件完全支持在上使用 Amazon EKS 和自我管理的Kubernetes集群 AWS.

注意

Kubernetes可使用 容器网络接口(CNI) 用于可配置的网络设置。AmazonVPCCNI插件可能无法满足所有用例的要求。 Amazon EKS 维护一个合作伙伴网络,提供具有商业支持选项的替代CNI解决方案。有关更多信息,请参阅备选的兼容 CNI 插件

当您创建了一个 Amazon EKS 节点,它有一个网络接口。全部 Amazon EC2 实例类型支持多个网络接口。创建实例时附加到实例的网络接口称为 主网络接口. 附加至实例的任何附加网络接口称为 辅助网络接口. 每个网络接口都可以分配给多个专用IP地址。一个专用IP地址是 主要IP地址,而分配给网络接口的所有其他地址 次要IP地址. 有关网络接口的详细信息,请参阅 弹性网络接口Amazon EC2 用户指南(适用于 Linux 实例). 有关每个网络接口支持多少个网络接口和专用IP地址的更多信息,请参阅 每个实例类型每个网络接口的IP地址Amazon EC2 用户指南(适用于 Linux 实例). 例如, m5.large 实例类型为每个网络接口支持三个网络接口和十个专用IP地址。

的 Amazon VPC 用于Kubernetes的容器网络接口(CNI)插件通过每个节点部署。插件由两个主要组件组成:

  • L-IPAM守护程序 – 负责创建网络接口,并将网络接口连接到 Amazon EC2 实例,将次要IP地址分配给网络接口,并在每个节点上维护一个温暖的IP地址池,以便在计划时分配给Kubernetespod。当节点上运行的Pod数量超过可分配给单个网络接口的地址数量时,插件将开始分配新的网络接口,只要实例的最大网络接口数量未附加。存在一些配置变量,允许您在插件创建新的网络接口时更改的默认值。有关更多信息,请参阅 WARM_ENI_TARGET, WARM_IP_TARGETMINIMUM_IP_TARGET GitHub上。

    您部署的每个Pod都从连接到实例的其中一个网络接口中分配一个次要专用IP地址。以前,有人提到过 m5.large 实例支持三个网络接口和每个网络接口的十个专用IP地址。即使 m5.large 实例支持30个专用IP地址,您无法将30个pod部署到该节点。要确定您可部署到节点的pod数量,请使用以下公式:

    (Number of network interfaces for the instance type × (the number of IP addressess per network interface - 1)) + 2

    使用此公式, m5.large 实例类型最多可支持29个pod。有关每种实例类型支持的最大pod数量的列表,请参阅 另的清-國清出雖-命場命迄。功迄 GitHub上。系统pod计数到最大pod。例如,CNI插件和 kube-proxy pod在群集中的每个节点上运行,因此您只能将27个额外的pod部署到 m5.large 实例,而不是29。此外,CoreDNS在群集中的某些节点上运行,这会使在其上运行的节点的最大pod减少另一个pod。

    默认情况下,部署到节点的所有pod都分配有相同的安全组,并且从CIDR块中分配专用IP地址,该IP地址分配给实例的网络接口之一连接到的子网。您可以通过配置来分配主网络接口所连接到的子网以外的CIDR块的IP地址 CNI 自定义网络. 您还可以使用CNI自定义网络为节点上相同安全组的所有pod分配。分配给所有pod的安全组可以不同于分配给主网络接口的安全组。您可以将唯一的安全组分配给已部署到多个 Amazon EC2 使用pod安全组的实例类型。有关更多信息,请参阅pod的安全组

  • CNI插件 – 负责对主机网络进行布线(例如,配置网络接口和虚拟以太网对),并向pod命名空间添加正确的网络接口。