-
Pod : 가장 작은 배포 단위
- 각 pod마다 고유한 IP 부여(IP를 통해 내부적 통신도 가능)
- 여러 컨테이너가 하나의 Pod에 속할 수 있음
-
ReplicaSet : 여러개의 Pod을 관리
- 신규 Pod을 생성하거나 기존 Pod을 제거하여 원하는 수(Replicas) 유지
-
Deployment : ReplicaSet을 활용한 배포 버전 관리(무중단 배포시 활용)
-
그 외 쿠버네티스 제공 워크로드 방식
-
DAEMON SET : 모든 노드에 1개씩만 떠있길 바라는 pot을 만들고 싶을때 사용
ex) 로고, 모니터링
-
STATEFUL SETS : 순서대로 pod을 실행하고 싶거나 같은 볼륨을 재활용
-
JOB : 한번 실행하고 죽는 Pod
-
Service - ClusterIP : Pod을 로드밸런서 하는 별도의 서비스
- Pod은 동적이지만 서비스는 고유 IP를 가짐(Pod 개수의 변동이 있을 경우 죽이고 만들기 때문)
- 클러스터 내부에서 서비스 연결은 DNS이용
- 내부에서만 통신할 수 있음(외부 브라우저 불가)
-
Service - NodePort : 노드(host)에 노출되어 외부에서 접근 가능한 서비스
- 노드 포트 생성 -> 여러 노드에 생겨 어느 노드에 보내도 원하는 ClusterIP를 찾아가줌
-
Service - LoadBalancer : 하나의 IP주소를 외부에 노출
- 노드 포트 설정한 노드가 죽어버리면 연결이 끊기는 것을 방지
- 사용자는 로드밸런서 -> 노드포트 -> ClusterIP -> Pod
-
Ingress : 도메인 또는 경로별 라우팅
- 전부 다 노드밸런서 등 만들면 자원 낭비가 큼
- 새로 만들지 않고 Nginx, HAProxy 등 재활용해서 쿠버네티스에 맞게 포장해서 사용
-
일반적 구성 : Deployment 생성 -> ClusterIP -> Ingress 붙임(로드밸런서 자동으로 따라옴)
- 실제 클라이언트는 도메인으로 접속 -> 로드밸런서 -> 클러스터IP -> Pod 연결
-
그 외 기본 오브젝트
- Volume - Storage(EBS, NFS,...)
- Namespace - 논리적 리소스 구분
- ConfigMap/Secret - 설정
- ServiceAccount - 권한 계정
- Rule/ClusterRole - 권한 설정(get, list, watch, create, ...)
...
- 추상화 된 오브젝트가 많지만 원리를 알면 하나씩 이해하기 용이