个人觉得k8s 亲和、反亲和、污点、容忍其实没有明确的界限,主要还是看如何组合运用各种策略,来实现亲和或者反亲和。通常来说,污点就是用来实现反亲和的。
亲和、反亲和
亲和性的原理其实很简单,主要利用label标签结合nodeSelector选择器来实现:
- 首先,给节点打上label标签
#kubectl get nodes --show-labels |grep gray
qc-app-16-161 Ready gray 205d v1.18.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=qc-app-16-161,kubernetes.io/os=linux,node-role.kubernetes.io/gray=gray
qc-app-16-244 Ready gray 205d v1.18.0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=qc-app-16-244,kubernetes.io/os=linux,node-role.kubernetes.io/gray=gray
再通过nodeSelector匹配到打了相应label标签的节点
.........
nodeSelector:
node-role.kubernetes.io/gray: gray
..........
部署之后看下pod调度情况,很明显pod被调度到了匹配到label标签的节点上了
kubectl get pods -n compan