본문 바로가기
Linux&Ubuntu/Docker&kuber

ReplicaSet 사용하기

by Vittorio_Lee 2023. 9. 8.
728x90
반응형
SMALL

Replication Controller와 유사하지만 더 유연한 셀렉터와 매칭하여 파드를 관리할 수 있으며, 롤링 업데이트 및 롤백을 지원합니다.

 

ReplicaSet 
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webui
    machExpressions:
    - {key:version, operator:in, value:["2.1","2.2"]}
    temp..

ex) 

- {key:version, operator:in, value:["2.1","2.2"]} 2.1, 2.2 버전이 들어간거 3개 운영해세요.
- {key:version, operator:Notln, value:["2.1","2.2"]}   2.1,2.2 버전이 아닌걸로 해주세요 .
- {key:version, operator:Exists } 버전이 존재하기만 하면됩니다
- {key:version, operator:nolth Exists }  버전이 존재하면 안됩니다.

 

RC
apiVersion: v1
kind: ReplicationController
metadata:
  name: rc-nginx
spec:
  replicas: 3
  selector:
    app: webui
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
RS
apiVersion: apps/v1     
kind: ReplicaSet        
metadata:
  name: rs-nginx        
spec:
  replicas: 3
  selector:
    matchLabels:        
      app: webui   
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
# vi rs-nginx.yaml

 

apiVersion: apps/v1     
kind: ReplicaSet        
metadata:
  name: rs-nginx        
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webui   
  template:
    metadata:
      name: nginx-pod
      labels:
        app: webui
    spec:
      containers:
      - name: nginx-container
        image: nginx:1.14
# kubectl create -f rs-nginx.yaml 
# kubectl get pod --show-labels
NAME             READY   STATUS    RESTARTS   AGE   LABELS
rs-nginx-5582x   1/1     Running   0          36s   app=webui
rs-nginx-bdhw7   1/1     Running   0          36s   app=webui
rs-nginx-vrbbr   1/1     Running   0          36s   app=webui
# kubectl delete pod rs-nginx-vrbbr
pod "rs-nginx-vrbbr" deleted

삭제해도 pod 는 재 생성됩니다. 

pod 줄이기 3 -> 2

# kubectl scale rs rs-nginx --replicas=2
Every 2.0s: kubectl get pods -o wide                                                                     master: Fri Sep  8 10:23:38 2023

NAME             READY   STATUS    RESTARTS   AGE     IP             NODE      NOMINATED NODE   READINESS GATES
rs-nginx-5582x   1/1     Running   0          2m14s   10.101.1.141   worker2              
rs-nginx-bdhw7   1/1     Running   0          2m14s   10.101.1.85    worker1              

해서 ReplicaSet 설정은 삭제하고 서비스중인 파드들은 그대로 둘려면 아래와 같이 진행하면됩니다. 

 

# kubectl delete rs rs-nginx --cascade=orphan
replicaset.apps "rs-nginx" deleted

이제 여기서 2개 pod 가 작동중이고 

Every 2.0s: kubectl get pods -o wide                                                                     master: Fri Sep  8 10:50:37 2023

NAME             READY   STATUS    RESTARTS   AGE    IP             NODE      NOMINATED NODE   READINESS GATES
rs-nginx-cbsx4   1/1     Running   0          111s   10.101.1.93    worker1              
rs-nginx-jfdpm   1/1     Running   0          111s   10.101.1.149   worker2              
# kubectl get rs
NAME       DESIRED   CURRENT   READY   AGE
rs-nginx   2         2         2       39s

ReplicaSet controller 를 삭제 하였습니다.

kubectl delete rs rs-nginx --cascade=orphan
replicaset.apps "rs-nginx" deleted

 

# kubectl get rs
No resources found in vittorio namespace.

여기서 다시 ReplicationController 를 실행 해보겠습니다 .

# kubectl create -f rc-nginx.yaml 
eplicationcontroller/rc-nginx created

 

Every 2.0s: kubectl get pods -o wide                                                                     master: Fri Sep  8 10:51:33 2023

NAME             READY   STATUS    RESTARTS   AGE     IP             NODE      NOMINATED NODE   READINESS GATES
rc-nginx-mj9cl   1/1     Running   0          5s      10.101.1.95    worker1              
rs-nginx-cbsx4   1/1     Running   0          2m47s   10.101.1.93    worker1              
rs-nginx-jfdpm   1/1     Running   0          2m47s   10.101.1.149   worker2              



rc rs작동됩니다. 
여기서 보시다 싶이 중요한 부분은  labels: 에 입력된 app:webui 부분인거같습니다 

# kubectl get rc
NAME       DESIRED   CURRENT   READY   AGE
rc-nginx   3         3         3       13s

rc 가이제 3개의 nginx 를 관리하는것을 볼수있습니다.


728x90
반응형
LIST