쿠버네티스 공부 4

ReplicasController

컨트롤러의 종류 중 하나이다.

apiVersion: v1
kind: ReplicationController
metadata:
  name: rc-nginx
spec:
  replicas: 3
  selector:
    app: webui
  template:
	<컨테이너 템플릿>
  • kubectl run redis --image=redis --dry-run --labels=app=webui -o yaml > redis.yaml : 레디스 이미지 컨테이너를 redis.yaml로 생성

  • kubectl get rc로 확인

  • kubectl describe rc rc-nginx 더 자세하게 확인

  • 해당 컨테이너의 개수를 보장 해준다.

    • 같은 라벨이름으로 다른 pod를 실행하면 해당 pod는 실행 후 강제 종료된다. 컨트롤러가 3개를 보장하기때문(많아도 적어도 안됨)
  • selector의 키 밸류를 바라보다가 eidt으로 수정이 되면 반영한다.

    • kubectl scale rc rc-nginx --relpicas=2으로 edit말고 바로 개수 수정 가능 (스케일 아웃/다운)
  • selector 외는 수정이 된다고해서 바로 반영이 되지않고 삭제 하면 컨트롤러에 의해 자동 생성되면서 수정된 버전이 생긴다. (롤링 업데이트)

  • template에는 pod 컨테이너 처럼 작성하면 된다.

  • kubectl delete rc rc-nginx rc를 삭제해야 pod가 다같이 삭제.

metadata:
  name: nginx-pod
  labels:
    app: webui
  spec:
    containers:
    - name: nginx-container
      image: nginx:1.14
      

ReplicaSet

무엇이 다른건가?
풍부한 Selector지원

apiVersion: apps/v1
kind: ReplicaSet

selector:
  matchLabels:
    component: redie
  matchExpressions:
    - {key: tier, operator: In, values: [cache]}
    - {key: enviroment, operator: NotIn, values: [dev]}
    

matchExpressions 연산자

  • In : key와 values를 지정하여 key, value가 일치하는 Pod만 연결

  • NotIn : key는 일치하고 value는 일치하지 않는 Pod에 연결

  • Exists : key에 맞는 label의 pod를 연결

  • DoesNotExist: key와 다른 label의 pod를 연결

  • kubectl get rs (replicasets)로 확인

  • kubectl delete rs rs-nginx --cascade=false : 컨트롤러만 삭제하고 pod는 남겨 놓는다.

selector:
  matchLabels:
    app: webui
  matchExpresstions:
    - {key: version, operator: In, value: ["2.1", "2.2"] }

app이름은 webui이고 version은 2.1이거나 2.2를 보장해줘

마침

rc와 rs 컴트롤러에 있어서 가장 중요한 것!
Selectorlabel !

좋은 웹페이지 즐겨찾기