[kubenetes] 4. 레플리카셋

kubenetes
Author
chan2slo chan2slo
Date
2022-07-25 21:22
Views
1368

레플리카셋 생성

root@Kube-master1:~# cat replicaset-nginx.yaml             
apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: replicaset-nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-nginx-pods-label # 여기까지가 replicaset 설정 부분 
  template:
    metadata:
      name: my-nginx-nod
      labels:
        app: my-nginx-pods-label
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80
root@Kube-master1:~# vi replicaset-nginx.yaml              
root@Kube-master1:~# kubectl apply -f replicaset-nginx.yaml
root@Kube-master1:~# kubectl get po
NAME                     READY   STATUS    RESTARTS   AGE
my-nginx-pod             2/2     Running   0          18h
replicaset-nginx-cf4fx   1/1     Running   0          29m
replicaset-nginx-lxz7l   1/1     Running   0          29m
replicaset-nginx-xczrv   1/1     Running   0          29m

replicas 변경시 1개 새로 추가

root@Kube-master1:~# cat replicaset-nginx.yaml | grep replicas: 
  replicas: 4
root@Kube-master1:~# kubectl apply -f replicaset-nginx.yaml              
replicaset.apps/replicaset-nginx configured
root@Kube-master1:~# kubectl get po                        
NAME                     READY   STATUS    RESTARTS   AGE
my-nginx-pod             2/2     Running   0          18h
replicaset-nginx-cf4fx   1/1     Running   0          30m
replicaset-nginx-kbbzg   1/1     Running   0          6s
replicaset-nginx-lxz7l   1/1     Running   0          30m
replicaset-nginx-xczrv   1/1     Running   0          30m

replicaset-nginx.yaml 파일의 내용중 다음부분이 replicaset과 pods를 잇는 부분이다.
레플리카셋 설정의 아래부분

    matchLabels:
      app: my-nginx-pods-label

포드 설정의 아래부분 두개가 일치해야 레플리카셋이 수행됨

      labels:
        app: my-nginx-pods-label

다음의 명령은 vi 편집기가 실행된다.

root@Kube-master1:~# kubectl edit po replicaset-nginx-cf4fx 
pod/replicaset-nginx-cf4fx edited

여기서 아무 포드나들어가서 label 부분을 삭제하면 새로운 포드가 생성된다.
label이 삭제된 pods는 더 이상 레플리카셋이 관리하지않으며 수동으로 생성된 포드와 동일하다

root@Kube-master1:~# kubectl get pods --show-labels
NAME                     READY   STATUS    RESTARTS   AGE    LABELS
my-nginx-pod             2/2     Running   0          20h    
replicaset-nginx-cf4fx   1/1     Running   0          149m    # 이것을 수정 
replicaset-nginx-lttqh   1/1     Running   0          22m    app=my-nginx-pods-label
replicaset-nginx-lxz7l   1/1     Running   0          149m   app=my-nginx-pods-label
replicaset-nginx-xczrv   1/1     Running   0          149m   app=my-nginx-pods-label

래플리카셋 삭제

root@Kube-master1:~# kubectl delete rs replicaset-nginx
replicaset.apps "replicaset-nginx" deleted
Total Reply 0