이 페이지에서는 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 |
Standard | Linux |
|
Standard | 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 노드에 대한 로그를 확인할 수 있습니다.
알려진 문제 및 문제 해결
문제 해결 및 알려진 문제와 해결 방법을 보려면 컨테이너 런타임 문제 해결을 참조하세요.
다음 단계
- Kubernetes 1.11 공지에서 containerd 통합 자세히 알아보기. 그 외 자세한 내용은 containerd 및 CRI 플러그인 문서를 참조하세요.
- kubernetes.io의 Dockershim 정보에서 마이그레이션 검토
- Kubernetes의 Dockersim 지원 중단 읽어 보기
- containerd에서 gVisor를 사용하여 앱을 보호하는 방법 알아보기
- Docker가 필요할 수 있는 커스텀 솔루션을 대체하기 위해 Cloud Build를 사용하여 Google Cloud에서 이미지를 안전하고 안정적으로 빌드할 때의 이점에 대해 알아보세요.
- GKE 노드에서 containerd 구성 맞춤설정