검색이 귀찮을 때 보려고 쿠버네티스 관련 개념을 간단하고 최대한 쉽게 정리
아래 내용은 모두 공식 문서를 참고.
Pod
- 컨테이너를 실행하기 위한 환경, 컨테이너를 둘러싼 wrapper 로 볼 수 있음
- 하나 이상의 애플리케이션 컨테이너가 포함할 수 있다.
- 여러 컨테이너로 구성된 파드도 있으나, 단일 컨테이너로 이루어진 파드가 더 일반적인 활용 사례
- 클러스터의 노드에서 실행되도록 스케줄링 된다.
Node
- 노드에서 파드 내에 컨테이너를 배치/실행해 워크 로드를 구동한다.
- 클러스터에는 여러 개의 노드가 있다.
Cluster
- 노드들의 집합. 모든 클러스터는 최소 한 개의 워커 노드를 가진다.
컨트롤 플레인
- 클러스터에 대한 대한 전반적인 결정(스케줄링 등)을 수행
- 클러스터 이벤트를 감지하고 반응한다.
- 예를 들어 디플로이먼트의 replicas field 요구 조건을 파악하고 파드를 구동시키는 등..
ReplicaSet
- 파드 집합의 실행을 안정적으로 유지시켜주는 역할을 한다.
- 명시된 동일 파드 개수에 대한 가용성을 보증한다.
- 스스로 종료되는 것이 예상되는 파드는 레플리카셋 대신 잡을 이용한다 (배치 잡)
HPA
- Horizontal Pod Autoscaler.
- 레플리카셋은 HPA에 의해 오토 스케일 될 수 있다. CPU, memory 등 리소스 사용량을 설정하고 이를 초과하거나 미달할 때 min, max 값으로 변경될 수 있도록 한다.
Deployment
- 애플리케이션 배포의 기본 단위가 되는 리소스로, 가장 널리 사용된다.
- 디플로이먼트는 레플리카셋을 관리한다. 레플리카셋을 이용해 pod 업데이트, 이력 관리, 롤백/리비전을 한다.
- 때문에 레플리카셋보다 디플로이먼트 파일을 직접 다룬다.
- 예를 들어 Deployment의 image가 변경되면 디플로이먼트는 기존 레플리카셋의 파드를 줄이고, 새로운 레플리카셋의 파드를 늘려 배포를 진행한다.
- 여러 가지 배포 전략이 있다.
- Recreate
- 기존 버전 제거 -> 새 버전 배포
- downtime 발생하지만 비용이 적게 들고 설정이 간편함. 개발 환경에 적절
- RollingUpdate
- 무중단 배포 전략. 한번에 N개씩 제거, 생성
- Recreate
Service
- 파드는 생기고 사라지는 것을 반복하기 때문에, 쿠버네티스는 파드에 바로 접근하기보다 서비스를 통해 pod에 접근하도록 함
- 셀렉터를 통해 관리하고자 하는 pod를 정의한다.
- Service 종류
- Cluster IP
- 디폴트 설정. 서비스에 내부 IP를 할당함
- 클러스터 내에서 접근 가능하나, 외부에서는 접근 불가능
- NodePort
- 모든 노드에 포트를 오픈해, 어떤 노드에서도 지정한 파드에 접근 가능
- LoadBalancer
- 외부 IP를 가지고 있어 클러스터 외부에서도 접근 가능
- ExternalName
- 외부 서비스를 클러스터 내부에서 호출 시 사용
- Cluster IP
Ingress
- 클러스터 내의 서비스에 대한 외부 접근을 관리하는 리소스 (일반적으로 http)
- 트래픽 라우팅
- 인그레스 컨트롤러가 있어야 인그레스를 충족할 수 있다.
- 여러 가지 컨트롤러가 있다. nginx, haproxy, traefik, alb 등
PREVIOUS파이썬 클린 코드 짧게 요약 (1)
NEXTistio 기본 개념과 구조