제9장. 포드와 네임스페이스
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
쿠버네티스 API에서 가장 중요한 기본 단위는 Pod 입니다. Pod를 사용하면 컨테이너화된 애플리케이션을 실행할 수 있습니다. 실제로는 Pod와 컨테이너 간에 일대일 매핑이 자주 발생하지만, 단일 Pod에 여러 컨테이너를 선언하는 것이 유리한 사용 사례도 있습니다.
다중 컨테이너 포드는 스토리지 볼륨이나 네트워크 네임스페이스 같은 리소스를 공유해야 하는 긴밀하게 결합된 프로세스에 유용합니다. 사이드카 패턴(로그 수집, 모니터링 에이전트), 어댑터 패턴(출력 형식 표준화), 앰배서더 패턴(프록시 연결), 초기화 컨테이너(메인 컨테이너 시작 전 설정 작업 수행) 같은 사용 사례를 충족시킵니다. 개요는 쿠버네티스 블로그를 참조하세요.
컨테이너 실행 외에도, Pod는 스토리지, 구성 데이터 등 다른 서비스를 소비할 수 있습니다. 따라서 Pod를 컨테이너 실행을 위한 래퍼로 생각하되, 동시에 크로스커팅 및 특수화된 쿠버네티스 기능을 혼합할 수 있는 것으로 이해하십시오.
Pod 작업
이 장에서는 단일 컨테이너만 실행하는 Pod 작업 방법을 살펴봅니다. 명령형 및 선언형 접근법을 사용하여 생성, 수정, 상호작용, 삭제하는 데 필요한 모든 중요한 kubectl 명령어를 다룰 것입니다.
Pod 생성
Pod 정의 는 각 컨테이너에 대한 이미지를 명시해야 합니다. Pod 객체를 명령형 또는 선언형 방식으로 생성하면 스케줄러가 Pod를 노드에 할당하고, 컨테이너 런타임 엔진이 해당 노드에 컨테이너 이미지가 이미 존재하는지 확인합니다. 이미지가 아직 존재하지 않으면 엔진은 컨테이너 런타임에서 기본값으로 정의된 컨테이너 이미지 레지스트리에서 이미지를 다운로드합니다. 노드에 이미지가 존재하는 즉시 컨테이너가 인스턴스화되어 실행됩니다. 그림 9-1은 실행 흐름을 보여줍니다.
그림 9-1. 컨테이너 런타임 인터페이스와 컨테이너 이미지 간의 상호작용
run 명령어 는 명령형 방식으로 Pod를 생성하는 핵심 진입점입니다. 사용법과 반드시 숙지하고 연습해야 할 주요 명령줄 옵션에 대해 살펴보겠습니다. 포드 내에서 Hazelcast 인스턴스를 실행한다고 가정해 보겠습니다. 컨테이너는 최신 Hazelcast 이미지를 사용해야 하며, 포트 5701을 노출하고 환경 변수를 정의해야 합니다. 또한 포드에 두 개의 레이블을 할당하고자 합니다. 다음 명령형 명령은 이 정보를 결합하며 실행 중인 객체를 추가로 수정할 필요가 없습니다:
$ kubectl ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access