컨테이너 런타임 변경

이 페이지에서는 클러스터가 Kubernetes 포드를 실행하는 데 사용하는 컨테이너 런타임을 지정하는 방법을 설명합니다. 클러스터 구성 파일에서 containerRuntime 필드 값을 설정하여 컨테이너 런타임을 지정합니다.

클러스터를 업그레이드하거나 설치할 때만 containerRuntime 필드 값을 변경할 수 있습니다. 이 필드는 선택사항이며 정의되지 않은 상태로 둘 경우 기본값은 containerd입니다.

Kubernetes 1.24에서 Docker Engine 지원 종료

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

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

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

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

Docker는 관리자 워크스테이션에 설치해야 합니다. bmctl 명령어에는 클러스터 생성과 같은 작업에 Docker가 필요합니다. 이 Docker 사용은 dockershim 지원 중단의 영향을 받지 않습니다.

클러스터에 사용되는 컨테이너 런타임을 지정하는 방법에 대한 자세한 내용은 다음 섹션을 참조하세요.

시작하기 전에

  • 클러스터에 사용하려는 컨테이너 런타임을 식별합니다. 클러스터를 업그레이드 또는 설치할 때만 컨테이너 런타임 필드 값을 변경할 수 있습니다.

  • 배포에서 containerd 버전 1.4.6 이상이 지원되는지 확인합니다. Anthos clusters on bare metal은 이전에 설치된 containerd 버전 위에 이 버전을 설치합니다.

  • Anthos clusters on bare metal이 두 런타임에 모두 설치된 다음 파일을 설치할 수 있는지 확인합니다.

    • 바이너리 파일

      • /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 clusters on bare metal이 선택한 런타임에 따라 노드에 다음 인증서를 설치할 수 있는지 확인하세요.

    • containerd:
      • /etc/docker/certs.d/
      • /etc/containerd/certs.d/
    • Docker: /etc/docker/certs.d/

새 클러스터의 컨테이너 런타임 구성

새 클러스터의 컨테이너 런타임을 설정하려면 클러스터 구성 파일의 spec 아래에 있는 nodeConfig 섹션에서 containerRuntime 필드를 설정합니다. Anthos clusters on bare metal은 다음 값을 지원합니다.

  • containerd
  • docker

필드가 비어 있거나 설정되지 않았으면 Anthos clusters on bare metal에 기본적으로 containerd가 사용됩니다. Docker를 사용하려면 구성 항목이 다음 예시와 비슷하게 표시됩니다.

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

클러스터를 업그레이드할 때 컨테이너 런타임 구성

업그레이드할 때 다른 컨테이너 런타임을 사용하도록 Anthos clusters on bare metal을 구성할 수 있습니다. 클러스터를 업그레이드 또는 설치할 때만 컨테이너 런타임 필드 값을 변경할 수 있습니다.

요구사항

  • 관리자 클러스터를 사용자 클러스터보다 먼저 업그레이드합니다.
  • 클러스터를 업그레이드하기 전 구성 파일에서 containerRuntime 필드의 값을 설정합니다.

런타임을 Docker로 변경

업그레이드 동안 컨테이너 런타임을 설정하려면 클러스터 구성 파일의 spec 아래에 있는 nodeConfig 섹션에서 containerRuntime 필드를 설정합니다. Anthos clusters on bare metal은 다음 값을 지원합니다.

  • containerd
  • docker

Docker를 사용하려면 다음 예시와 같이 구성 파일을 변경합니다.

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

업그레이드의 일부로 클러스터 노드의 컨테이너 런타임을 docker로 설정하려면 다음 명령어를 실행하여 클러스터를 업그레이드합니다.

bmctl upgrade cluster

Docker를 런타임으로 설정하여 클러스터 업데이트

컨테이너 런타임을 docker로 설정하면 다음 명령어는 /etc/containerd/certs.d/의 이미지 레지스트리 인증서를 업데이트합니다.

bmctl update cluster

컨테이너를 런타임으로 사용하는 클러스터 재설정

기본 컨테이너 런타임을 사용하는 경우 다음 명령어는 구성, 바이너리 파일 또는 디렉터리를 삭제하지 않습니다.

bmctl reset cluster

재설정 중에는 containerd 서비스가 계속 실행되지만 Kubernetes에 예약된 컨테이너가 중지되고 containerd 런타임에서 중지 및 삭제됩니다.

다음 바이너리 파일 및 디렉터리를 삭제하여 재설정을 완료하세요.

  • /etc/crictl.yaml
  • /etc/systemd/system/containerd.service
  • /etc/systemd/system/containerd.service.d/
  • /etc/containerd/config.toml
  • /etc/containerd/certs.d/

Docker를 런타임으로 사용하는 경우 재설정 중에 삭제가 수행되지 않습니다.

런타임 상태 확인

머신 상태 확인 중 런타임 상태를 확인하려면 다음 명령어를 실행합니다.

systemctl status RUNTIME

RUNTIME을 선택한 런타임(containerd 또는 docker)으로 바꿉니다.