컨테이너 런타임은 Kubernetes 노드에서 컨테이너 및 컨테이너 이미지를 관리하는 소프트웨어입니다. containerd는 CNCF(Cloud Native Cloud Foundation) 졸업 컨테이너 런타임입니다. 이 소프트웨어는 Kubernetes를 기본적으로 지원하며, Kubernetes용 Docker Engine보다 리소스 효율성 및 보안 수준이 높은 것으로 간주됩니다. Kubernetes 1.20까지 Docker Engine은 기본 컨테이너 런타임이었습니다. 하지만 Kubernetes의 Docker Engine 통합 코드인 Dockershim은 Kubernetes 1.20에서 지원 중단되었으며 Kubernetes 1.24에서 삭제되었습니다.
이제 클러스터에서 containerd를 사용해야 합니다.
관리자 클러스터에서 containerd 지원
Google Distributed Cloud는 모든 관리자 클러스터 노드에 containerd를 사용합니다.
사용자 클러스터에서 containerd 지원
Google Distributed Cloud는 사용자 클러스터 노드에 다음과 같은 OS 이미지 유형을 지원합니다.
OS 이미지 유형
컨테이너 런타임
ubuntu_containerd
containerd
cos
containerd
windows
containerd
제한 및 권장사항
버전 1.13.0부터 Google Distributed Cloud는 더 이상 ubuntu OS 이미지 유형을 지원하지 않습니다. 모든 클러스터 노드는 containerd 런타임을 사용해야 합니다.
Docker Engine을 사용하는 클러스터를 버전 1.13으로 업그레이드할 수 없습니다. 1.13으로 업그레이드하기 전에 containerd 런타임을 사용하도록 클러스터를 업데이트해야 합니다.
버전 1.12.0부터는 ubuntu OS 이미지 유형을 사용하는 새로운 클러스터를 더 이상 만들 수 없습니다. 즉, 더 이상 Docker Engine 컨테이너 런타임을 사용하는 새 클러스터를 만들 수 없습니다.
Docker Engine을 사용하는 노드 풀 확인
Ubuntu
Docker Engine을 사용하는 Ubuntu 노드 풀을 나열합니다.
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get onpremnodepools \
-o json -A | jq -r '.items[] |select(.spec.osImageType == "ubuntu")|.metadata.name'
USER_CLUSTER_KUBECONFIG를 사용자 클러스터 kubeconfig 파일 경로로 바꿉니다.
출력 예시:
ubuntu-node-pool-1
ubuntu-node-pool-3
Windows
사용자 클러스터의 모든 Windows 노드 풀은 동일한 컨테이너 런타임을 사용합니다. Windows 노드의 런타임은 사용자 클러스터 구성 파일의 필드인 enableWindowsDataplaneV2 값에 따라 결정됩니다.
enableWindowsDataplaneV2가 true이면 사용자 클러스터의 모든 Windows 노드가 containerd를 사용합니다. false인 경우 모든 Windows 노드가 Docker Engine을 사용합니다.
다음 명령어를 실행하여 enableWindowsDataplaneV2가 false로 설정된 사용자 클러스터를 확인합니다. 이를 통해 Windows 노드용 Docker Engine을 사용하도록 구성된 사용자 클러스터를 알 수 있습니다.
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremuserclusters \
-A -o json | jq -r '.items[] |select(.spec.enableWindowsDataplaneV2 == false)|.metadata.name'
출력에는 Windows 노드에 Docker Engine을 사용하도록 구성된 모든 사용자 클러스터가 나열됩니다. 예를 들면 다음과 같습니다.
user-cluster-1
사용자 클러스터에 Windows 노드 풀이 있는지 여부에 관계없이 클러스터의 enableWindowsDataplaneV2가 false로 설정된 경우 버전 1.13으로 업그레이드할 수 없습니다.
containerd를 사용하도록 Linux 노드 풀 업데이트
사용자 클러스터 구성 파일의 각 노드 풀에 대해 osImageTypeubuntu_containerd 또는 cos를 설정합니다.
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["이해하기 어려움","hardToUnderstand","thumb-down"],["잘못된 정보 또는 샘플 코드","incorrectInformationOrSampleCode","thumb-down"],["필요한 정보/샘플이 없음","missingTheInformationSamplesINeed","thumb-down"],["번역 문제","translationIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-07-22(UTC)"],[],[],null,["The\n[container runtime](https://kubernetes.io/docs/setup/production-environment/container-runtimes/)\nis software that is responsible for managing containers and container images on\na Kubernetes node. [containerd](https://containerd.io/) is a\n[CNCF (Cloud Native Cloud Foundation) graduated](https://www.cncf.io/announcements/2019/02/28/cncf-announces-containerd-graduation/)\ncontainer runtime. It supports Kubernetes natively, and is considered more\nresource efficient and secure than the Docker Engine for Kubernetes. Until\nKubernetes 1.20, [Docker Engine](https://docs.docker.com/engine/) was the\nprimary container runtime. However, Dockershim, the Docker Engine integration\ncode in Kubernetes, was deprecated in Kubernetes 1.20, and has been removed in\nKubernetes 1.24.\n\nGoing forward, you should use containerd in your clusters.\n\nSupport for containerd in an admin cluster\n\nGoogle Distributed Cloud uses containerd for all admin cluster nodes.\n\nSupport for containerd in a user cluster\n\nGoogle Distributed Cloud supports the following\n[OS image types](/kubernetes-engine/distributed-cloud/vmware/docs/how-to/user-cluster-configuration-file-latest#nodepool-osimagetype-field)\nfor user cluster nodes:\n\n| OS image type | Container runtime |\n|---------------------|-------------------|\n| `ubuntu_containerd` | containerd |\n| `cos` | containerd |\n| `windows` | containerd |\n\nRestrictions and recommendations\n\n- Starting in version 1.13.0, Google Distributed Cloud no longer supports\n the `ubuntu` OS image type. All cluster nodes must use the containerd runtime.\n\n- You cannot upgrade a cluster that uses Docker Engine to version\n 1.13. You must update your cluster to use the containerd runtime before you\n upgrade to 1.13.\n\n- Starting in version 1.12.0, you can no longer create new clusters that use the\n `ubuntu` OS image type. That is, you can no longer create new clusters that use\n the Docker Engine container runtime.\n\nDetermine which node pools are using Docker Engine\n\nUbuntu\n\nList the Ubuntu node pools that use Docker Engine:\n\n```\nkubectl --kubeconfig USER_CLUSTER_KUBECONFIG get onpremnodepools \\\n -o json -A | jq -r '.items[] |select(.spec.osImageType == \"ubuntu\")|.metadata.name'\n```\n\nReplace \u003cvar translate=\"no\"\u003eUSER_CLUSTER_KUBECONFIG\u003c/var\u003e with the path of the user cluster\nkubeconfig file.\n\nExample output:\n\n```\nubuntu-node-pool-1\nubuntu-node-pool-3\n```\n\nWindows\n\nAll Windows node pools in a user cluster use the same container runtime. The\nruntime for Windows nodes is determined by the value of\n`enableWindowsDataplaneV2`, which is a field in the user cluster\nconfiguration'file.\n\nIf `enableWindowsDataplaneV2` is `true`, all Windows nodes in the user cluster\nuse containerd. If it is `false`, all Windows nodes use Docker Engine.\n\nRun the following command to determine which user clusters have\n`enableWindowsDataplaneV2` set to `false`. This tells you which user clusters\nare configured to use Docker Engine for Windows nodes.\n\n```\nkubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremuserclusters \\\n -A -o json | jq -r '.items[] |select(.spec.enableWindowsDataplaneV2 == false)|.metadata.name'\n```\n\nThe output lists all user clusters that are configured to use Docker Engine for\nWindows nodes. For example:\n\n```\nuser-cluster-1\n```\n\nRegardless of whether a user cluster has any Windows node pools, if the cluster\nhas `enableWindowsDataplaneV2` set to `false`, you will not be able to upgrade\nit to version 1.13.\n\nUpdate Linux node pools to use containerd\n\nFor each node pool in the user cluster configuration file, set\n[osImageType](/kubernetes-engine/distributed-cloud/vmware/docs/how-to/user-cluster-configuration-file-latest#nodepool-osimagetype-field)\n`ubuntu_containerd` or `cos`.\n\nExample:\n\n```\nnodePools\n- name: \"my-node-pool\"\n osImageType: \"ubuntu_containerd\"\n```\n\nUpdate the user cluster:\n\n```\ngkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG\n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eADMIN_CLUSTER_KUBECONFIG\u003c/var\u003e: the path of the admin custer kubeconfig\n file\n\n- \u003cvar translate=\"no\"\u003eUSER_CLUSTER_CONFIG\u003c/var\u003e: the path of the user cluster configuration\n file\n\nUpdate Windows nodes to use containerd\n\nIn the user cluster configuration file, set\n[enableWindowsDataplaneV2](/kubernetes-engine/distributed-cloud/vmware/docs/how-to/user-cluster-configuration-file-latest#enablewindowsdataplanev2-field)\nto `true`.\n\n```\nenableWindowsDataplaneV2: true\n```\n\nUpdate the user cluster:\n\n```\ngkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG\n```\n\nThe preceding command sets the container runtime to containerd for all Windows\nnodes in the cluster."]]