반응형
기본적으로 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
...
위와 같은 이유로 마스터 노드에 파드가 구동되지 않게 되며, 이러한 경우에도 파드를 마스터 노드에 구동하기 위하여
- 파드가 노드의 taint를 무시할 수 있게 toleration 을 부여
- 파드가 마스터 노드에 스케쥴 될 수 있게 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 명령어를 사용하여 생성하면 마스터 노드에 구동되는 것을 확인할 수 있다.
'소프트웨어 아키텍처 > Kubernetes' 카테고리의 다른 글
[Kubernetes] 1-04. Readiness probe 사용해보기 (0) | 2022.05.02 |
---|---|
[Kubernetes] 1-03. StatefuleSet 스케일 다운 해보기 (0) | 2022.05.02 |
[Kubernetes] 1-01. kubernetes context 사용하기 (0) | 2022.05.02 |
Troubleshooting - Calico 삭제 후 팟 생성 시 ContainerCreating 상태로 pending 되는 현상 (0) | 2021.09.15 |
kubernetes : overview (1) | 2021.08.26 |
댓글