쿠버네티스 파드 생성과 사용에 대해 알아봅니다.
목차
TogglePOD 생성
Pod는 쿠버네티스에서 실행되는 최소 단위입니다. 웹서비스 구동에 필요한 최소 단위로 독립적인 공간과 사용 가능한 IP로 구성됩니다.
정리하자면 아래와 같습니다.
- 쿠버네티스의 최소 단위입니다.
- 파드 하나 안에 하나 이상의 컨테이너를 동작시킬 수 있습니다.
- 어떤 컨테이너 이미지를 사용할지 등을 결정합니다.
아래는 yaml 파일을 이용해 클터스터에 적용하는 방식을 나타내고 있습니다. yaml 파일을 사용하면 복잡한 셋팅을 명령방식으로 인프라 구성이 가능합니다.
kubectl apply -f 02_nginx_k8s.yaml
→ kubectl이라는 쿠버네티스 클러스터 관리 도구를 이용해 YAML 형식으로 작성된 매니페스트를 클러스터에 적용하는 명령입니다.
→ yaml 파일에 정의된 오브젝트가 쿠버네티스 위에 생성, 이 파일에 파드가 정의된 것입니다.
쿠버네티스 레이블
- 리소스 식별자(디플로이먼트, 서비스 매니페스트의 셀렉터 항목에 대상 파드의 레이블을 설정)
컨테이너 여러 개를 포함한 쿠버네티스 파드
- 쿠버네티스는 파드별로 다른 IP 주소를 할당하며 그 IP 주소에서 설정한 포트로 접속하는 네트워크 구조입니다.
- 파드 하나에 포함되는 컨테이너의 특징
- 로컬 호스트로 서로 통신 가능
- 스토리지(볼륨) 공유 가능
- 컨테이너들이 위 두가지 조건이 필요하면 하나의 POD로 묶어야 합니다.
- 사이드카 패턴(Sidecar) → 메인 처리를 실행하는 컨테이너 옆에 보조 역할을 하는 컨테이너를 배치하는 구성
- 메인 처리를 실행하는 컨테이너가 출력한 로그를 다른 컨테이너가 읽어 들여 로그 수집 서버나 메트릭 수집 서버에 전송
- 메인 처리를 실핸하는 컨테이너가 외부 시스템에 접속할 경우, 또 다른 컨테이너가 프록시로 되어 목적지를 할당하거나 요청이 제대로 처리되지 않았을 때 재시도 수행 → 파드 외부와의 통신 구조 사이에 프록시가 배치되어 통신에 대한 보조적인 역할을 하는 구성 : 앰버서더(Ambassador) 패턴
쿠버네티스 파드 초기화 컨테이너
- 메인 컨테이너를 동작시키기 위해 초기화 처리 담당합니다.
- 장점
- 애플리케이션 자체에 필요 없는 도구를 사용하여 초기화 처리가 가능합니다.
- 메인 컨테이너의 보안성을 낮추는 도구를 초기화 컨테이너에 분리시키면 안전하게 초기화 처리가 가능합니다.
- 초기화 처리와 애플리케이션을 서로 독립시켜 빌드, 배포 가능합니다.
- 초기화 컨테이너에서는 참조할 수 있지만 메인 컨테이너에서는 참조할 수 없는 시크릿을 설정하면 초기화 처리에만 필요하고 애플리케이션 처리에는 필요 없는 비밀 정보를 메인컨테이너에서 제외 가능합니다.
- 초기화 컨테이너가 모두 종료될 때까지 메인 컨테이너가 시작되지 않으므로, 메인 컨테이너를 생성시키는 어떤 조건을 설정하고 그 조건이 성립될 때까지 메인 컨테이너 생성 차단 가능합니다.