backend/kubernetes docs

kubernetes docs: 클러스터 아키텍쳐 - 컨트롤러 (controller)

seul chan 2020. 5. 18. 20:48

Controller

Kubernetes에서 controler는 클러스터의 상태를 관찰한 후 필요한 경우에 생성 혹은 변경을 요청하는 컨트롤 루프이다.

Controller pattern

controller는 한개 이상의 리소스 유형을 추적한다. 해당 오브젝트들은 의도하는 상태를 표현하는 필드를 가지고 있고, 이들의 컨트롤러는 그 상태를 의도한 상태에 가깝게 만드는 역할을 한다.

다음와 같은 방법으로 제어 가능

API 서버를 통한 제어

Job controller는 Kubernetes 내장 컨트롤러의 예시.

job은 하나 또는 여러 파드를 실행하고, 작업을 수행한 다음 중지하는 Kubernetes 리소스이다.

job controller가 새로운 작업을 확인 -> kubelet이 적합한 수의 pod를 실행하게 함 -> api 서버에 파드를 생성하거나 삭제하라고 지시 -> 해당 작업 완료 -> 완료시 job controller는 Finished로 업데이트

직접 제어

일부 controller는 클러스텅 외부의 것을 변경해야 할 필요가 있을때

원하는 상태와 현재 상태

Kubernetes는 cloud-native 관점(?)에서 시스템을 관찰하며 지속적인 변화에 대응 가능하다.

Controller를 실행하는 방법

Kubernetes에는 kube-controller-manager 내부에서 실행되는 내장 컨트롤러 집합이 있다.

deployment controller, job controller는 Kubernetes의 자체("내장") 컨트롤러 중 하나이다.