컨테이너 런타임에 containerd 사용

컨테이너 런타임은 Kubernetes 노드에서 컨테이너 및 컨테이너 이미지를 관리하는 소프트웨어입니다. containerdCNCF(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_containerdcontainerd
coscontainerd
windowscontainerd

제한 및 권장사항

  • 버전 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 값에 따라 결정됩니다.

enableWindowsDataplaneV2true이면 사용자 클러스터의 모든 Windows 노드가 containerd를 사용합니다. false인 경우 모든 Windows 노드가 Docker Engine을 사용합니다.

다음 명령어를 실행하여 enableWindowsDataplaneV2false로 설정된 사용자 클러스터를 확인합니다. 이를 통해 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 노드 풀이 있는지 여부에 관계없이 클러스터의 enableWindowsDataplaneV2false로 설정된 경우 버전 1.13으로 업그레이드할 수 없습니다.

containerd를 사용하도록 Linux 노드 풀 업데이트

사용자 클러스터 구성 파일의 각 노드 풀에 대해 osImageType ubuntu_containerd 또는 cos를 설정합니다.

예:

nodePools
- name: "my-node-pool"
  osImageType: "ubuntu_containerd"

사용자 클러스터를 업데이트합니다.

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

다음을 바꿉니다.

  • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로

  • USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일의 경로입니다.

containerd를 사용하도록 Windows 노드 업데이트

사용자 클러스터 구성 파일에서 enableWindowsDataplaneV2true로 설정합니다.

enableWindowsDataplaneV2: true

사용자 클러스터를 업데이트합니다.

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

앞의 명령어는 컨테이너 런타임을 클러스터의 모든 Windows 노드에 대해 containerd로 설정합니다.