DevOps/Kubernetes

[Kubernetes] 컨트롤러와 객체

Ofglen 2023. 7. 14. 00:14

바라는 상태(Desired State)

쿠버네티스는 사용자 요청에 따라 현재 상태가 바라는 상태와 동일해지도록 사전 정의된 작업을 수행한다. 따라서 쿠버네티스에 장애가 발생해서 애플리케이션이 죽더라고 Desired State에 의해서 배포 상태를 되살릴 수 있다. (자가 치유)

에어컨 시스템에 비유하면 현재 온도를 사용자가 바라는 희망온도에 따라 변경시키기 위해 에어컨(쿠버네티스)이 작동한다.

https://www.leverege.com/iot-ebook/kubernetes-object-management-model

 

쿠버네티스에서는 YAML 형식을 이용해서 선언형 명령을 내린다. 사용자는 쿠버네티스에 명령을 전달할 때 YAML 파일에 프로퍼티(property)를 추가 또는 수정한다.

 

 

 

컨트롤러(Controller)

컨트롤러는 루프를 돌며 오브젝트들을 지속적으로 모니터링한다.

쿠버네티스에는 바라는 상태라는 개념이 있는데, 사용자가 Job이라는 리소스를 생성해두면 그애 맞는 배치 작업 프로세스를 실행한다.

 

 

쿠버네티스 객체

쿠버네티스는 모든 것이 리소스, 객체로 표현된다. Pod, ReplicaSet, Deployment 등 쿠버네티스에는 다양한 객체들이 존재한다. 쿠버네티스는 항상 오브젝트의 현재 상태를 의도한 상태와 동일하게 만들게끔 작동한다.

status는 오브젝트의 현재 상태를 설명한다. spec은 오브젝트의 추구하는 상태를 설명한다.

 

 

쿠버네티스 객체의 종류

1. 네임스페이스 레벨 객체: 대부분의 객체는 네임 스페이스 내에 포함된다.

Ex) Pod, Deployment, Service 

2. 클러스터 레벨 객체: 네임스페이스 영역에 상관없이 클러스터 레벨에서 존재하는 객체이다.

Ex) Node, PV(PersistentVolume), StorageClass

 

 

 

네임스페이스(Namespace)

클러스터를 논리적으로 분리하는 개념으로 네임스페이스마다 서로 다른 권한 설정, 네트워크 정책을 설정할 수 있다. 물리적 분리가 아닌 논리적 분리로 클러스터 내 오브젝트들을 하나로 묶어 그룹화하고 다른 네임스페이스와의 파드들과 통신할 수 있다. 

 

 

라벨(Label) & 셀렉터(Selector)

쿠버네티스 객체에 명령을 전달 시 key-value 형식의 라벨을 선택한다. 셀렉터를 통해 객체를 식별한다. 라벨은 셀렉터를 통해서 특정 라벨만을 추출할 수 있다. 

 

 

볼륨(Volume)

파드(Pod)의 스토리지를 설정한다.