쿠버네티스 스터디2-1

이봐요이상해씨·2021년 7월 14일
0

쿠버네티스

목록 보기
7/9

1. Replication Controller, ReplicaSet - Template, Replicas, Selector

Controller

  • Pod를 관리하는 역할을 하며 다양한 목적에 따라 컨트롤러를 선택하여 사용하면된다

  • Controller를 사용하여 적용할 수 있는 기능

    • Auto healing
      • 컨트롤러는 Node1에 있는 Pod에 문제가 생기면 이를 감지하여 다른 Node(Node2)에 해당 Pod을 재생성 시켜준다
    • Auto Scaling
      • 컨트롤러는 Pod하나에 할당된 traffic 처리 자원의 한계에 도달하면 Pod을 추가생성하여 이를 분산시키게 한다
    • Software Update
      • Pod버전을 업그레이드시 컨트롤러를 통해서 한번에 업그레이드 가능하며, 롤백도 가능하다
    • Job
      • 일시적인 작업이 필요할시, 컨트롤러가 임시Pod을 생성하고(순간 작업 시) 작업 완료시 생성한 임시 Pod을 삭제한다

현재 Replication Controller는 Deprecated되어 사용은 가능하지만 추천은 되지 않는다. 대신 ReplicaSet을 사용하는것을 추천한다

Template

  • Label(Pod존재) - Selector(Replication내 존재) 로 서로 연결되어있는 상태
  • 컨트롤러로 생성시 Template에 Pod의 내용을 받게된다
  • 컨트롤러는 이전에 존재하던 Pod이 죽게되면 새로 생성시켜준다
  • 재생성시 Template에 저장된 Pod의 기록을 바탕으로 해당 Pod을 재생성 시킨다
  • 위와 같은 특성을 바탕으로 Pod의 버전을 업데이트 할 수 있다
spec:
  replicas: 1
  selector: => 라벨과 연결되는 부분 
    matchLabels:
      type: web
  template: => 팟의 내용이 들어가는 곳
    metadata:
      name: pod1
      labels: => 라벨 지정 (selector와 연괼되는 부분) 
        type: web

Replicase

  • Replicase에 명시된 수만큼 Pod의 갯수가 관리된다
  • Pod이 삭제되면 명시된 수만큼 팟의 갯수를 재생성시켜준다
  • 이러한 특성을 바탕으로 기존에 지정된 수보다 더 많게 생성시키면Scale out, 낮게 지정시키면 Scale in이 된다
spec:
  replicas: 1 =>여기에 지정된 수만틈 Pod의 갯수가 관리된다
  selector: 
    matchLabels:
      type: web
  template: 
    metadata:
      name: pod1
      labels: 
        type: web
  • Replication안에 Replicase와 template이 존재한다
    • Replicase에 연결된 Pod이 없고, template에 Pod의 정보가 있다면 이를 바탕으로 Pod을 생성하게된다

Selector

  • Replication 컨트롤러 안에 Selecotr는 Key와 Label이 같은 Pod과 연결시켜준다

  • 만일 둘중 하나라도 다르면 연결되지 않는다

  • Replication과 다르게 Replicaset에는 두가지 속성이 있다

    • Matchlabels
      • Replication처럼 Key와 label 이 같은 것들만 찾아서 연결시킨다
    • MatchExpressions
      • Key만 같은 경우만 찾아서 연결한다
      • Operator에 옵션을 주어 다양하게 선택하여 지정할 수 있다

        Exists
        : 기본 옵션, 지정된 Key만 찾아서 연결시켜준다
        DoesNotExists
        : Key를 A라고 설정하면 Pod들 중 Key값에 A가 포함되지 않는 것 만 선택한다(Exists와 반대)
        In
        : Key와 Values를 지정할 수 있다(Key를 A, Values를 2,3이라고 지정해 놓으면, Key가 A인 값들 중에서 values가 2,3것들만 찾아서 연결)
        NotIn
        : Key와 Values를 해당 내용에 아닌 것만 지정할 수 있다(Key를 A, Values를 2,3이라고 지정해 놓으면, Key가 A인 값들 중에서 values가 2,3이 아닌 것들만 찾아서 연결 In과 반대)

         
spec:
  replicas: 1
  selector:
    matchLabels: <= key, label만 같은 경우 찾아서 연결 지정
      type: web
      ver: v1
    matchExpressions: 
    - {key: type, operator: In, values: [web]}
    - {key: ver, operator: Exists} <= key가 ver인것들을 찾아서 연결 
  template:
    metadata:
      labels:
        type: web
        ver: v1
        location: dev

0개의 댓글