Master node에 Pod 배포하기

2025. 2. 21. 22:38k8s

label과 taint를 확인해야 함

# hello world pod 생성
kubectl create deployment hello-node --image=registry.k8s.io/e2e-test-images/agnhost:2.39 -- /agnhost netexec --http-port=8080
kubectl get pod

# pod가 pending 상태임
NAME                         READY   STATUS    RESTARTS   AGE
hello-node-ccf4b9788-lm949   0/1     Pending   0          17m

# 확인
kubectl describe pod/hello-node-ccf4b9788-lm949

# 배포할 node가 없어서 스케쥴링이 안됨
Events:
  Type     Reason            Age                  From               Message
  ----     ------            ----                 ----               -------
  Warning  FailedScheduling  3m34s (x4 over 18m)  default-scheduler  0/1 nodes are available: 1 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling..

kubectl get node
kubectl describe node/{node}

# 해당 node의 label과 관련해서 NoSchedule이라고 설정되어 있음
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    kubernetes.io/arch=amd64
                    kubernetes.io/hostname=barisein-thinkpad-x220
                    kubernetes.io/os=linux
                    node-role.kubernetes.io/control-plane=
                    node.kubernetes.io/exclude-from-external-load-balancers=
Taints:             node-role.kubernetes.io/control-plane:NoSchedule

                    
                    


# node에 배포될 수 있도록 설정: 마지막에 '-'을 넣으면 제거됨
kubectl taint node {node} node-role.kubernetes.io/control-plane:NoSchedule-

# 확인
kubectl get pod
NAME                         READY   STATUS    RESTARTS   AGE
hello-node-ccf4b9788-lm949   1/1     Running   0          25m