CKA SimB - Q12 Controlplane 노드에 Pod 스케줄링

1 개요[ | ]

Control-plane 노드 전용 Pod 스케줄링
  • 일반적으로 control-plane 노드는 워커 노드 역할을 하지 않도록 설정되어 있으나, 특정 상황에서는 control-plane 노드에만 Pod을 스케줄링해야 할 수 있음
  • 이 문서에서는 taint를 우회하거나 toleration을 활용하여 control-plane 노드 전용으로 Pod을 실행하는 방법을 설명함

2 control-plane 노드의 taint 확인[ | ]

  • control-plane 노드는 보통 다음과 같은 taint를 가짐
# k get node -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.taints}{"\n"}{end}'
cka-master   [{"effect":"NoSchedule","key":"node-role.kubernetes.io/control-plane"}]

3 toleration을 이용한 Pod 생성[ | ]

  • 위 taint를 허용하기 위한 toleration을 명시한 Pod 생성 예시
apiVersion: v1
kind: Pod
metadata:
  name: control-only-pod
spec:
  containers:
  - name: nginx
    image: nginx:1-alpine
  tolerations:
  - key: "node-role.kubernetes.io/control-plane"
    operator: "Exists"
    effect: "NoSchedule"

4 노드 셀렉터를 추가해 control-plane에만 스케줄링[ | ]

  • control-plane 노드에만 배치되도록 nodeSelector 추가
  nodeSelector:
    node-role.kubernetes.io/control-plane: ""
  • 최종 Pod 정의 예시
apiVersion: v1
kind: Pod
metadata:
  name: control-only-pod
spec:
  containers:
  - name: nginx
    image: nginx:1-alpine
  tolerations:
  - key: "node-role.kubernetes.io/control-plane"
    operator: "Exists"
    effect: "NoSchedule"
  nodeSelector:
    node-role.kubernetes.io/control-plane: ""

5 결과 확인[ | ]

  • Pod이 control-plane 노드에서 실행 중인지 확인
# k get pod -o wide
NAME                READY   STATUS    NODE
control-only-pod    1/1     Running   cka-master

6 요약[ | ]

  • control-plane 노드는 기본적으로 Pod 스케줄링이 제한됨 (taint)
  • Pod에서 tolerationsnodeSelector를 설정하면 control-plane 노드 전용 배치 가능
  • 운영 환경에서는 control-plane 노드에 워크로드를 배치하는 것을 권장하지 않음 (학습 목적 제외)
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}