一、拓扑域约束实践¶
1.1 应用均匀分布在不同的机房¶
1.查看节点污点情况
[root@k8s-master01 ~]# kubectl describe node | grep Taint
Taints: <none>
Taints: <none>
Taints: <none>
Taints: <none>
2.定义一个名为topologySC.yaml 的yaml文件
[root@k8s-master01 Affinity]# vim topologySC.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: my-app
name: my-app
spec:
replicas: 9
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
topologySpreadConstraints:
- maxSkew: 1
whenUnsatisfiable: DoNotSchedule
topologyKey: kubernetes.io/hostname
labelSelector:
matchLabels:
app: my-app
containers:
- image: registry.cn-hangzhou.aliyuncs.com/zq-demo/nginx:1.14.2
imagePullPolicy: IfNotPresent
name: my-app
3.开始部署
[root@k8s-master01 ~]# kaf topologySC.yaml
4.查看pod状态,观察到每个节点均匀分配3个pod
[root@k8s-master01 ~]# kgp -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-app-5d6bfb5d84-2hhd5 1/1 Running 0 80s 192.168.32.141 k8s-master01 <none> <none>
my-app-5d6bfb5d84-7jtmk 1/1 Running 0 80s 192.168.32.140 k8s-master01 <none> <none>
my-app-5d6bfb5d84-g72rf 1/1 Running 0 80s 192.168.85.214 k8s-node01 <none> <none>
my-app-5d6bfb5d84-sds6w 1/1 Running 0 80s 192.168.32.142 k8s-master01 <none> <none>
my-app-5d6bfb5d84-ssqrz 1/1 Running 0 80s 192.168.58.223 k8s-node02 <none> <none>
my-app-5d6bfb5d84-vkzpk 1/1 Running 0 80s 192.168.85.212 k8s-node01 <none> <none>
my-app-5d6bfb5d84-vqsd9 1/1 Running 0 80s 192.168.58.224 k8s-node02 <none> <none>
my-app-5d6bfb5d84-xcg96 1/1 Running 0 80s 192.168.85.217 k8s-node01 <none> <none>
my-app-5d6bfb5d84-xjj4z 1/1 Running 0 80s 192.168.58.229 k8s-node02 <none> <none>
5.重启应用,再次进行验证
# 重启应用
[root@k8s-master01 ~]# k rollout restart deploy my-app
# 观察到应用重启后仍然每个节点均匀分配3个pod
[root@k8s-master01 ~]# kgp -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
my-app-657f4dc4c9-6f9qk 1/1 Running 0 4s 192.168.58.230 k8s-node02 <none> <none>
my-app-657f4dc4c9-d6ztv 1/1 Running 0 4s 192.168.32.145 k8s-master01 <none> <none>
my-app-657f4dc4c9-gh7xz 1/1 Running 0 3s 192.168.85.216 k8s-node01 <none> <none>
my-app-657f4dc4c9-m6tkl 1/1 Running 0 3s 192.168.85.210 k8s-node01 <none> <none>
my-app-657f4dc4c9-nwwzf 1/1 Running 0 4s 192.168.32.144 k8s-master01 <none> <none>
my-app-657f4dc4c9-wqws6 1/1 Running 0 3s 192.168.58.227 k8s-node02 <none> <none>
my-app-657f4dc4c9-xjbjg 1/1 Running 0 4s 192.168.85.213 k8s-node01 <none> <none>
my-app-657f4dc4c9-zrz79 1/1 Running 0 3s 192.168.58.225 k8s-node02 <none> <none>
my-app-657f4dc4c9-zwqk8 1/1 Running 0 4s 192.168.32.143 k8s-master01 <none> <none>
6.环境复原
[root@k8s-master01 ~]# k delete -f topologySC.yaml