컨테이너
컨테이너 (Containers)
이 페이지에서는 컨테이너와 컨테이너 이미지, 그리고 이들이 운영과 솔루션 개발에서 어떻게 쓰이는지 함께 살펴봐요.
'컨테이너'라는 단어는 뜻이 겹쳐 쓰이는 용어예요. 이 단어를 쓸 때는 듣는 사람이 같은 정의로 이해하고 있는지 한번 확인해 보세요.
실행하는 컨테이너는 하나하나가 반복 가능해요. 의존성이 컨테이너에 포함되어 있어서 표준화되기 때문에, 어디서 실행하든 같은 동작을 보장받을 수 있어요.
컨테이너는 애플리케이션을 아래에 깔린 호스트 인프라로부터 분리해 줘요. 덕분에 서로 다른 클라우드나 OS 환경에서도 배포가 훨씬 쉬워져요.
쿠버네티스 클러스터의 각 노드는 그 노드에 할당된 파드(Pod)를 이루는 컨테이너들을 실행해요. 같은 파드 안의 컨테이너들은 같은 노드에서 같은 장소에 함께 배치되고, 함께 스케줄링되어 실행돼요.
출처: 문서
본문
컨테이너 이미지 (Container images)
컨테이너 이미지는 애플리케이션을 실행하는 데 필요한 모든 것을 담은, 바로 실행 가능한 소프트웨어 패키지예요. 여기에는 코드와 필요한 런타임, 애플리케이션과 시스템 라이브러리, 그리고 필수 설정의 기본값이 모두 포함돼요.
컨테이너는 기본적으로 상태가 없는(stateless)·불변(immutable) 상태를 의도하고 설계돼요. 이미 실행 중인 컨테이너의 코드를 바꾸면 안 되죠. 컨테이너화된 애플리케이션이 있고 변경하고 싶다면, 그 변경을 포함한 새 이미지를 빌드한 뒤 컨테이너를 다시 만들어 업데이트된 이미지에서 시작하는 것이 올바른 과정이에요.
컨테이너 런타임 (Container runtimes)
쿠버네티스가 컨테이너를 효과적으로 실행하도록 만드는 핵심 구성 요소예요. 쿠버네티스 환경 안에서 컨테이너의 실행과 수명주기(lifecycle)를 관리하는 역할을 담당해요.
쿠버네티스는 containerd, CRI-O 그리고 쿠버네티스 CRI(Container Runtime Interface, 컨테이너 런타임 인터페이스)를 구현한 다른 어떤 런타임도 지원해요.
보통은 클러스터가 파드의 기본 컨테이너 런타임을 고르도록 두면 돼요. 클러스터 안에서 여러 컨테이너 런타임을 써야 한다면, 파드에 RuntimeClass를 지정해서 쿠버네티스가 특정 컨테이너 런타임으로 그 컨테이너들을 실행하게 만들 수 있어요.
같은 컨테이너 런타임이지만 설정이 다른 상태로 서로 다른 파드를 실행할 때도 RuntimeClass를 쓸 수 있어요.