쿠버네티스 오브젝트 ( Kubernetes Object )
1. Deployment
- 컨테이너가 실행 중인지 계속해서 확인하고 관리하는 쿠버네티스 관리자
- 각 프로그램을 관리하기 위해 deployment object를 생성한다.
- Deployment가 Pod를 생성하고, 쿠버네티스는 요청된 파드를 실행한다.
- kubectl get/describe deployments로 조회할 수 있다.
- Controller object가 생성되어 deployment resource를 관리한다.
2. Pod (어원: 고래의 무리)
- 쿠버네티스의 기본 작업 단위
- 하나 이상의 컨테이너 그룹으로 구성된 쿠버네티스 오브젝트
- 함께 스케줄링, 동일 노드에서 실행, 저장 공간 공유 등의 목적으로 집합으로 묶인다.
3. Replica Set
- Pod 집합이나 레플리카들을 관리하는 오브젝트 (직접 다룰 일은 거의 없음)
- Deployment > Replica Set > Pod > Node로 이어진다.
4. Scheduler
- Pod 생성 및 실행 과정을 책임지는 컴포넌트
- 대기열에서 스케줄링되지 않은 Pod을 찾아 배치하고 실행할 노드를 찾는 역할
- Pod가 노드에 스케줄링되면 노드에서 실행 중인 kubelet이 실제로 컨테이너를 실행한다.
5. YAML 형식의 리소스 매니페스트
- 쿠버네티스는 선언형 시스템 > 실제 상태와 의도한 상태를 계속 조정해서 맞춰나감
- Deployment, Pod와 같은 리소스는 모두 내부 DB에 기록 > 조정 루프가 DB의 변경을 감지 및 대응
- 쿠버네티스 제어를 위해서 kubectl run 명령어를 사용하지 않고, YAML 파일을 직접 생성하고 수정
- kubectl apply -f YAML_FILE 명령어를 통해 클러스터에 전달
6. Service Resource
- 웹 브라우저에서 파드에 연결하기 위하여 필요
- 서비스 리소스는 Pod에 자동으로 라우팅되는 영구적인 IP Address / DNS 를 제공한다.
- 쿠버네티스 서비스는 웹 프록시나 로드 밸런서와 같이 요청을 Backend Pods에게 전달
- Deployment는 App의 Pod set를 관리하고, Service는 요청을 Pod에 전달하는 단일 Entry Point 제공
- kubectl port-forward service/demo 9999:8888과 같이 포트 포워딩
7. Helm: 쿠버네티스 패키지 매니저
- chart: 쿠버네티스에서 App을 실행하는 데 필요한 모든 리소스 정의를 포한한 패키지
- repository: 차트가 모여 있는 공유할 수 있는 공간
- release: 쿠버네티스 클러스터에서 실행되는 차트의 특정 인스턴스