# (옵션) 마스터 - 터미널1
watch -d 'kubectl get pods,rs,deploy -o wide'
# (옵션) 노드 - 터미널1
watch -d 'docker ps --format "table {{.Image}}\t{{.Status}}\t{{.Names}}" | grep -v pause'
# 생성
curl -s -O https://raw.githubusercontent.com/gasida/DKOS/main/4/replicaset-cndk.yaml
kubectl apply -f replicaset-cndk.yaml
# 레플리카셋 확인
kubectl describe replicasets.apps replicaset-cndk
root@k8s-m:~# root@k8s-m:~# kubectl describe replicasets.apps replicaset-cndk
NAME DESIRED CURRENT READY AGE
replicaset-cndk 3 3 3 90s
kubectl get replicasets.apps -o wide
root@k8s-m:~# kubectl get replicasets.apps -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
replicaset-cndk 3 3 3 102s nginx nginx:latest app=cndk-nginx-pods
root@k8s-m:~# kubectl describe replicasets.apps replicaset-cndk
...
# 포드 확인 : 파드의 이름-#### 부분은 레플리카셋이 해쉬 랜덤값을 붙인것!
kubectl get pod --show-labels
root@k8s-m:~# kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
replicaset-cndk-b7wfr 1/1 Running 0 3m25s app=cndk-nginx-pods
replicaset-cndk-c4nwx 1/1 Running 0 3m25s app=cndk-nginx-pods
replicaset-cndk-nsjwx 1/1 Running 0 3m25s app=cndk-nginx-pods
kubectl get pod -o wide
root@k8s-m:~# kubectl get pod -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
replicaset-cndk-b7wfr 1/1 Running 0 3m27s 172.16.46.1 k8s-w2 <none> <none>
replicaset-cndk-c4nwx 1/1 Running 0 3m27s 172.16.197.1 k8s-w3 <none> <none>
replicaset-cndk-nsjwx 1/1 Running 0 3m27s 172.16.228.65 k8s-w1 <none> <none>
# 포드 개수를 4개 늘려서 실행되게 해보자, edit 로 현재 레플리카셋을 수정해보자(etcd 내용 수정됨)
# 실행 후 아래 created 가 아니라 edited 인 것을 확인
kubectl edit replicasets.apps replicaset-cndk
root@k8s-m:~# kubectl edit replicasets.apps replicaset-cndk
...
spec:
replicas: 6 # 기존의 3을 6으로 변경 : 6으로 커서 이동 후 x 로 삭제 후 i 로 입력(INSERT)후 6 입력 후 ESC 후 :wq 로 저장 후 빠져나옴
...
:wq # 저장 후 빠져나옴
replicaset.apps/replicaset-cndk edited
# 포드가 6개 인것을 확인
kubectl get pods
root@k8s-m:~# kubectl get pods
NAME READY STATUS RESTARTS AGE
replicaset-cndk-99k8l 1/1 Running 0 32s
replicaset-cndk-b7wfr 1/1 Running 0 8m38s
replicaset-cndk-c4nwx 1/1 Running 0 8m38s
replicaset-cndk-m5l9v 1/1 Running 0 32s
replicaset-cndk-nsjwx 1/1 Running 0 8m38s
replicaset-cndk-vjbs5 1/1 Running 0 32s
# 레플리카셋을 삭제
kubectl delete replicasets.apps replicaset-cndk
- 레플리카셋 다시 생성: 파일에서 불러오니 6개가 아닌 3개가 됨
# 생성
kubectl apply -f replicaset-cndk.yaml
# 레플리카셋 확인
kubectl get replicasets.apps -o wide
root@k8s-m:~# kubectl get replicasets.apps -o wide
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR
replicaset-cndk 3 3 3 102s nginx nginx:latest app=cndk-nginx-pods
- Q: 이 상태에서 파드 3개를 직접 종료하면 어떻게 될까요?
# 터미널1
kubectl get pod -w
# 터미널2 - 파드 삭제
kubectl delete pod -l app=cndk-nginx-pods
# 안 죽는다! 다시 삭제해본다!
kubectl delete pod --all
# 현재 파드의 label 다시 확인
kubectl get pod --show-labels
root@k8s-m:~# kubectl get pod --show-labels
NAME READY STATUS RESTARTS AGE LABELS
replicaset-cndk-272gg 1/1 Running 0 7m29s app=cndk-nginx-pods
replicaset-cndk-cfczs 1/1 Running 0 7m29s app=cndk-nginx-pods
replicaset-cndk-zd2bl 1/1 Running 0 7m29s app=cndk-nginx-pods
# 터미널1
kubectl get pod -w
# 파드 1개 label 제거 훅 파드의 상태 확인
kubectl label pod <파드 1개 이름> app-
# 다음 실습을 위해서 리소스 제거
kubectl delete rs replicaset-cndk
# 라벨을 제거했던 파드가 남아있으므로 삭제할 것!
kubectl delete pod --all