简介
组件介绍
tke-eni-ip-webhook 是腾讯云容器服务 TKE 在 VPC-CNI 网络模式下用于 Pod 创建的钩子组件。该组件在每次 Pod 创建时,作为钩子接收 kube-apiserver 的请求,并为新建的 Pod 添加相应的网络资源请求(requests),从而实现用户无感知的网络资源调度。部署在集群内的 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