컨테이너 런타임 변경

Anthos clusters on bare metal은 클러스터 구성 파일에 선택적 containerRuntime 구성 필드를 추가합니다. 이 필드를 사용하여 클러스터 노드가 Kubernetes 포드용 컨테이너를 예약하는 데 사용하는 컨테이너 런타임을 구성합니다.

kubelet을 통해 컨테이너 런타임 인터페이스를 직접 호출할 수 있습니다. 이 옵션을 사용하면 Docker 데몬이 필요 없으므로 Docker와 kubelet를 분리할 수 있습니다.

이러한 변경이 필요한 이유는 Kubernetes의 목표가 Docker 데몬의 사용을 중단하고 containerd를 기본값으로 만드는 것이기 때문입니다. Kubernetes는 Kubernetes 버전 1.20부터 경고를 보내고 버전 1.24까지 지원 중단을 완료할 계획입니다. 이 변경사항은 containerd를 GKE의 기본값으로 만들기 위해 계획된 변경사항과 일치합니다.

Anthos clusters on bare metal에서는 새 containerRuntime 필드를 통해 Docker 또는 containerd를 사용하도록 kubelet를 구성할 수 있습니다. 기본적으로 kubelet은 containerd를 컨테이너 런타임으로 사용합니다.

시작하기 전에

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

  • 배포에서 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)으로 바꿉니다.