Kubernetes nodeSelector
[Kubernetes Scheduler 관련 글 목록]
Kubernetes Scheduler (Pod를 원하는 Worker Node에 배포하기)
Kubernetes Scheduler (nodeSelector)
Kubernetes Scheduler (Taint & Toleration)
Kubernetes Scheduler (Affinity)
Kube-Scheduler의 다양한 기능을 사용해서 관리자가 직접
특정 Worker Node에 Pod 가 생성되도록 설정할 수 도 있음
대표적으로
nodeSelector
Taint & Toleration
Affinity
3가지 방법이 있는데
이 글에서는 nodeSelector에 대해서 알아보겠음.
[환경]
Master Node server
OS = CentOS 7
리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64
docker version : 1.13.1
api verison : 1.26
Worker Node server 1
OS = CentOS 7
리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64
docker version : 1.13.1
api verison : 1.26
Worker Node server 2
OS = CentOS 7
리눅스 커널 버전 : Linux 3.10.0-1062.el7.x86_64
docker version : 1.13.1
api verison : 1.26
Kubernetes version
1.18
nodeSelector란?
nodeSelector로 Key/Value Label 지정한 후
해당 Label을 가지고 있는 Worker Node에 Pod를 생성하는 방법으로
Pod 가 생성될 Worker Node 를 지정하는 방법 중 가장 간단한 방법.
nodeSelector 실습
1. Worker Node 의 Label 확인
Kubernetes Cluster를 구성하고 있는 모든 Node에 미리 추가되어있는
Default Label 을 확인.
[명령어]
kubectl get nodes --show-labels
[확인 결과]
각 Node 의 CPU 종류, OS 종류, host name 이 Label로 설정되어있고
MasterNode는 추가로
"node-role.kubernetes.io/master="
Labels이 있어서 Worker Node 와 구분되어 있음.
Node Selector의 경우에 이러한 기존의 Labels를 지정해서 사용할 수 있지만
리서치에서는 Labels 을 직접 추가해서
추가한 Label을 인식해서 Pod를 생성해보겠음.
2. Worker Node 의 Label 추가
Worker Node one 에
testkey / iksoonvalue
Label 를 추가.
[명령어]
kubectl label nodes [Node name] [key]=[value]
예) kubectl label nodes kube.workerone.node testkey=iksoonvalue
3. nodeSelector를 사용해서 특정 Worker Node에 Pod 배포
[예제 deployment.yaml ]
apiVersion: apps/v1 kind: Deployment metadata: name: iksoon-deployment-test labels: app: iksoon-test spec: replicas: 2 selector: matchLabels: app: iksoon-pod template: metadata: labels: app: iksoon-pod spec: containers: - name: iksoon-tomcat image: peksoon/iksoon_tomcat:1.0.6 ports: - containerPort: 8080 nodeSelector: # nodeSelector를 사용하고 key/value를 명시함 testkey: iksoonvalue |
[결과]
deployment를 생성하면
nodeSelector 에 명시된 Worker Node one에
Pod가 생성되어있는것을 확인할 수 있음
4. Worker Node 의 Label 삭제
[명령어]
kubectl label nodes [Node name] [key]-
예) kubectl label nodes kube.workerone.node testkey-
[결과]
worker node one 에
기존에 있던 생성했던
testkey=iksoonvalue
Label 이 없는것을 확인할 수 있음
참고
https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/
https://waspro.tistory.com/582
'Kubernetes > Scheduler' 카테고리의 다른 글
kubernetes PriorityClass ( Priority & Preemption ) (0) | 2020.10.11 |
---|---|
Kubernetes Scheduler (Affinity) (0) | 2020.10.11 |
Kubernetes Scheduler (Taint & Toleration) (0) | 2020.10.11 |
Kubernetes Scheduler (Pod를 원하는 Worker Node에 배포하기) (0) | 2020.10.11 |