본문 바로가기

IT 매일매일

k8s Controller?

Controller

 

쿠버네티스에서 컨트롤러는 클러스터의 상태를 관찰 한 다음, 필요한 경우에 생성 또는 변경을 요청
각 컨트롤러는 현재 클러스터 상태를 의도한 상태에 가깝게 제어
말 그대로 파드를 제어하는 제어자

 

컨트롤러의 기능

 

Auto Healing
컨트롤러에서 지정한 수의 파드를 유지하는 기능
특정 노드에서 파드가 다운되거나 특정 노드 자체가 다운되면 다운된 노드를 다른 곳에서 실행

 

Software Update
v1의 파드들이 실행되고 있을 때 새로운 버전의 파드가 배포되면 이전 버전은 파드들을 새로운 버전의 파드로 변경
버전을 다시 되돌리는 것도 가능

 

Job
한 번만 수행되어야 하는 작업이 있을 때 파드를 생성해서 작업을 수행 후 파드를 삭제
반복작업으로도 가능

 

AutoScale

HPA, VPA, CA


HPA :호리즌탈 파드 오토스케일링 - AWS와 같다 수평적 오토스케일링
VPA : 버츄얼 파드 오토스케일링 - 수직적 오토스케일링
CA : 클러스터 오토스케일링 - 노드 자체를 늘려버리는 오토스케일링

 

컨트롤러의 종류

 

ReplicaSet :

레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는 데 사용한다.

 

Deployment:

디플로이먼트(Deployment)  파드와 레플리카셋(ReplicaSet)에 대한 선언적 업데이트를 제공한다.

디플로이먼트에서 의도하는 상태를 설명하고, 디플로이먼트 컨트롤러(Controller)는 현재 상태에서 의도하는 상태로 비율을 조정하며 변경한다. 새 레플리카셋을 생성하는 디플로이먼트를 정의하거나 기존 디플로이먼트를 제거하고, 모든 리소스를 새 디플로이먼트에 적용할 수 있다.

참고: 디플로이먼트가 소유하는 레플리카셋은 관리하지 말아야 한다. 사용자의 유스케이스가 다음에 포함되지 않는 경우 쿠버네티스 리포지터리에 이슈를 올릴 수 있다.

 

HorizontalPodAutoscaler:
쿠버네티스에서, HorizontalPodAutoscaler 는 워크로드 리소스(예: 디플로이먼트 또는 스테이트풀셋)를 자동으로 업데이트하며, 워크로드의 크기를 수요에 맞게 자동으로 스케일링하는 것을 목표로 한다.

수평 스케일링은 부하 증가에 대해 파드를 더 배치하는 것을 뜻한다. 이는 수직 스케일링(쿠버네티스에서는, 해당 워크로드를 위해 이미 실행 중인 파드에 더 많은 자원(예: 메모리 또는 CPU)을 할당하는 것)과는 다르다.

부하량이 줄어들고, 파드의 수가 최소 설정값 이상인 경우, HorizontalPodAutoscaler는 워크로드 리소스(디플로이먼트, 스테이트풀셋, 또는 다른 비슷한 리소스)에게 스케일 다운을 지시한다.

'IT 매일매일' 카테고리의 다른 글

k8s Controller - Deployment? -Recreate 방식  (0) 2023.04.26
k8s Controller - replicaset?  (1) 2023.04.26
k8s Service(LoadBalancer)  (0) 2023.04.25
k8s Servise? (Cluster IP)  (0) 2023.04.24
k8s ConfigMap?  (0) 2023.04.24