-
파드에 라벨(레이블) 설정 후 셀렉터를 통한 확인
-
labels.yaml
apiVersion: v1 kind: Pod metadata: name: myweb1 labels: environment: production app: nginx spec: containers: - image: nginx name: myweb1 ports: - containerPort: 80 protocol: TCP --- apiVersion: v1 kind: Pod metadata: name: myweb2 labels: environment: dev app: nginx spec: containers: - image: nginx name: myweb2 ports: - containerPort: 80 protocol: TCP
-
실행 및 확인
# 파드 생성 curl -s -O https://raw.githubusercontent.com/gasida/DKOS/main/3/labels.yaml kubectl apply -f labels.yaml root@k8s-m:~# kubectl get pod NAME READY STATUS RESTARTS AGE myweb1 1/1 Running 0 2m20s myweb2 1/1 Running 0 2m20s # 파드 라벨 정보 확인 kubectl get pod --show-labels root@k8s-m:~# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS myweb1 1/1 Running 0 5s app=nginx,environment=production myweb2 1/1 Running 0 5s app=nginx,environment=dev # 셀렉터를 통한 확인 kubectl get pod -l environment=production root@k8s-m:~# kubectl get pod -l environment=production NAME READY STATUS RESTARTS AGE myweb1 1/1 Running 0 2m50s kubectl get pod -l app=nginx root@k8s-m:~# kubectl get pod -l app=nginx NAME READY STATUS RESTARTS AGE myweb1 1/1 Running 0 2m59s myweb2 1/1 Running 0 2m59s # 셀렉터를 활용하여 특정 파드 삭제 kubectl delete pod -l environment=production root@k8s-m:~# kubectl delete pod -l environment=production pod "myweb1" deleted # 라벨 제거 root@k8s-m:~# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS myweb2 1/1 Running 0 36s app=nginx,environment=dev # 라벨의 키 뒤에 - root@k8s-m:~# kubectl label pod myweb2 app- pod/myweb2 labeled root@k8s-m:~# kubectl get pod --show-labels NAME READY STATUS RESTARTS AGE LABELS myweb2 1/1 Running 0 95s environment=dev # 다음 실습을 위해서 생성된 파드 삭제 kubectl delete pod --all
-
-
1노드셀렉터(nodeSelector)** 를 이용한 파드 배포 확인
-
Pod 가 특정 노드에 할당되도록 스케줄링, nodeSelector 라는 property 를 이용
-
워커노드 1대에 라벨 지정 후 파드가 해당 워커노드에 배포되는지 확인
# 노드 기본 라벨 정보 확인 kubectl get node --show-labels root@k8s-m:~# kubectl get node --show-labels NAME STATUS ROLES AGE VERSION LABELS k8s-m Ready control-plane,master 98m v1.21.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-m,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers= k8s-w1 Ready <none> 96m v1.21.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-w1,kubernetes.io/os=linux k8s-w2 Ready <none> 95m v1.21.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-w2,kubernetes.io/os=linux # 커맨드로 노드1에 라벨 설정 kubectl label node k8s-w1 gpu=ndivia root@k8s-m:~# kubectl label node k8s-w1 gpu=ndivia node/k8s-w1 labeled root@k8s-m:~# kubectl get node --show-labels NAME STATUS ROLES AGE VERSION LABELS k8s-m Ready control-plane,master 117m v1.21.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-m,kubernetes.io/os=linux,node-role.kubernetes.io/control-plane=,node-role.kubernetes.io/master=,node.kubernetes.io/exclude-from-external-load-balancers= k8s-w1 Ready <none> 115m v1.21.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,gpu=ndivia,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-w1,kubernetes.io/os=linux k8s-w2 Ready <none> 113m v1.21.1 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/arch=amd64,kubernetes.io/hostname=k8s-w2,kubernetes.io/os=linux
-
labels-node.yaml
apiVersion: v1 kind: Pod metadata: name: myweb spec: containers: - image: nginx name: myweb ports: - containerPort: 80 protocol: TCP nodeSelector: gpu: ndivia
-
파드 배포 후 확인
curl -s -O https://raw.githubusercontent.com/gasida/DKOS/main/3/labels-node.yaml kubectl apply -f labels-node.yaml # 파드 배포 노드 확인 root@k8s-m:~# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES myweb 1/1 Running 0 26s 172.16.228.68 k8s-w1 <none> <none> # 파드를 3개 더 생성 cat labels-node.yaml | sed "s/name: myweb/name: myweb2/g" | kubectl apply -f - cat labels-node.yaml | sed "s/name: myweb/name: myweb3/g" | kubectl apply -f - cat labels-node.yaml | sed "s/name: myweb/name: myweb4/g" | kubectl apply -f - cat labels-node.yaml # 파드 배포 노드 확인 : 파드가 워커 노드에 분산 배치되지 않는다! root@k8s-m:~# kubectl get pod -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES myweb 1/1 Running 0 3m53s 172.16.228.68 k8s-w1 <none> <none> myweb2 1/1 Running 0 27s 172.16.228.69 k8s-w1 <none> <none> myweb3 1/1 Running 0 13s 172.16.228.70 k8s-w1 <none> <none> myweb4 1/1 Running 0 12s 172.16.228.71 k8s-w1 <none> <none> # 다음 실습을 위해서 생성된 파드 삭제 kubectl delete pod --all
-
Last active
July 14, 2021 12:43
-
-
Save ianychoi/44d360170fd8671aa9380741b3920b00 to your computer and use it in GitHub Desktop.
쿠버네티스 - 라벨 & 셀렉터 실습
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment