Exercise 12.2: Using Taints to Control Pod Deployment
CP 노드에 연결된 터미널로 이동
각 Node별로 배포된 Pod 갯수 확인
kubectl describe node | grep -E "(^Name:|^Non-terminated)"Deployment 생성
cat <<EOF | kubectl create -f - apiVersion: apps/v1 kind: Deployment metadata: name: taint-deployment spec: replicas: 8 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.20.1 ports: - containerPort: 80 resources: requests: cpu: 100m EOF위에서 생성한 Deployment를 통해서 생성된 Pod가 어떤 노드에 배포 됐는지 확인
kubectl get pod -l app=nginx -o wideDeployment 삭제
kubectl delete deployment taint-deploymentWorker 노드에 Taint 부여
kubectl taint nodes worker status=unstable:PreferNoSchedule노드에 부여된 Taint 확인
kubectl get nodes \ -o=custom-columns=NodeName:.metadata.name,TaintKey:.spec.taints[*].key,TaintValue:.spec.taints[*].value,TaintEffect:.spec.taints[*].effectDeployment 생성
cat <<EOF | kubectl create -f - apiVersion: apps/v1 kind: Deployment metadata: name: taint-deployment spec: replicas: 8 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.20.1 ports: - containerPort: 80 resources: requests: cpu: 100m EOF위에서 생성한 Deployment를 통해서 생성된 Pod가 어떤 노드에 배포 됐는지 확인
kubectl get pod -l app=nginx -o wideReplica 갯수를 16개로 변경
kubectl scale deploy taint-deployment --replicas=16추가로 생성되는 Pod들이 어떤 노드에 배포 됐는지 확인
kubectl get pod -l app=nginx -o wideCP 노드에 할당된 리소스 확인
kubectl describe node cpDeployment 삭제
kubectl delete deployment taint-deploymentWorker 노드에 부여한 Taint 삭제
kubectl taint nodes worker status-노드에 부여된 Taint 확인
kubectl get nodes \ -o=custom-columns=NodeName:.metadata.name,TaintKey:.spec.taints[*].key,TaintValue:.spec.taints[*].value,TaintEffect:.spec.taints[*].effectWorker 노드에 Taint 부여
kubectl taint nodes worker operation=upgrading:NoSchedule노드에 부여된 Taint 확인
kubectl get nodes \ -o=custom-columns=NodeName:.metadata.name,TaintKey:.spec.taints[*].key,TaintValue:.spec.taints[*].value,TaintEffect:.spec.taints[*].effectDeployment 생성
cat <<EOF | kubectl create -f - apiVersion: apps/v1 kind: Deployment metadata: name: taint-deployment spec: replicas: 16 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.20.1 ports: - containerPort: 80 resources: requests: cpu: 100m EOF위에서 생성한 Deployment를 통해서 생성된 Pod가 어떤 노드에 배포 됐는지 확인
kubectl get pod -l app=nginx -o wideWorker 노드에 부여한 Taint 삭제
kubectl taint nodes worker operation-Pending 상태였던 Pod들이 배포되는지 확인
kubectl get pod -l app=nginx -o wide새로운 터미널을 키고 CP 노드로 SSH 접속
Pod 상태 모니터링
kubectl get pod -l app=nginx -o wide --watch기존 터미널로 이동
Worker 노드에 Taint 부여
kubectl taint nodes worker performance=slow-disk:NoExecutePod 상태 모니터링 명령어를 실행한 터미널로 이동해서 Pod가 삭제되는지 확인
기존 터미널로 이동
Pod 상태 확인
kubectl get pod -l app=nginxWorker 노드에 부여한 Taint 삭제
kubectl taint nodes worker performance-Pod 상태 모니터링 명령어를 실행한 터미널로 이동해서 Pod가 배포되는지 확인
기존 터미널로 이동
Pod 상태 확인
kubectl get pod -l app=nginxDeployment 삭제
kubectl delete deployment taint-deployment
Last updated