调度 Pod 至超级节点

最近更新时间:2023-10-17 14:25:52

我的收藏
本篇文章主要介绍在容器服务 TKE 集群中,如何通过自动调度或手动调度 Pod 至超级节点。

自动调度

若集群配置了包年包月超级节点,在 Pod 符合超级节点调度规则的前提下,包年包月的超级节点与包年包月的常规节点平权调度。
若集群配置了按量计费超级节点,则当业务高峰且已有包年包月节点资源不足时,会自动调度 Pod 至超级节点,无需购买服务器;业务恢复平稳,自动释放在超级节点中的 Pod 资源,也无需再进行退还机器操作。
如果集群同时开启了 Cluster Autoscaler 和按量计费超级节点,则会尽量优先将 Pod 调度到按量计费的超级节点上,而非触发集群节点扩容。如果受调度限制影响,Pod 无法调度到超级节点上,则会依然正常触发集群节点扩容。而服务器节点资源充足时,会优先缩容按量计费超级节点上的 Pod。

手动调度

支持用户手动将 Pod 调度至超级节点,默认按量计费的超级节点会自动添加 Taints 以降低调度优先级,如需手动调度 Pod 到超级节点或指定超级节点调度,通常需要为 Pod 添加对应的 Tolerations。但并非所有的 Pod 均可以调度到超级节点上,详情请参见 超级节点调度说明。为方便使用,您可以在 Pod Spec 中指定 nodeSelecter。示例如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
nodeSelector:
node.kubernetes.io/instance-type: eklet
containers:
- name: my-container
image: nginx
ports:
- containerPort: 80

容器服务 TKE 的管控组件会判断该 Pod 是否可以调度到超级节点,若不支持则不会调度到超级节点。
包年包月的超级节点当前仅支持调度指定规格和指定 CPU 内存比的 Pod,若不符合规则,则调度不会成功。调度至按量计费的超级节点时没有规格和 CPU 内存比的约束,只要按量节点所在的可用区有对应资源则可调度成功。