컨테이너 오케스트레이션
Cluster
State
- 뭐 죽으면 다시 켜주고
- resource 보면서
Scheduling(배포 관리)
- 가용 가능한 노드(resource 보고)를 찾아주는 것이 Scheduling
Rollout Rollback
- 버전 업그레이드, 버전 다운그레이드 동시에
Service Discovery
Volume
- node 마다 다양한 Volume Storage를 적용가능하게 해줌
쿠버네티스
아키텍처 - 구성


- API Server
- etcd와 통신하는 유일한 모듈
- REST API 형태
- 권한 관리
- etcd(저장소)
- key-value 형태로 데이터 저장
- 백업 필수
- 고가용성 - 분산 시스템으로 구성
- scheduler
- 새로 생성된 Pod를 감지하고 실행할 노드를 선택
- 노드의 현재 상태와 Pod의 Request를 체크
- 노드에 라벨 부여
- Controller
- 컨테이너에 상태 체크, Desired State를 유지
- 상태를 체크하기 위해 Api Server에게 조회 요청, 권한 있는지 확인 후 정보조회
Node
- 얘네도 API Server랑 통신
Proxy
- 네트워크 프록시와 부하 분산 역할
- 내/외부 통신 설정하기
- iptables 또는
Kublet
- 각 노드에 떠있는 형태
- Pod를 실행/ 중지하고 상태 체크
- CRI(Container Runtime Interface)
오브젝트
- Pod : 가장 작은 배포 단위. 컨테이너를 배포하는게 아니라 Pod를 할당
- 전에 클러스터에서 고유한 IP를 할당
- 하나의 pod 안에 보통은 하나지만 여러 개의 컨테이너가 속할 수 있음
- Replica Set : 여러 개의 Pod 관리. Pod를 생성, 제거하여 원하는 Replica 수 유지(Pod Template 통해서 Replica 가능. ec2 의 ami 와 동일)
- Deployment

- Service
- Cluster IP
- Pod를 로드밸런싱 해주는 서비스
- Cluster IP 가 고정 IP 사용해서 pod에게 연결
- NodePort → Cluster Ip → Pod로 연결
- LoadBalancer
- Ingress(nginx 같은 역할)
- 도메인 이름 url path에 따라 cluster ip에 연결할 수 있게 해주는
API 호출
Object Spec - YAML

Desired State를 Object Spec으로 작성하고 이를 API Server에 보내는 식으로 동작을 함