[Kubernetes] Control-Plane Node에 Pod 띄우기

Control-Plane Node에 Pod를 올릴 경우 #

deployment yaml 생성 #

 1apiVersion: apps/v1
 2kind: Deployment
 3metadata:
 4  name: nginx-deployment
 5  labels:
 6    app: nginx
 7spec:
 8  replicas: 1
 9  selector:
10    matchLabels:
11      app: nginx
12  template:
13    metadata:
14      labels:
15        app: nginx
16    spec:
17      containers:
18      - name: nginx
19        image: nginx:latest
20        ports:
21        - containerPort: 80

Apply #

1kubectl apply -f nginx-deployment.yaml
2
3deployment.apps/nginx-deployment created

Pod 상태 확인 (Pending 상태로 지속 됨) #

1kubectl get pods
2
3NAME                               READY   STATUS    RESTARTS   AGE
4nginx-deployment-6dd86d77d-4rkhf   0/1     Pending   0          20m

Pod 상태 자세히 확인 #

 1kubectl describe pod nginx-deployment-6dd86d77d-4rkhf
 2
 3Name:               nginx-deployment-6dd86d77d-4rkhf
 4Namespace:          default
 5
 6...✂...
 7
 8Events:
 9  Type     Reason            Age                 From               Message                                                                    
10  ----     ------            ----                ----               -------                                                                    
11  Warning  FailedScheduling  43s (x17 over 22m)  default-scheduler  0/3 nodes are available: 3 node(s) had taints that the pod didn't tolerate.

위처럼 Pending 상태로 안올라오는 이유는 Contrl-Plane Node에 Pod를 못 올리도록 설정되어 있기 때문 #

Contrl-Plane Node 확인 (아래 master는 Contrl-Plane Node Name) #

1kubectl describe node master | grep Taints
2
3Taints:             node-role.kubernetes.io/master:NoSchedule

Pod를 올리고 싶을 경우 #

Taint 설정 해제 #

1kubectl taint nodes –all node-role.kubernetes.io/master-
2
3node/master untainted
4Pod 상태 재조회 (자동으로 restart)
5kubectl get pods -o wide
6
7NAME                               READY   STATUS    RESTARTS   AGE   IP           NODE     NOMINATED NODE   READINESS GATES
8nginx-deployment-6dd86d77d-4rkhf   1/1     Running   0          35m   10.244.0.7   master   <none>           <none>

다시 Pod를 못 올리도록 설정하고 싶은 경우 #

Taint 설정 #

1kubectl taint nodes master node-role.kubernetes.io=master:NoSchedule
2
3node/master tainted

확인 #

1kubectl describe node master | grep Taints
2
3Taints:             node-role.kubernetes.io=master:NoSchedule
Advertisement