Kubernetes - Controller: Auto Healing, Software Update, Auto Scaling, Job
Devops/Kubernetes

Kubernetes - Controller: Auto Healing, Software Update, Auto Scaling, Job

뉴비뉴 2020. 5. 20.

Auto Healing

Node_1 안에 있는 Pod_1가 죽거나 Node_1이 죽게되는 경우 Controller가 모니터링하고 있다가

죽은 Pod_1을 정상작동하는 Node_2 안으로 옮겨준다. 정확히 말하면 리스타트되면서 정상작동하는 노드로 들어간다.

  • ReplicationController(Deprecated)
  • ReplicaSet
    • Template
      • Service와 Pod처럼 라벨과 셀렉터로 연결이 된다. 컨트롤러를 만들 때 Template으로 Pod를 명세합니다.
      • Template를 Update하면 새로운 Pod가 생성되게 됩니다.
    • Replicas
      • replicas의 수 만큼 Pod가 생성됩니다.
      • 개 수 만큼 Pod가 유지된다고 생각하면 됩니다.
    • Selector
      • ReplicationController의 Selector는 키와 라벨이 같은 Pod과 연결을 해준다. Key와 Value중에 하나라도 다르면 연결하지 않는다.
      • ReplicaSet의 Selector는 matchLables(키와 밸류가 모두 같아야 연결해주는 기능), matchExpressions(키와 밸류를 좀 더 디테일하게 설정할 수 있습니다.) - key: ver operator: Exists로 설정해주면 라벨의 key가 ver인 것들을 연결할 수 있습니다.
        • matchExpressions 옵션
          • Exists - {key: ver, operator: Exists} 키가 ver인 것들을 선택
          • DoesNotExists - {key: ver, operator: DoesNotExist 키가 ver가 아닌 것들을 선택
          • IN - key를 A로 설정하고, Values를 2,3 으로 설정하면 키가 A이면서 값이 2, 3인 것들을 선택
          • NotIn - IN의 반대

  • DaemonSet

Software Update

여러 Pod에 대한 버전을 업그레이드 해야 될 경우 Controller를 통해서 한번에 업데이트를 할 수 있고,

Rollback도 가능합니다.

  • Deployment

Auto Scaling

Pod의 리소스가 Limit 상태가 되었을 때 Controller는 Pod를 하나 더 생성시켜 과부하를 방지합니다.

  • HPA

Job

일시적인 작업을 해야 될 경우 Controller가 Pod를 만들어서 해당 작업을 이행하고 Pod를 삭제합니다.

  • CronJob
  • Job

 

 

실습

ReplicaSet

파드과 ReplicaSet의 설정을하고 ReplicaSet의 Selector는 파드를 바라보고 있습니다.

ReplicaSet 안의 수를 증가시키면 새로운 파드가 생성되는데 이름이 replicaset의 이름을 바탕으로 생성됩니다.

버전을 업데이트하고 싶으면 template 안에 있는 이미지의 버전을 변경하고, 파드를 재생성해주면 됩니다.

Controller를 삭제하게되면 생성되었던 파드들도 삭제되므로 주의해야 합니다.

ReplicaSet의 컨트롤러만 삭제하고 싶은 경우엔 kubectl delete replicationcontrollers replication1 --cascade=false

명령을 입력하면 컨트롤러만 삭제되고 파드의 경우엔 유지되게 됩니다. 이 방법으로 컨트롤러 업데이트가 가능합니다.

 

Selector

Selector의 matchExpressions는 보통 사용하지 않습니다.

주의사항

1. selector의 내용이 template labels에 포함이 되어 있어야 합니다.

 

 

댓글

💲 추천 글