[Master Node] Controller

squareBird·2022년 4월 5일
0

Kubernetes

목록 보기
7/17
post-thumbnail

Controller


ControllerCluster를 관찰하면서 관리자가 선언한 상태를 유지하기 위해 동작합니다.

이를 위해 Cluster의 상태를 관찰한 다음 필요한 경우 오브젝트의 생성 또는 변경을 api-server에 요청하는 방식으로 동작합니다.

Container를 감시하고 수를 보장해주는 Controller에는 크게 4가지 역할이 있습니다.

  1. Auto Healing
    Pod 또는 Pod이 실행되고 있는 노드에 문제가 생겼을 경우 자동으로 복구하는 기능
    ex) ReplicaSet, DaemonSet

  2. Software Update
    Pod을 업데이트 하는 기능, 롤백 기능도 제공
    ex)Deployment

  3. Auto Scaling
    Pod의 리소스가 부족할 때 Pod을 추가적으로 생성하는 기능

  4. Job
    일시적인 작업을 위해 필요한 순간에만 Pod을 만들었다가 삭제할 수 있는 기능
    ex) job, cron job


Controller의 종류

Kubernetes에는 다양한 형태의 Controller들이 존재합니다.

Kubernetes의 다양한 Controller

Node Controller
Replication Controller
Deployment Controller
Service Account Controller
Namespace Controller
Endpoint Controller
PV Protection Controller
Job Controller
CronJob
ReplicaSet
DaemonSet

이런 다양한 Controller들은 동작하는 방식은 다양하지만 Cluster의 구성요소들에대한 상태를 관찰한 다음, 현재 상태(current state)선언한 상태(desired state)와 일치시키기 위해 노력합니다.

이번에는 Node ControllerReplication Controller에 대해서만 간단히 설명하겠습니다.


Node Controller

Node Controller는 이름에서도 볼 수 있듯이 Node들의 상태를 유지하기 위해 동작합니다.
Node들의 상태를 모니터링하여 애플리케이션이 정상적으로 동작 할 수 있도록 필요한 조치를 취해주는 Controller입니다.

동작 방식은 다음과 같습니다.

  1. Node Monitor Period
    일정 시간(5초)마다 상태를 체크합니다.

  2. Node Monitor Grace Period
    특정 노드에 문제가 있는지 판단하기 위한 시간입니다.
    문제가 있는 노드인지 판단하기 위해 40초를 기다리고,
    40초 이후에도

  3. POD Eviction Timeout
    Pod이 잘 동작하는지 5분동안 기다려봅니다.
    그 후에도 문제가 있다면 해당 노드에 있는 파드를 제거하고 잘 작동하는 노드에 provision 합니다.
    (PodReplicaSet에 의해 관리되고 있을 경우)


Replication Controller

Replication ControllerReplicaSet의 상태를 모니터링하며 Pod의 개수를 보장합니다.
Pod에 문제가 생길 경우 Pod을 새로 생성합니다.

Replication Controller가 관리하는 ReplicaSet에 대해서는 나중에 오브젝트에 대해 공부하는 부분에서 별도로 살펴 볼 예정입니다.

profile
DevOps...

0개의 댓글