一、部署在集群内的 Kubernetes 对象
以下对象仅部署在 TKE 独立集群(Master&Etcd 由用户自维护),而 TKE 托管集群(Master&Etcd 由平台管理)中以下对象也由平台管理,不会部署到用户集群内。
| Kubernetes 对象名称 | 类型 | 资源量 | Namespaces |
| add-pod-eni-ip-limit-webhook | ServiceAccount | – | tke-eni-ip-webhook |
| add-pod-eni-ip-limit-webhook | ClusterRole | – | – |
| add-pod-eni-ip-limit-webhook | ClusterRoleBinding | – | – |
| add-pod-eni-ip-limit-webhook | Service | – | tke-eni-ip-webhook |
| add-pod-eni-ip-limit-webhook | Deployment | 0.01核 CPU,30MB 内存 | tke-eni-ip-webhook |
二、使用场景和限制
适用于 VPC-CNI 网络模式下的 TKE 标准集群。
三、背景
在 TKE VPC-CNI 网络模式下,每个节点的网络资源有配额限制(详情请参见 VPC-CNI Pod 数量限制)。为实现网络资源调度,使 Pod 调度之后可分配到 IP 等网络资源,TKE VPC-CNI 网络模式下会为每个节点添加扩展网络资源(如 tke.cloud.tencent.com/eni-ip、tke.cloud.tencent.com/eip),并使 Pod 配置对应资源请求。
由于手动为每个 Pod 配置网络资源较为繁琐,tke-eni-ip-webhook 组件能自动根据当前集群网络模式与 Pod 所需网络资源,为 Pod 设置合适的网络资源请求,并将其添加到第一个容器(container)的 resources.requests 和 resources.limits 字段中。
四、工作原理
tke-eni-ip-webhook 组件实现了 kubernetes MutatingAdmissionWebhook。该组件启动后会自行创建名为 add-pod-eni-ip-limit-webhook 的 MutatingWebhookConfiguration,这个配置挂钩了 Pod 创建,每次 Pod 创建时该组件会接收 kube-apiserver 的挂钩请求,然后根据集群的网络模式和 Pod 网络配置为新建的 Pod 添加对应网络资源的请求。如共享网卡模式的 Pod 会给第一个容器添加以下配置:
resources: requests: tke.cloud.tencent.com/eni-ip: "1" limits: tke.cloud.tencent.com/eni-ip: "1"
最新版本目前支持自动添加的网络资源:
·共享网卡:tke.cloud.tencent.com/eni-ip
·独立网卡/独占网卡:tke.cloud.tencent.com/direct-eni
·中继子网卡:tke.cloud.tencent.com/sub-eni
·弹性公网IP:tke.cloud.tencent.com/eip