Containerd 노드 이미지

이 페이지에서는 Google Kubernetes Engine(GKE) 노드에서 containerd를 컨테이너 런타임으로 사용하는 노드 이미지에 대한 정보를 제공합니다.

containerd 정보

컨테이너 런타임은 컨테이너를 실행할 책임이 있는 소프트웨어이며 Kubernetes의 컨테이너 관리를 추상화합니다. 컨테이너 런타임은 여러 가지가 있습니다.

containerd 런타임은 Kubernetes에서 지원되고 여러 프로젝트에서 자주 사용되는 업계 표준 컨테이너 런타임입니다. containerd 런타임은 GKE 기능을 확장할 수 있는 gVisor이미지 스트리밍과 같은 다양한 기능을 구현할 수 있는 레이어 추상화를 제공합니다.

containerd 런타임은 Docker 런타임보다 리소스 효율과 보안성이 높은 것으로 간주됩니다.

GKE 클러스터에서 containerd 이미지 사용

새 GKE 클러스터 또는 기존 클러스터에 새 노드 풀을 만들거나 기존 클러스터를 업그레이드할 때 containerd 노드 이미지를 사용하도록 선택할 수 있습니다. GKE Autopilot 클러스터는 항상 containerd를 포함한 Container-Optimized OS를 사용합니다.

다음 표에서는 클러스터 모드 및 노드 풀 OS에 따라 지원되는 containerd 노드 이미지를 보여줍니다.

클러스터 모드 노드 풀 OS 노드 이미지
Autopilot Linux cos_containerd
표준 Linux
  • cos_containerd
  • ubuntu_containerd
표준 Windows Server

이 이미지를 사용하려면 GKE 버전 1.21.1-gke.2200 이상이 필요합니다.

권한이 있는 포드를 사용하여 Docker 액세스

사용자가 권한이 있는 포드를 사용해서 노드에 있는 Docker Engine에 액세스하는 경우 Docker에서 직접 의존하지 않도록 해당 워크로드를 업데이트해야 합니다. 예를 들어 Docker Engine에서 GKE 시스템 부가기능으로 로깅 및 모니터링 추출 프로세스를 마이그레이션할 수 있습니다.

containerd를 사용하여 컨테이너 이미지 빌드

containerd를 사용해서 컨테이너 이미지를 빌드할 수는 없습니다. containerd가 있는 Linux 이미지에는 Docker 바이너리가 포함되므로 Docker를 사용해서 이미지를 빌드하고 푸시할 수 있습니다. 하지만 개별 컨테이너 및 로컬 노드를 사용해서 이미지 빌드 명령어를 실행하는 것은 권장되지 않습니다.

Kubernetes는 Kubernetes 범위 외부의 로컬 프로세스에서 사용되는 시스템 리소스를 인식하지 않으며, 리소스를 할당할 때 Kubernetes 제어 영역이 이러한 프로세스를 고려할 수 없습니다. 그 결과 GKE 워크로드에 리소스가 부족해지거나 노드가 불안정해질 수 있습니다.

개별 컨테이너 범위를 벗어난 다른 서비스(예: Cloud Build)를 사용하거나 kaniko와 같은 도구로 이미지를 Kubernetes 워크로드로 빌드하여 이러한 작업을 수행하는 것이 좋습니다.

이러한 대안이 사례에 맞지 않고 위험 요소를 이해하고 있을 경우에는 로컬 노드에서 Docker를 계속 사용하여 이미지를 빌드할 수 있습니다. GKE 클러스터에서 사용할 수 있으려면 먼저 레지스트리에 이미지를 푸시해야 합니다. containerd가 있는 Kubernetes에는 Docker를 사용하여 로컬로 빌드된 이미지가 인식되지 않습니다.

containerd 노드에서 컨테이너 디버깅

Linux 노드에서 디버깅 또는 문제 해결을 위해 개발자는 Kubernetes 컨테이너 런타임용으로 빌드된 간이 명령줄 도구인 crictl을 사용하여 containerd와 상호작용할 수 있습니다. crictl은 컨테이너 및 이미지 보기, 로그 읽기, 컨테이너에서 명령어 실행을 수행하는 일반 기능을 지원합니다. 지원되는 전체 기능 및 사용 정보는 crictl 사용자 가이드를 참조하세요.

Windows Server 노드의 경우 containerd 데몬이 containerd라는 이름의 Windows 서비스로 실행됩니다.

로그가 다음과 같이 제공됩니다.

  • Windows: C:\etc\kubernetes\logs\containerd.log
  • Linux: journalctl -u containerd 실행

또한 LOG NAME: "container-runtime" 아래의 로그 탐색기에서 Windows 및 Linux 노드에 대한 로그를 확인할 수 있습니다.

알려진 문제 및 문제 해결

문제 해결 및 알려진 문제와 해결 방법을 보려면 컨테이너 런타임 문제 해결을 참조하세요.

다음 단계