kubernetes-SchedulingDisabledのノード上でDaemonSetのpodをスケジューリングすることを禁止する
2912 ワード
マスターノードを設定しました:SchedulingDisabled:
しかし、私が配置したDaemonSetは、SchedulingDisabledを設定したノード(10.2.2.120)にpodがスケジューリングされています.
SchedulingDisabledのノードにpodがスケジューリングされないようにするには、DaemonSetにnodeSelectorを設定して、指定したラベルのノードでpoを実行させることができます.
1.ノードにラベルを付ける:
2.次にDaemonSetでノード選択を追加します:nodeSelector:
3.選択したnodeで正しいスケジューリングが実行されていることを確認します.
他にも方法があります.参考:
https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#taints-and-tolerations
kubernetes-K 8 SスケジューリングのTaints and Tolerations
その他の参考:
https://stackoverflow.com/questions/40493395/kubernetes-1-4-3-why-daemonset-is-scheduled-on-master
https://kubernetes.io/zh/docs/concepts/workloads/controllers/daemonset/
$ kubectl get node
NAME STATUS ROLES AGE VERSION
10.2.2.120 Ready,SchedulingDisabled master 239d v1.13.3
10.2.2.121 Ready metallb-speaker,node 239d v1.13.3
10.2.2.122 Ready metallb-speaker,node 239d v1.13.3
10.2.2.123 Ready node 105d v1.13.3
しかし、私が配置したDaemonSetは、SchedulingDisabledを設定したノード(10.2.2.120)にpodがスケジューリングされています.
$ kubectl get po -l app=nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web-7l4s6 1/1 Running 0 35s 172.20.0.100 10.2.2.120
web-clvgl 1/1 Running 0 35s 172.20.3.122 10.2.2.123
web-j7plz 1/1 Running 0 35s 172.20.1.182 10.2.2.121
web-zgbnd 1/1 Running 0 35s 172.20.2.139 10.2.2.122
SchedulingDisabledのノードにpodがスケジューリングされないようにするには、DaemonSetにnodeSelectorを設定して、指定したラベルのノードでpoを実行させることができます.
1.ノードにラベルを付ける:
kubectl label nodes 10.2.2.121 key=val
kubectl label nodes 10.2.2.122 key=val
kubectl label nodes 10.2.2.123 key=val
2.次にDaemonSetでノード選択を追加します:nodeSelector:
$ cat daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: web
namespace: default
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
key: val
containers:
- name: nginx
image: nginx:latest
3.選択したnodeで正しいスケジューリングが実行されていることを確認します.
$ kubectl get po -l app=nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
web-6rnk8 1/1 Running 0 34s 172.20.3.123 10.2.2.123
web-9jdpc 1/1 Running 0 22s 172.20.2.140 10.2.2.122
web-l5gvj 1/1 Running 0 56s 172.20.1.183 10.2.2.121
他にも方法があります.参考:
https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/#taints-and-tolerations
kubernetes-K 8 SスケジューリングのTaints and Tolerations
その他の参考:
https://stackoverflow.com/questions/40493395/kubernetes-1-4-3-why-daemonset-is-scheduled-on-master
https://kubernetes.io/zh/docs/concepts/workloads/controllers/daemonset/