본문 바로가기
  • 오늘처럼
소프트웨어 아키텍처/Kubernetes

[Kubernetes] 1-02. 마스터 노드에 파드 스케쥴링 해보기

by bluefriday 2022. 5. 2.
반응형

기본적으로 kubernetes 클러스터를 구축하면 마스터 노드에는 파드가 스케쥴링되지 않게 되어 있다. 이는 설치 과정에서 마스터 노드에 taint 를 부여하기(master nodes usually have a taint defined) 때문이다.

이번에는 노드에 레이블을 추가하지 않고 특정 파드를 마스터 노드에 스케쥴링 되게 해보자. 이를 위해서 먼저 현재 마스터 노드의 레이블과 taint 를 확인한다.

### 마스터 노드 찾기
kubectl get node


### 마스터 노드의 taint 찾기
kubectl describe node <마스터노드명> | grep Taint


### 마스터 노드의 레이블 확인
kubectl describe node <마스터노드명> | grep Labels -A 10
or
kubectl get node <마스터노드명> --show-labels

먼저 마스터 노드의 taint를 확인할 경우 아래와 유사하다

Taints:             node-role.kubernetes.io/master:NoSchedule
...

 

위와 같은 이유로 마스터 노드에 파드가 구동되지 않게 되며, 이러한 경우에도 파드를 마스터 노드에 구동하기 위하여

  1. 파드가 노드의 taint를 무시할 수 있게 toleration 을 부여
  2. 파드가 마스터 노드에 스케쥴 될 수 있게 node selector 부여

위 2가지를 고려하여 yaml 파일을 생성한다.

apiVersion: v1
kind: Pod
metadata:
  labels:
    run: pod1
  name: pod1
spec:
  containers:
  - image: hello:v0.2
    name: test-container
  dnsPolicy: ClusterFirst
  restartPolicy: Always
  tolerations:
  - effect: NoSchedule
    key: node-role.kubernetes.io/master
  nodeSelector:
    node-role.kubernetes.io/master: ""

위 파드를 kubectl 명령어를 사용하여 생성하면 마스터 노드에 구동되는 것을 확인할 수 있다. 

 

댓글