쿠버네티스 개념을 공부할때마다 나오는 pod가 대체 무엇이기에 쿠버네티스관련 개념에 항상 나오는지, 쿠버네티스의 개념과 구성요소를 이해하기 전에 먼저 이 개념을 이해하도록 한다.
이것이 Pod의 개념이다. 그러니까 컨테이너를 감싸고 있는 것이 Pod이며 컨테이너 자체는 배포할 수 없고 반드시 Pod단위로 배포된다.
(단순히 컨테이너를 감싸는 껍데기가 아니라, 컨테이너들이 공유자원을 함께 쓰도록 하는 실행 환경 단위이다.)
Pod 안에 컨테이너들
- 같은 Pod안에 컨테이너는 같은 IP주소, 같은 포트 네임스페이스를 공유한다.
- 서로 localhost로 통신이 가능하다
- 같은 Volume을 공유해서 파일도 같이 쓸 수 있다.
-> 하나의 서버안에 아주 밀접하게 연결된 컨테이너 묶음이라는 의미.
또한 Pod가 해당 노드에서 실행될 수 있도록 클러스터의 각 노드에 컨테이너 런타임을 설치해야 한다.
여러 개의 공동 배치 및 공동 관리 컨테이너를 하나의 Pod로 그룹화 하는 것은 비교적 고급 사용 사례이며 일반적인 상황은 아니다. "컨테이너가 밀접하게 결합된 특정상황" 에서만 이 패턴을 사용한다.
pods/simple-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
이 Pod를 다음과 같은 명령어를 실행하여 생성할 수 있다.
kubectl apply -f https://k8s.io/examples/pods/simple-pod.yaml
위의 글에서 "쿠버네티스는 컨테이너를 직접 관리하는 대신 Pod를 관리한다."라는 글을 통해 Pod와 쿠버네티스의 관계를 알게 되었다.
또한 전에 쓴 게시물을 통해
쿠버네티스를 통해 컨테이너를 탄력적으로 운영할 수 있으며 무중단 배포가 및 카나리아 배포가 가능하게 한다는 것을 알게되었다.
이 쿠버네티스는 어떻게 구성되어 있을까.

제어영역은 클러스터의 전반적인 상태를 관리한다.
모든 노드에서 실행되고, 실행중인 Pod를 유지 관리하며 kubernetes 런타임 환경을 제공한다.
참고자료
:[CNF-쿠버네티스 아키텍처 완벽 가이드 : 구조와 동작 원리 A to Z] https://www.cncf.co.kr/resource/kubernetes-architecture-guide/
:[쿠버네티스 공식 홈페이지 - kubernetes Components] https://kubernetes.io/docs/concepts/overview/components/
:[쿠버네티스 공식 홈페이지 - Pod]
https://kubernetes.io/docs/concepts/workloads/pods/