반응형
Node Label
- Worker Node의 특성을 Label로 설정
kubectl label nodes <노드이름> <레이블 키>=<레이블 값>
- 노드를 선택해서 파드를 배치할 수 있다.
Node Label 관리 명령어 실습
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master.example.com Ready control-plane 23d v1.25.4
node1.example.com Ready <none> 23d v1.25.4
node2.example.com Ready <none> 23d v1.25.4
# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
master.example.com Ready control-plane 23d v1.25.4 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master.example.com,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=
node1.example.com Ready <none> 23d v1.25.4 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1.example.com,kubernetes.io/os=linux
node2.example.com Ready <none> 23d v1.25.4 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=node2.example.com,kubernetes.io/os=linux
node1, node2에 label 추가
특정 label만 보기 위해서는 -L 옵션 추가 후 label 키 네임 입력으로 확인
# kubectl label nodes node1.example.com gpu=true disk=ssd
node/node1.example.com labeled
# kubectl label nodes node2.example.com gpu=true
node/node2.example.com labeled
# kubectl get nodes --show-labels
NAME STATUS ROLES AGE VERSION LABELS
master.example.com Ready control-plane 23d v1.25.4 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=master.example.com,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node.kubernetes.io/exclude-from-external-load-balancers=
node1.example.com Ready <none> 23d v1.25.4 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,disk=ssd,gpu=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=node1.example.com,kubernetes.io/os=linux
node2.example.com Ready <none> 23d v1.25.4 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,gpu=true,kubernetes.io/arch=amd64,kubernetes.io/hostname=node2.example.com,kubernetes.io/os=linux
# kubectl get nodes -L disk,gpu
NAME STATUS ROLES AGE VERSION DISK GPU
master.example.com Ready control-plane 23d v1.25.4
node1.example.com Ready <none> 23d v1.25.4 ssd true
node2.example.com Ready <none> 23d v1.25.4 true
gpu: "ture", disk: ssd 인 node에 pod를 실행한다는 yaml
# cat nodeselector.yaml
apiVersion: v1
kind: Pod
metadata:
name: pod-nodeselector
spec:
nodeSelector:
gpu: "true"
disk: ssd
containers:
- name: nginx
image: nginx:1.14
ports:
- containerPort: 80
yaml 파일 실행 후 Label에 gpu: "ture", disk: ssd 설정이 되어있는 node1 에 실행되는지 확인 후 삭제
만약, node들 중에 gpu, ssd 가 없다면 STATUS는 Pending 상태가됨
# kubectl create -f nodeselector.yaml
pod/pod-nodeselector created
# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
pod-nodeselector 1/1 Running 0 6s 10.36.0.2 node1.example.com <none> <none>
# kubectl delete pod pod-nodeselector
pod "pod-nodeselector" deleted
[참고]
- https://www.youtube.com/watch?v=1UlMwsSN45Y
반응형
'Kubernetes' 카테고리의 다른 글
[Kubernetes] kubernetes Canary Deployment (0) | 2022.12.17 |
---|---|
[Kubernetes] Annotation (0) | 2022.12.17 |
[Kubernetes] kubernetes label 쿠버네티스 레이블 (0) | 2022.12.16 |
[Kubernetes] Ingress 실습 - 웹페이지 구현 (0) | 2022.12.14 |
[Kubernetes] Ingress 개념과 Ingress Controller 설치 (0) | 2022.12.14 |