Skip to content

Instantly share code, notes, and snippets.

@ianychoi
Last active July 19, 2021 14:03
Show Gist options
  • Select an option

  • Save ianychoi/d6d765107205604c705b851e4b29e069 to your computer and use it in GitHub Desktop.

Select an option

Save ianychoi/d6d765107205604c705b851e4b29e069 to your computer and use it in GitHub Desktop.
쿠버네티스 - ReplicaSet
# (옵션) 마스터 - 터미널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)을 하나 제거했을 때 결과
# 현재 파드의 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment