나그네소

kubernetes controller ReplicaSet 2탄 본문

Cloud/Kubernetes

kubernetes controller ReplicaSet 2탄

나그네소티 2022. 11. 18. 15:57

1. ReplicaSet

Replication Controller 와 같은 역할을 하는 컨트롤러 지만 ReplicationController 보다 풍부한
selector를 지원한다.

 

1-1) selector

selector:
  matchLabels:
    component: redis
  matchExpressions:
    - {key: tier, operator: ln, values: [cache]}
    - {key: environment, operator: Notln, values: [dev]

 

1-2) 연산자 형식

matchExpressions 연산자

  • ln : key 와 values를 지정하여 key, value가 일지하는 pod만 연결
  • Not ln : key는 일지하고 value는 일지하지 않는 pod에 연결
  • Exists : key에 맍는 label의 pod를 연결
  • DoesNotExist: key와 다른 lable의 pod를 연결

: 4가지 형태의 형식 조건을 제공 하고 있다.

 

2. Example

2-1) ReplicationController
apiVersion: v1
...
spec:
  replicas: 3
  selector:
    app: webui
    version: "2.1"
: app:webui lable 이고 version 2.1인 pod 3개를 생성해줘 (selector 아래는 and 조건이다)

 

2-2) ReplicaSet

apiVersion: v1
...
spec:
  replicas: 3
  selector:
    matchLabels:
      app: webui
    matchExpressions:
    - {key: version, operator: In, value:["2.1","2.2"]}
    
 : app:webui lable 이고 version (2.1 or 2.2) 인 pod 3개를 생성해줘

 

2-3) ReplicaSet Example(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

 

3. 참고자료

kuber-master:/home/son_kube/tmp] k get replicaset
NAME       DESIRED   CURRENT   READY   AGE
rs-nginx   3         3         3       116s

참고] pod는 두고 controler만 삭제 하고 싶으면 --cascade=false만 삭제하고 pod는 둔다. 
kuber-master:/home/son_kube/tmp] k delete rs rs-nginx --cascade=false
warning: --cascade=false is deprecated (boolean value) and can be replaced with --cascade=orphan.
replicaset.apps "rs-nginx" deleted

kuber-master:/home/son_kube/tmp] k get pods
NAME             READY   STATUS    RESTARTS   AGE
rs-nginx-22m78   1/1     Running   0          4m31s
rs-nginx-7n6ld   1/1     Running   0          4m31s
rs-nginx-m268c   1/1     Running   0          4m31s

kuber-master:/home/son_kube/tmp] k get pods --show-labels
NAME             READY   STATUS    RESTARTS   AGE     LABELS
rs-nginx-22m78   1/1     Running   0          5m22s   app=webui
rs-nginx-7n6ld   1/1     Running   0          5m22s   app=webui
rs-nginx-m268c   1/1     Running   0          5m22s   app=webui

중요 : replicaset은 select labels 기준으로 생성해주고 관리 한다.