节点上的 Pod 限制 - AWS EKS

And*_*ija 14 amazon-web-services kubernetes amazon-eks

在 AWS EKS 上,我将具有 17 个副本(请求和限制 64Mi 内存)的部署添加到具有 2 个节点类型 t3.small 的小型集群。

用 kube-system pod 计算,每个节点运行的 pod 总数为 11,1 个待处理,即:

节点 #1:
aws-node-1
coredns-5-1as3
coredns-5-2das
kube-proxy-1
+7 个应用程序 pod 副本

节点 #2:
aws-node-1
kube-proxy-1
+9 个应用程序 pod 副本

我理解t3.small 是一个非常小的实例。我只是想了解是什么限制了我。内存请求不是它,我的可用资源远远低于可用资源。

我发现每个节点都有 IP 地址限制,具体取决于实例类型。 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-eni.html?shortFooter=true#AvailableIpPerENI
我没有找到任何其他文档明确说明这会限制 pod 创建,但我假设它确实如此。根据该表,t3.small 可以有 12 个 IPv4 地址。如果是这种情况并且这是限制因素,因为我有 11 个 pod,1 个缺少的 IPv4 地址到哪里去了?

wei*_*eld 36

本文档中实际列出了每个 EKS 实例的实际最大 Pod 数。

对于 t3.small 实例,每个实例是 11 个 Pod。也就是说,您的集群中最多可以有 22 个 Pod。其中 6 个 Pod 是系统 Pod,因此最多保留 16 个工作负载 Pod。

您正在尝试运行 17 个工作负载 Pod,所以它太多了。我猜这些 Pod 中有 16 个已安排好,还有 1 个待处理。


定义每个实例的最大 Pod 数的公式如下:

N * (M-1) + 2
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • N 是实例类型的弹性网络接口 (ENI) 的数量
  • M为单个网卡的IP地址数

所以,对于 t3.small,这个计算是3 * (4-1) + 2 = 11

NM在每个实例类型此文件

  • 可以增加吗? (4认同)
  • 为每个节点运行“kubectl描述节点<node-internal-dns-name>”将在“容量/pods”部分显示该节点的最大pod数。 (3认同)

小智 28

对于任何在谷歌搜索时遇到这个问题的人。请注意,截至 2021 年 8 月,现在可以使用最新的 AWS CNI 插件增加节点上的最大 Pod 数量,如此处所述

使用那里解释的基本配置,t3.medium 节点从最多 17 个 pod 增加到最多 110 个,这对于我想要做的事情来说已经足够了。


小智 9

这就是为什么我们停止使用EKSKOPS 部署的自管理集群。\n在我看来,这EKS会导致aws-cni太多的限制,它实际上违背了使用 Kubernetes 的主要好处之一,即有效利用可用资源。\nEKS系统限制从CPU / memory使用进入网络 IP 限制领域。

\n

Kubernetes 旨在提供高密度、高效管理资源。版本情况并非如此EKS\xe2\x80\x99s,因为节点可能处于空闲状态,几乎所有内存都可用,但集群将无法在利用率较低的节点上调度 pod,如果pods > (N * (M-1) + 2).

\n

人们可能会尝试使用另一种,CNI例如Calico,但是由于禁止访问主节点,因此仅限于工作节点。\xe2\x80\xa8这会导致集群有两个网络,并且在尝试访问K8s API或使用准入控制器时会出现问题。

\n

它确实取决于工作流程要求,对我们来说,高 Pod 密度、资源的高效利用以及对集群的完全控制至关重要。

\n