关于 Kubernetes ENI 分配,我有一些疑问

0

【以下的问题经过翻译处理】 通过 https://github.com/aws/amazon-vpc-cni-k8s,我找到了基于实例类型的ENI分配方式。它以m4.4xlarge作为示例进行说明。

例如,m4.4xlarge节点最多可以拥有8个ENI,并且每个ENI最多可以有30个IP地址。(https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html)

如果当前运行的Pod数量在0到29之间,则ipamD将分配1个额外eni,并且热备池大小为2 eni * (30-1) = 58。

如果当前运行的Pod数量在30到58之间,则ipamD将分配2个额外eni,并且热备池大小为3 eni * (30-1) = 87。

我在下面进一步计算了它。如果我错了,请纠正我。

** Q1) ** m4.4xlarge将拥有最大的Pods为203,而热备池将拥有232。 这是正确的吗?

** Q2) ** 如果Pods超过203,会发生什么?会启动新的实例(m4.4xlarge)吗?

** Q3) ** 为什么这个计算从“0(零)” Pod开始?请解释。

Pods热备池计算公式
0 - 29582eni * (30 - 1)
30 - 58873eni * (30 - 1)
...
146 - 1742037eni * (30 - 1)
175 - 2032328eni * (30 - 1)

谢谢。

profile picture
专家
已提问 8 个月前38 查看次数
1 回答
0

【以下的回答经过翻译处理】 现在可以更好地控制CNI抓取多少个ENI了。

另一方面,Kubernetes本身对每个节点支持最多100个pod。使得一些具有大量可用地址的较大实例不太吸引人。虽然每个节点的pod限制是可配置的,但我不会在没有非常好的理由的情况下增加它。这意味着最佳实例大小在2xlarge-4xlarge之间,至少从地址分配的角度来看。较大的尺寸在性能方面可能更好,但您将不会获得更多有用的地址。

https://kubernetes.io/docs/setup/cluster-large/ 每个节点不超过100个Pod

Q1)m4.4xlarge节点最多可以拥有8个ENI,每个ENI最多可以拥有30个IP地址。https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html 为此,最大地址为240个,供pod使用。暖池由“WARM_ENI_TARGET”控制,其默认值为1。这将意味着30个地址在热备池中(可用于ENI的数量)。但是,在最大地址的情况下,将没有剩余的热备池。热备池目标可以通过环境变量进行配置,并且算法最近已进行了调整。如果有疑虑,我会测试一下以验证实际数字。

Q2)不会自动执行任何操作。您可能会耗尽 K8 集群中的地址。您可以考虑 "集群自动扩展",它会在地址耗尽时启动新的主机(或者更准确地说是在 Pod 放置失败时)。

Q3)每个ENI需要一个主要地址,并且用于将流量路由到工作节点外部。这就是为什么你会减少一个地址的原因。

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则