[Kubernetes] 쿠버네티스 관련 개념정리
Kubernetes - Pod란?
1. Pod 내의 컨테이너들은 서로 IP와 Port를 공유함.
따라서, 같은 Pod 내에서는 localhost로 통신하며, 서로의 Port로 호출할 수 있음.
2. Pod 내의 컨테이너 간에는 디스크 볼륨을 공유할 수 있음. 한 컨테이너는 다른 컨테이너의 파일을 읽어올 수 있음.
쿠버네티스는 Object와 이를 관리하는 Controller로 구성되어 있다.
1) Object
-
Pod : 컨테이너화된 애플리케이션- 쿠버네티스에서 가장 기본적인 배포 단위- MSA 아키텍처에서 애플리케이션 컨테이너와, 애플리케이션에서 사용하는 주변 프로그램 컨테이너를 같이 Pod에 넣어 배포하기도 하는데, 이를 사이드카 패턴이라고 함.
-
Service : 로드밸런서
-
Volume : 디스크- 컨테이너가 restart할 때마다, 로컬 디스크의 내용이 유실됨.- 따라서, 유실되면 안되는 영구 데이터 (DB 등)는 Volume이라는 스토리지에 저장.
-
Namespace : 패키지명
2) Controller
도커와 쿠버네티스 (정말 너무 헷갈리는 개념...ㅠ)
-
도커
컨테이너 이미지 생성, 관리, 공유 및 도커 호환 호스트에 배치하여 컨테이너 구동 -
쿠버네티스
- 여러 컨테이너 애플리케이션을 여러 대의 호스트에 배치 및 관리
- 이러한 관리 도구를 컨테이너 오케스트레이션 툴이라고 함.
-
소수의 사용자를 위한 비교적 단순한 컨테이너 앱은 오케스트레이션이 필요하지 않기 때문에, 쿠버네티스가 필요 없음.
-
오케스트레이션이 필요한 경우
1) 2개 이상의 컨테이너가 관련되는 복잡한 앱
2) 확장성, 복구성이 중요한 앱
3) 현대적인 CI/CD 기법을 적용하고자 할 때
- Rolling Update, Blue-Green 배포 등 무중단 배포 방식을 사용하는 앱
- Rolling Update란 기존 버전의 인스턴스와 새 버전의 인스턴스를 동시에 운영하면서, 기존 버전 인스턴스를 하나씩 줄여가는 방식.