污点和容忍度
1 | 1. 之前我们可以通过节点选择器,来实现Pod调度到哪一台Node节点上 |
显示 节点 的污点信息
1 | # 默认情况下 master主节点要设置污点 |
了解污点效果
1 | ... |
在 Node 节点上添加自定义污点
1 | 1. 常用在一套K8S环境中,区分生产环境和测试环境 |
1 | # 测试部署一套没有容忍度的Pod |
在 Pod 上添加污点容忍度
1 | # 导出 原deployment |
1 | # 部署并查看 |
污点和污点容忍度的使用场景
1 | 1. 区分生产环境和测试环境 |
测试二进制安装 K8S 重启后污点是否使用
1 | 1. 由于二进制安装的Node都默认没有污点,测试设置污点后重启Node之前的组件Pod是否可以重建 |
删除 Node上的污点信息
1 | [root@k8s-master1 Taints]# kubectl taint nodes k8s-node1 node-type=test:NoSchedule- |
通过 节点亲和性 调度Pod到指定节点
1 | 1. 节点亲和性(node affinity) 对比 污点是更新的一种技术, 他用来告诉K8S将Pod只调度到某几个节点上 |
检查默认的节点标签
1 | 1. 节点亲和性 也是根据Node节点的标签进行选择 ,和节点选择器一样 |
指定强制性 节点亲和性 规则
1 |
|
节点亲和性 属性定义
1 | 1. affinity / nodeAffinity |
调度Pod时优先考虑哪些节点
1 | 1. 大型容器平台不同机房或者地域 |
给 node 节点加上标签
1 | Region : 区域 |
1 | [root@k8s-master1 Taints]# kubectl label node k8s-node1 Region=zone1 |
指定优先级 节点亲和性 规则
1 | [root@k8s-master1 Taints]# vim preferred-deployment.yaml |
1 | 1. 节点优先调度到 zone1 80权重 |
使用 Pod亲和性 和 非亲和性 对Pod进行协同部署
1 | 1. 上面的操作都是在pod和node之间的亲和性来分配Pod到指定的节点上 |
使用Pod亲和性 将多个Pod部署在同一个节点上
1 | # 先部署后端Pod |
1 | [root@k8s-master1 Taints]# vim frontend-podaffinity-host.yaml |
1 | # 查看 全部都被调度到同一个节点 |
将Pod部署在同一个区域或者同一个机柜
1 |
|
Pod亲和性优先级
1 | 1. 告诉K8S 优先调度到相同节点上 |
利用 Pod 的非亲和性 分开调度Pod
1 | 1. 如果希望Pod之间远离彼此, 这种特性叫做非亲和性 |
1 | [root@k8s-master1 Taints]# vim podAntiAffinity.yaml |
1 | [root@k8s-master1 Taints]# kubectl get pods -o wide |