노드 이미지

이 페이지에서는 Google Kubernetes Engine(GKE) 노드에 사용할 수 있는 노드 이미지를 설명합니다.

GKE 클러스터 또는 노드 풀을 만들 때 각 노드에서 실행되는 운영체제 이미지를 선택할 수 있습니다. 또한 다른 노드 이미지 유형을 사용하도록 기존 클러스터를 업그레이드할 수 있습니다. 노드 이미지 설정 방법에 대한 안내는 노드 이미지 지정을 참조하세요.

사용 가능한 노드 이미지

GKE는 클러스터의 OS에 따라 다음과 같은 노드 이미지 옵션을 제공합니다.

OS 노드 이미지
Container-Optimized OS
Ubuntu
Windows Server

Container-Optimized OS

Google의 Container-Optimized OS 노드 이미지는 최신 버전의 Linux 커널을 기반으로 하며 노드 보안을 향상시키도록 최적화되어 있습니다. Container-Optimized OS 이미지는 보안을 위해 이미지를 빠르게 패치하고 기능을 반복할 수 있는 Google 팀이 지원합니다. Container-Optimized OS 이미지는 다른 이미지보다 우수한 지원, 보안, 안정성을 제공합니다.

이미지 프로젝트와 계열에 대한 자세한 내용은 운영체제별 기능 지원을 참조하세요.

Container-Optimized OS 변이

Container-Optimized OS와 함께 2개의 컨테이너 런타임이 제공됩니다. 이미지는 컨테이너 런타임 선택을 제외하고는 이와 동일합니다.

  • Containerd가 포함된 Container-Optimized OS(cos_containerd): cos_containerd 이미지는 Kubernetes와 직접 통합된 컨테이너 런타임으로 Containerd를 사용합니다. 자세한 내용은 Containerd 이미지 사용을 참조하세요.
  • Docker를 포함하는 Container-Optimized OS(cos): cos 이미지는 Docker 컨테이너 런타임을 사용합니다.

Ubuntu

Ubuntu 노드 이미지는 GKE 노드 이미지 요구 사항에 맞게 검증되었습니다. 노드에 XFS, CephFS 또는 Debian 패키지 지원이 필요하면 Ubuntu 노드 이미지를 사용해야 합니다.

이미지 프로젝트와 계열에 대한 자세한 내용은 운영체제별 기능 지원을 참조하세요.

Ubuntu 변이

2개의 컨테이너 런타임이 Ubuntu와 함께 제공됩니다. 이미지는 컨테이너 런타임 선택을 제외하고는 이와 동일합니다.

  • Containerd가 포함된 Ubuntu(ubuntu_containerd): ubuntu_containerd 이미지는 컨테이너 런타임으로 Containerd를 사용합니다. 자세한 내용은 Containerd 이미지 사용을 참조하세요.

  • Docker가 포함된 Ubuntu(ubuntu): ubuntu 이미지는 Docker를 컨테이너 런타임으로 사용합니다.

Windows Server LTSC 및 Windows Server SAC

Windows Server 노드 풀을 사용하여 클러스터를 만들 때 Windows Server 반기 채널(SAC) 또는 Windows Server 장기 서비스 채널(LTSC) 노드 이미지를 사용할 수 있습니다. 모든 Windows 노드 이미지는 Windows Server Datacenter Core 이미지입니다. 단일 클러스터는 여러 Windows Server 버전을 사용하는 여러 Windows Server 노드 풀을 가질 수 있지만, 각 개별 노드 풀은 하나의 Windows Server 버전만 사용할 수 있습니다. 자세한 내용은 Windows 노드 이미지 선택을 참조하세요.

이 이미지는 버전이 1.16.8-gke.9 이상인 클러스터에서만 사용할 수 있습니다.

이미지 프로젝트와 계열에 대한 자세한 내용은 운영체제별 기능 지원을 참조하세요.

Linux 노드 이미지 비교

다음 섹션에서는 Container-Optimized OS와 Ubuntu 노드 이미지를 다음과 같은 운영적 측면에서 비교합니다.

  • 소프트웨어 패키지 관리
  • 시스템 초기화
  • 로그 수집
  • 파일 시스템 레이아웃
  • 스토리지 드라이버 지원

소프트웨어 패키지 관리자

coscos_containerd 노드 이미지는 Docker(containerd) 컨테이너 런타임 지원이 기본 제공되는 최소 루트 파일 시스템을 사용합니다. 이 파일 시스템은 호스트에 소프트웨어를 설치하기 위한 소프트웨어 패키지 관리자로도 사용됩니다. Ubuntu 이미지는 APT 패키지 관리자를 사용합니다.

Container-Optimized OS에서 소프트웨어 관리

Container-Optimized OS 이미지는 apt-get 같은 패키지 관리 소프트웨어를 제공하지 않습니다. 기존 메커니즘을 사용하여 노드에 임의 소프트웨어를 설치할 수 없습니다. 대신 필요한 소프트웨어가 포함된 컨테이너 이미지를 만듭니다.

Container-Optimized OS에는 ping, psmisc 또는 pstree 같은 일반적인 디버깅 도구를 설치하고 실행하기 위한 CoreOS 도구 상자를 디버깅 용도로만 포함합니다.

Container-Optimized OS 노드 디버깅에 대한 자세한 내용은 Container-Optimized OS 안내 가이드를 참조하세요.

Ubuntu에서 소프트웨어 관리

Ubuntu 이미지는 APT 패키지 관리자를 사용합니다. apt-get 명령어를 사용하면 이 이미지에 패키지를 설치할 수 있습니다. 예를 들어 ceph 패키지를 설치하려면 다음 명령어를 사용하세요.

sudo apt-get update
sudo apt-get install ceph

시스템 초기화

Container-Optimized OS와 Ubuntu 노드 이미지 모두 systemd를 사용하여 시스템 초기화 프로세스 중에 시스템 리소스와 서비스를 관리합니다.

두 노드 이미지 모두 systemd 서비스 파일을 사용하여 노드에서 services를 정의하고 systemd.targets를 사용하여 종속 항목을 통해 부트 대상을 그룹화합니다.

로그 수집

Container-Optimized OS와 Ubuntu 노드 이미지는 systemd-journald를 사용하여 시스템 전체 로그를 수집합니다.

Container-Optimized OS 및 Ubuntu에서 로그 보기

Container-Optimized OS를 포함한 노드 또는 Ubuntu 노드 이미지에서 로그를 확인하려면 journalctl 명령어를 사용해야 합니다. 예를 들어 Docker 데몬 로그를 보려면 다음을 사용하세요.

sudo journalctl -u docker

kubelet 로그를 보려면 다음을 사용하세요.

sudo journalctl -u kubelet

파일 시스템 레이아웃

Ubuntu 노드 이미지는 표준 Linux 파일 시스템 레이아웃을 사용합니다.

컨테이너 최적화 OS 노드 이미지 파일 시스템 레이아웃은 노드 보안을 향상시키도록 최적화되어 있습니다. 부트 디스크 공간은 세 가지 유형의 파티션으로 나뉩니다.

  • 루트 파티션 - 읽기 전용으로 마운트됩니다.
  • 상태 저장 파티션 - 쓰기 가능하고 상태 저장 특성을 갖습니다.
  • 상태 비추적 파티션 - 쓰기 가능하지만, 재부팅할 때 콘텐츠가 지속되지 않습니다.

컨테이너 최적화 OS를 사용할 때는 컨테이너 외부의 파일 시스템 레이아웃에 대해 특정 요구 사항이 있는 고유 서비스를 실행할 경우 파티션 나누기에 주의해야 합니다.

컨테이너 최적화 OS 파일 시스템 작업

다음은 컨테이너 최적화 OS 노드 이미지 파일 시스템의 경로 목록과 그 속성 및 권장 용도를 보여줍니다.

경로 속성 목적
/
  • 읽기 전용
  • 실행 가능
루트 파일 시스템이 무결성 유지를 위해 읽기 전용으로 마운트됩니다. 커널이 부팅 중 무결성 루트 파일 시스템을 확인하고, 오류 발생 시 부팅을 거절합니다.
/home
/var
  • 쓰기 가능
  • 실행 불가능
  • 스테이트풀(Stateful)
이러한 경로는 부팅 디스크의 수명 동안 지속되는 데이터를 저장하기 위한 용도로 사용됩니다. 이러한 경로는 /mnt/stateful_partition에서 마운트됩니다.
/var/lib/google
/var/lib/docker
/var/lib/toolbox
  • 쓰기 가능
  • 실행 가능
  • 스테이트풀(Stateful)
이러한 경로는 각각 Compute Engine 패키지(예: 계정 관리자 서비스), Docker, 도구 상자의 작업 디렉터리입니다.
/var/lib/cloud
  • 쓰기 가능
  • 실행 가능
  • 스테이트리스(Stateless)
  • tmpfs
이 경로는 cloud-init 패키지의 작업 디렉터리입니다.
/etc
  • 쓰기 가능
  • 실행 불가능
  • 스테이트리스(Stateless)
  • tmpfs
/etc에는 일반적으로 구성이 저장됩니다(예: cloud-init를 통해 정의된 systemd서비스). 인스턴스를 다시 시작할 때는 물론 인스턴스를 새로 생성할 때에도 cloud-init가 적용되므로 cloud-init에서 인스턴스의 원하는 상태를 캡처하는 것이 좋습니다.
/tmp
  • 쓰기 가능
  • 실행 불가능
  • 스테이트리스(Stateless)
  • tmpfs
/tmp는 일반적으로 스크래치 공간으로 사용되며, 영구 데이터 저장을 위해 사용되지 않습니다.
/mnt/disks
  • 쓰기 가능
  • 실행 가능
  • 스테이트리스(Stateless)
  • tmpfs
/mnt/disks 아래의 디렉토리에 영구 디스크를 마운트할 수 있습니다.

저장소 드라이버 지원

각 노드 이미지는 지원하는 저장소 플러그인 종류가 다릅니다. 특정 저장소 드라이버에 대한 노드 이미지 지원을 기술할 때는 다음과 같은 용어가 사용됩니다.

  • 예 - 완전 테스트/지원: 이 저장소 플러그인은 지정된 노드 이미지에서 완전히 지원되고 테스트되었습니다.
  • 예 - 제한된 테스트: 이 저장소 플러그인은 지정된 노드 이미지에서 작동하지만 제한된 방식으로만 테스트되었습니다. 따라서 예상치 못한 동작이 발생할 수 있습니다. Container-Optimized OS의 경우, 이러한 플러그인의 완전한 테스트 및 지원이 제공될 예정입니다.
  • 지원되지 않음: 이 저장소 플러그인은 지정된 노드 이미지에서 테스트 또는 사용되지 않았으며, GKE가 어떠한 기능 보장도 제공할 수 없습니다. 이 저장소 플러그인은 테스트 계획이 없습니다.
  • 아니요: 이 저장소 플러그인은 노드 OS 또는 Google Cloud Platform에 고유한 제한으로 인해 지정된 노드 이미지에서 작동하지 않습니다.

다음 표에서는 각 GKE 노드 이미지가 몇 가지 일반적인 저장소 플러그인을 지원하는 방식을 보여줍니다.

볼륨 유형 Container-Optimized OS에서 작동 여부(cos) Ubuntu에서 작동 여부
Google Compute Engine
Persistent Disk(EXT4 또는 XFS)
예 - 완전 테스트/지원
(XFS는 지원되지 않음)
예 - 완전 테스트/지원
NFSv3 예 - 완전 테스트/지원 예 - 완전 테스트/지원
NFSv4 예 - 완전 테스트/지원 예 - 완전 테스트/지원
CephFS 아니요 예 - 제한된 테스트
(드라이버가 기본적으로 설치되지 않음. DaemonSet을 통해 ceph 클라이언트를 설치해야 함)
Cinder 아니요 아니요
Fibre 채널 아니요 아니요
Flocker 지원되지 않음 지원되지 않음
iSCSI 아니요 아니요
RBD 아니요 아니요

노드 VM 수정

노드 VM의 부팅 디스크 수정사항은 노드 재생성 시 유지되지 않습니다. 노드는 수동 업그레이드, 자동 업그레이드, 자동 복구, 자동 확장 중에 다시 생성됩니다. 또한 노드는 GKE 샌드박스, 노드 내 공개 상태, 보안 노드 같이 노드 재생성이 필요한 기능을 사용 설정할 때 다시 생성됩니다.

노드 재생성 시 수정사항을 보존하려면 DaemonSet를 사용합니다.

커널 또는 컨테이너 런타임(containerd또는 docker)과 같은 노드 이미지에서 제공하는 중요 소프트웨어를 관리하지 않는 것이 좋습니다. 노드 이미지는 광범위하게 테스트되며, 노드 이미지에서 제공하는 중요 소프트웨어를 수정하면 노드가 알 수 없고 테스트할 수 없는 상태가 됩니다.

노드 이미지 출시 노트

Container-Optimized OS

Google은 Container-Optimized OS에 대한 포괄적인 문서를 제공합니다.

Ubuntu

Google은 클러스터 노드에서 사용할 수 있는 Ubuntu 이미지를 정기적으로 업데이트합니다. 기본적으로 설치되는 패키지가 나열된 매니페스트 링크 등 이러한 업데이트에 대한 자세한 내용은 GKE 출시 노트를 참조하세요.

다음 단계