Kubernetes 工作负载分离与 Pod 放置策略
1. 工作负载分离
在 Kubernetes 中,污点(Taints)、容忍度(Tolerations)和节点选择器(Node Selectors)除了基于节点特性进行选择外,还可用于工作负载分离。
1.1 工作负载分离的应用场景
- 批量工作负载 :例如在一个集群中运行大量批量工作负载,包含协调器部署和工作负载 Pod。将这两种角色的 Pod 分开,可避免工作负载 Pod 节点的自动伸缩影响协调器 Pod。
- 嘈杂邻居问题 :两个 Pod 可能在节点上竞争资源,分开部署可避免这种竞争。
- 使用新节点 :为工作负载添加新的工作负载分离标签和容忍度,可迫使平台为其创建新节点,减少近期升级带来的干扰。
1.2 实现工作负载分离的方法
要实现工作负载分离,可结合之前的技术和自定义节点标签。节点添加标签和污点,工作负载添加对该标签的容忍度和选择器,这样工作负载将被调度到一组节点上。
以下是一个实现工作负载分离的 Deployment 示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: timeserver1
spec:
replicas: 5
selector:
matchLabels:
pod: timeserver