쿠버네티스

[쿠버네티스] Replicaset을 이용해 Pod 관리 하기

트리스탄1234 2024. 3. 17. 06:32
728x90
반응형

안녕하세요 이웃님들 ^.^
오늘의 포스팅은 Replicaset을 이용해 Pod를 관리 하는 방법에 대해서 알아 보겠습니다.
 
ReplicaSet의 목적은 레플리카 Pod 집합(Pod의 복제본들)의 실행을 항상 안정적으로 유지하는 것입니다. 정해진 수의 Pod를 유지하기 위해서 Object들의 상태(Status)를 살피고, Spec과 Status에 차이가 발생하면 이를 다시 일치시키기 위해서 조치를 취합니다.
 
ReplicaSet의 Spec에는 다음 정보들이 포함되어 있습니다.

  • replicas : 유지해야 하는 Pod 개수
  • selector : 획득 가능한 파드를 식별하는 방법 (ReplicaSet에 의해 관리되는 Pod의 선택방법)
  • template : Pod 생성에 사용되는 데이터 (Pod의 metadata와 spec)

그럼 이제 Rplicaset을 생성해 보겠습니다. 
1. vi로 아래의 yaml 파일을 생성 합니다.

ubuntu@ip-172-31-31-84:~/dockertext2/chap07$ vi test-replicaset.yaml
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: nginx-replicaset
  labels:                     ==> Replcaset에서 관리 하는 Pod들의 Label
    app: my-nginx
    tier: frontend
spec:
  replicas: 3                ==> 유지해야 되는 Pod 수
  selector:
    matchLabels:
      app: my-nginx
  template:
    metadata:
      labels:
        app: my-nginx
      name: my-nginx
    spec:
      containers:
      - image: nginx:1.19.3
        name: my-nginx
        ports:
        - containerPort: 80

 
2. 아래 명령으로 Replicaset을 생성 하고 조회를 해봅니다. 

ubuntu@ip-172-31-31-84:~/dockertext2/chap07$ kubectl apply -f test-replicaset.yaml

ubuntu@ip-172-31-31-84:~/dockertext2/chap07$ kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP            NODE              NOMINATED NODE   READINESS GATES
nginx-replicaset-cfs2w   1/1     Running   0          56s   172.17.0.8    ip-172-31-31-84   <none>           <none>
nginx-replicaset-rt5h2   1/1     Running   0          56s   172.17.0.9    ip-172-31-31-84   <none>           <none>
nginx-replicaset-shkn6   1/1     Running   0          56s   172.17.0.10   ip-172-31-31-84   <none>           <none>

 
3. 그럼 이제 Pod를 삭제를 해보고 Replicaset이 어떻게 동작하고 있는지 살펴 봅시다.
 아래 명령으로 Pod하나를 삭제를 하고 조회를 해봅니다.

ubuntu@ip-172-31-31-84:~/dockertext2/chap07$ kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE   IP            NODE              NOMINATED NODE   READINESS GATES
nginx-replicaset-cfs2w   1/1     Running   0          56s   172.17.0.8    ip-172-31-31-84   <none>           <none>
nginx-replicaset-rt5h2   1/1     Running   0          56s   172.17.0.9    ip-172-31-31-84   <none>           <none>
nginx-replicaset-shkn6   1/1     Running   0          56s   172.17.0.10   ip-172-31-31-84   <none>           <none>

ubuntu@ip-172-31-31-84:~/dockertext2/chap07$ kubectl delete pod nginx-replicaset-cfs2w
pod "nginx-replicaset-cfs2w" deleted
ubuntu@ip-172-31-31-84:~/dockertext2/chap07$
ubuntu@ip-172-31-31-84:~/dockertext2/chap07$
ubuntu@ip-172-31-31-84:~/dockertext2/chap07$ kubectl get pod -o wide
NAME                     READY   STATUS    RESTARTS   AGE     IP            NODE              NOMINATED NODE   READINESS GATES
nginx-replicaset-hnr24   1/1     Running   0          4s      172.17.0.3    ip-172-31-31-84   <none>           <none>
nginx-replicaset-rt5h2   1/1     Running   0          2m40s   172.17.0.9    ip-172-31-31-84   <none>           <none>
nginx-replicaset-shkn6   1/1     Running   0          2m40s   172.17.0.10   ip-172-31-31-84   <none>           <none>

 
위에서 보듯이 첫번재 Pod인 cfs2w 를 삭제를 하면 다른 신규 Pod를 hnr24 생성하여 Rplicaset에 설정된 Pod의 수 3개를 맞춥니다. 
 
잘 동작하고 있네요.. 그럼 오늘은 이만 ^.^
 

728x90
반응형