💻
[Kubernetes] Replicaset 설정해보기
On this page
❐ 실습 내용
yaml 파일을 이용하여 파드를 생성하고, 레플리카셋을 설정해봅시다.
파드 확인
root@instance-1:~# kubectl get podNo resources found in default namespace.
yaml 파일 생성
rs.yaml 파일을 생성합니다.
root@instance-1:/etc/kubernetes/manifests# vi rs.yaml
yaml 파일 작성
rs.yaml 파일에 아래와 같이 작성합니다.
apiVersion: apps/v1kind: ReplicaSetmetadata:name: nginx-rsspec:template:metadata:name: nginx-rslabels:app: nginx-rsspec:containers:- name: nginx-rsimage: nginxports:- containerPort: 80replicas: 3selector:matchLabels:app: nginx-rs
yaml 파일 적용
rs.yaml 파일 내용을 적용합니다.
root@instance-1:/etc/kubernetes/manifests# kubectl create -f rs.yaml
파드 확인
파드가 3개 생성된 것을 볼 수 있습니다.
root@instance-1:/etc/kubernetes/manifests# kubectl get podNAME READY STATUS RESTARTS AGEnginx-rs-kxtmx 1/1 Running 0 6snginx-rs-plnqp 1/1 Running 0 6snginx-rs-xs9pp 1/1 Running 0 6s
파드 갯수 확인
파드 갯수를 조회할 수 있습니다.
root@instance-1:/etc/kubernetes/manifests# kubectl get rsNAME DESIRED CURRENT READY AGEnginx-rs 3 3 3 90s
레플리카셋 갯수 변경
nginx-rs 파드의 레플리카셋를 5개로 변경합니다. 변경 후 파드를 조회해보면 5개로 변경된 것을 볼 수 있습니다.
root@instance-1:/etc/kubernetes/manifests# kubectl scale rs/nginx-rs --replicas=5replicaset.apps/nginx-rs scaledroot@instance-1:/etc/kubernetes/manifests# kubectl get podNAME READY STATUS RESTARTS AGEnginx-rs-kppgm 1/1 Running 0 10snginx-rs-kxtmx 1/1 Running 0 2m55snginx-rs-plnqp 1/1 Running 0 2m55snginx-rs-xs9pp 1/1 Running 0 2m55snginx-rs-zc26r 1/1 Running 0 10sroot@instance-1:/etc/kubernetes/manifests# kubectl get rsNAME DESIRED CURRENT READY AGEnginx-rs 5 5 5 2m51s
파드 삭제하기
nginx-rs-kppgm 파드를 삭제합니다. 파드 1개를 삭제했지만 자동으로 새로운 파드 1개를 생성하여 5개를 유지하는 것을 볼 수 있습니다.
root@instance-1:/etc/kubernetes/manifests# kubectl delete pod nginx-rs-kppgmpod "nginx-rs-kppgm" deletedroot@instance-1:/etc/kubernetes/manifests# kubectl get podNAME READY STATUS RESTARTS AGEnginx-rs-kxtmx 1/1 Running 0 7m57snginx-rs-plnqp 1/1 Running 0 7m57snginx-rs-xs9pp 1/1 Running 0 7m57snginx-rs-zc26r 1/1 Running 0 5m12snginx-rs-zdjmf 1/1 Running 0 9s
레플리카셋의 상태 확인
레플리카셋의 상태를 확인할 수 있다.
root@instance-1:/etc/kubernetes/manifests# kubectl describe rs/nginx-rsName: nginx-rsNamespace: defaultSelector: app=nginx-rsLabels: <none>Annotations: <none>Replicas: 5 current / 5 desiredPods Status: 5 Running / 0 Waiting / 0 Succeeded / 0 FailedPod Template:Labels: app=nginx-rsContainers:nginx-rs:Image: nginxPort: 80/TCPHost Port: 0/TCPEnvironment: <none>Mounts: <none>Volumes: <none>Events:Type Reason Age From Message---- ------ ---- ---- -------Normal SuccessfulCreate 21m replicaset-controller Created pod: nginx-rs-kxtmxNormal SuccessfulCreate 21m replicaset-controller Created pod: nginx-rs-plnqpNormal SuccessfulCreate 21m replicaset-controller Created pod: nginx-rs-xs9ppNormal SuccessfulCreate 18m replicaset-controller Created pod: nginx-rs-zc26rNormal SuccessfulCreate 18m replicaset-controller Created pod: nginx-rs-kppgmNormal SuccessfulCreate 13m replicaset-controller Created pod: nginx-rs-zdjmf
레플리카셋 삭제
레플리카셋을 삭제합니다. 단, 여기에서 관리하는 pod은 삭제되지 않습니다. 파드 1개를 삭제 후 파드를 조회해보면 자동으로 새로운 파드를 생성하지 않는 것을 볼 수 있습니다.
root@instance-1:/etc/kubernetes/manifests# kubectl delete rs/nginx-rs --cascade=falsewarning: --cascade=false is deprecated (boolean value) and can be replaced with --cascade=orphan.replicaset.apps "nginx-rs" deletedroot@instance-1:/etc/kubernetes/manifests# kubectl get podNAME READY STATUS RESTARTS AGEnginx-rs-kxtmx 1/1 Running 0 26mnginx-rs-plnqp 1/1 Running 0 26mnginx-rs-xs9pp 1/1 Running 0 26mnginx-rs-zc26r 1/1 Running 0 23mnginx-rs-zdjmf 1/1 Running 0 18mroot@instance-1:/etc/kubernetes/manifests# kubectl delete pod nginx-rs-kxtmxpod "nginx-rs-kxtmx" deletedroot@instance-1:/etc/kubernetes/manifests# kubectl get podNAME READY STATUS RESTARTS AGEnginx-rs-plnqp 1/1 Running 0 27mnginx-rs-xs9pp 1/1 Running 0 27mnginx-rs-zc26r 1/1 Running 0 24mnginx-rs-zdjmf 1/1 Running 0 19m