컨테이너 런타임을 Docker에서 containerd로 변경

클러스터는 컨테이너 런타임을 사용하여 Kubernetes 포드를 만들고 실행합니다. 베어메탈용 Anthos 클러스터 버전 1.13 이전에서는 컨테이너 런타임이 Docker Engine 또는 containerd일 수 있습니다. 그러나 컨테이너 런타임은 베어메탈용 Anthos 클러스터 버전 1.13부터 containerd입니다.

클러스터에서 Docker Engine을 컨테이너 런타임으로 사용하면 이 컨테이너 런타임을 containerd로 변경해야 합니다. 이 페이지에서는 컨테이너 런타임을 containerd로 설정하는 방법을 설명합니다.

클러스터 구성 파일에서 containerRuntime 필드 값을 설정하여 컨테이너 런타임을 지정합니다. 하지만 이 필드 값 설정이나 변경만으로는 부족합니다. 변경사항을 적용하려면 새 클러스터를 만들거나 기존 클러스터를 업그레이드해야 합니다. 즉, 새 클러스터를 만들거나 기존 클러스터를 업그레이드하는 경우에만 컨테이너 런타임을 변경할 수 있습니다.

Kubernetes 1.24에서 Docker Engine 지원 종료

Kubernetes의 dockershim 구성요소를 사용하면 클러스터 노드가 Docker Engine 컨테이너 런타임을 사용할 수 있습니다. 그러나 Kubernetes 1.24는 dockershim 구성요소를 삭제했습니다. 베어메탈용 Anthos 클러스터 버전 1.13은 Kubernetes 1.24에서 실행되므로 버전 1.13 이상 클러스터에서는 더 이상 Docker Engine을 컨테이너 런타임으로 사용할 수 없습니다.

클러스터를 업그레이드하거나 만들 때 다음 컨테이너 런타임 규칙에 유의하세요.

  • 버전 1.13 이상의 클러스터에는 containerd를 사용해야 합니다.
  • Docker Engine 컨테이너 런타임을 사용하는 버전 1.12 클러스터는 만들 수 없습니다.
  • Docker Engine을 사용하는 1.11 클러스터를 Docker Engine을 사용하는 1.12 클러스터로 업그레이드할 수 있습니다. 그러나 업그레이드하기 전에 containerd로 전환하는 것이 좋습니다.

이미지를 만들기 위해 개발에서 사용하는 Docker 설치는 Kubernetes 클러스터 내의 Docker Engine 컨테이너 런타임과 관련이 없습니다. 여전히 Docker를 사용하여 이미지를 만들고 애플리케이션 컨테이너를 빌드할 수 있습니다. 이러한 컨테이너는 클러스터 내에서 계속 작동합니다.

bmctl 명령어에는 클러스터 만들기와 같은 작업에 사용되는 Docker가 필요하므로 관리자 워크스테이션에 Docker를 계속 설치해야 합니다. 이 Docker 사용은 dockershim 지원 중단의 영향을 받지 않습니다.

컨테이너 런타임을 docker에서 containerd로 변경하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.

시작하기 전에

  • 클러스터를 업그레이드할 때 사용자 클러스터를 업그레이드하기 전에 관리자 클러스터를 업그레이드해야 합니다.

  • 배포에서 containerd 버전 1.4.6 이상이 지원되는지 확인합니다. 베어메탈용 Anthos 클러스터는 이전에 설치된 containerd 버전 위에 이 버전을 설치합니다.

  • 베어메탈용 Anthos 클러스터에서 다음 파일을 설치할 수 있는지 확인합니다.

    • 바이너리 파일

      • /usr/bin/containerd
      • /usr/bin/containerd-shim
      • /usr/bin/containerd-shim-runc-v1
      • /usr/bin/containerd-shim-runc-v2
      • /usr/bin/crictl
      • /usr/bin/ctr
      • /usr/local/sbin/runc
    • 구성 파일

      • /etc/crictl.yaml
      • /etc/systemd/system/containerd.service
      • /etc/containerd/config.toml
      • /etc/containerd/certs.d/
      • /etc/systemd/system/containerd.service.d/09-proxy.conf 이 파일은 HTTP 프록시를 구성하는 경우에만 설치됩니다.
  • 베어메탈용 Anthos 클러스터가 노드에 /etc/containerd/certs.d/ 인증서를 설치할 수 있는지 확인합니다.

containerd를 새 클러스터의 컨테이너 런타임으로 설정

클러스터 구성 파일의 spec.nodeConfig 섹션이 비어 있거나 설정되지 않은 경우 새 클러스터가 생성될 때 클러스터의 컨테이너 런타임은 containerd로 자동 설정됩니다.

그러나 명시적으로 containerd를 새 클러스터의 컨테이너 런타임으로 설정하려면 클러스터 구성 파일의 spec.nodeConfig 섹션에서 containerRuntime 필드를 containerd로 설정합니다. 이렇게 하면 클러스터 구성이 다음과 같이 표시됩니다.

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
spec:
  nodeConfig:
    containerRuntime: containerd

이 클러스터 구성 파일을 사용하여 새 클러스터를 만들 때 컨테이너 런타임은 containerd입니다.

클러스터 업그레이드 시 컨테이너 런타임을 docker에서 containerd로 변경

클러스터를 업그레이드할 때 컨테이너 런타임을 docker에서 containerd로 변경하려면 다음 단계를 완료합니다.

  1. 클러스터 구성 파일의 spec.nodeConfig 섹션에서 containerRuntime 필드를 docker에서 containerd로 변경합니다. 이렇게 하면 클러스터 구성이 다음과 같이 표시됩니다.

    apiVersion: baremetal.cluster.gke.io/v1
    kind: Cluster
    metadata:
      name: cluster1
      namespace: cluster-cluster1
    spec:
      nodeConfig:
        containerRuntime: containerd
    
  2. 다음 명령어를 실행하여 클러스터를 업그레이드합니다.

    bmctl upgrade cluster -c CLUSTER_NAME --kubeconfig=ADMIN_KUBECONFIG
    

    다음을 바꿉니다.

    • CLUSTER_NAME을 업데이트하려는 클러스터 이름을 바꿉니다.
    • ADMIN_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로

컨테이너 런타임 상태 확인

컨테이너 런타임 상태를 확인하려면 다음 명령어를 실행합니다.

systemctl status containerd

클러스터 업그레이드 시 컨테이너 런타임을 containerd에서 docker로 변경

베어메탈용 Anthos 클러스터 버전 1.11에서 1.12로 업그레이드할 때 컨테이너 런타임을 사용할 수 있습니다. 그러나 Docker Engine 컨테이너 런타임이 버전 1.13.0 이상에서 지원되지 않으므로 containerd를 사용하는 것이 좋습니다.