노드 이미지

이 페이지에서는 Google Kubernetes Engine 노드에서 사용 가능한 노드 이미지를 설명합니다. 노드 이미지 선택 방법을 알아보려면 노드 이미지 지정을 참조하세요.

개요

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

사용 가능한 노드 이미지

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

컨테이너 최적화 OS

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

containerd를 포함한 컨테이너 최적화 OS(cos_containerd)

Containerd는 중요한 기본 구성 요소이자, Docker의 핵심 런타임 구성요소입니다. cos_containerd는 기본 컨테이너 런타임이 Kubernetes와 직접 통합된 containerd를 포함한 Container-Optimized OS 이미지의 한 변형입니다.

노드 디버깅 또는 문제 해결을 위해 개발자는 Kubernetes 컨테이너 런타임용으로 작성된 이식 가능한 명령줄 도구인 crictl을 사용해서 containerd와 상호작용할 수 있습니다. crictl은 컨테이너 및 이미지 보기, 로그 읽기, 컨테이너에서의 명령어 실행을 위한 일반적인 기능을 지원합니다. 지원되는 모든 기능 및 사용 정보는 crictl 사용자 가이드를 참조하세요.

cos_containerd를 사용하려면 Kubernetes 버전 1.11.0 이상이 필요합니다.

자세한 내용은 containerd를 포함한 컨테이너 최적화 OS 사용을 참조하세요.

Ubuntu

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

노드 이미지 비교

다음 섹션에서는 컨테이너 최적화 OS와 Ubuntu 노드 이미지의 다음과 같은 운영적 측면을 비교해서 보여줍니다.

  • 자동 업그레이드 및 복구
  • 소프트웨어 패키지 관리
  • 시스템 초기화
  • 로그 수집
  • 파일 시스템 레이아웃
  • Sysdig 지원
  • 저장소 드라이버 지원

자동 업그레이드 및 복구

컨테이너 최적화 OS는 GKE의 노드 자동 업그레이드 및 노드 자동 복구 기능을 지원합니다.

Ubuntu 노드 이미지는 노드 자동 업그레이드 또는 노드 자동 복구를 지원하지 않지만, 해당 기능이 현재 개발되고 있습니다.

소프트웨어 패키지 관리자

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

컨테이너 최적화 OS에서 소프트웨어 관리

컨테이너 최적화 OS 이미지가 포함된 호스트에(즉, 컨테이너 외부에) 소프트웨어 패키지를 설치하거나 소프트웨어 패키지를 독립적으로 업그레이드할 수는 없습니다. 하지만 컨테이너 최적화 OS 노드 이미지는 몇 가지 일반적인 디버깅 도구를 포함하며, 개발자가 선택한 디버깅 도구를 실행하기 위한 toolbox 래퍼를 제공합니다. 허용되지 않는 파일 형식의 예는 다음과 같습니다.

sudo toolbox ping www.google.com
sudo toolbox apt-get install psmisc
sudo toolbox pstree -p

cos 노드 이미지가 포함된 호스트에서 래퍼를 사용하여 추가 소프트웨어를 설치하는 방법에 대한 예를 더 보려면 Container-Optimized OS 안내 가이드를 참조하세요.

Ubuntu에서 소프트웨어 관리

Ubuntu 이미지에는 Aptitude 패키지 관리자가 사전 설치되어 있습니다. 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
  • 쓰기 가능
  • 실행 불가능
  • 상태 저장
이러한 경로는 부팅 디스크의 수명 동안 지속되는 데이터를 저장하기 위한 용도로 사용됩니다. 이러한 경로는 /mnt/stateful_partition에서 마운트됩니다.
/var/lib/google
/var/lib/cloud
/var/lib/docker
/var/lib/kubelet
/var/lib/toolbox
  • 쓰기 가능
  • 실행 가능
  • 상태 저장
이러한 경로는 Compute Engine 패키지(예: 계정 관리자 서비스), cloud-init, Docker, Kubelet, Toolbox 각각에 대한 작업 디렉토리입니다.
/etc
  • 쓰기 가능
  • 실행 불가능
  • 상태 비추적
  • tmpfs
/etc에는 일반적으로 구성이 저장됩니다(예: cloud-init를 통해 정의된 systemd 서비스). 인스턴스를 다시 시작할 때는 물론 인스턴스를 새로 생성할 때에도 cloud-init가 적용되므로, cloud-init에서 인스턴스의 원하는 상태를 캡처하는 것이 좋습니다.
/tmp
  • 쓰기 가능
  • 실행 불가능
  • 상태 비추적
  • tmpfs
/tmp는 일반적으로 스크래치 공간으로 사용되며, 영구 데이터 저장을 위해 사용되지 않습니다.
/mnt/disks
  • 쓰기 가능
  • 실행 가능
  • 상태 비추적
  • tmpfs
/mnt/disks 아래의 디렉토리에 영구 디스크를 마운트할 수 있습니다.

저장소 드라이버 지원

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

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

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

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

노드 VM 수정

노드 VM의 부팅 디스크에서의 수정은 노드 재생성 시 지속되지 않습니다. 노드는 수동 업그레이드, 자동 업그레이드, 자동 복구, 자동 확장 중에 다시 생성됩니다. 노드 재생성 시 수정을 보존하려면 DaemonSet를 사용하세요.

노드 이미지 출시 노트

Container-Optimized OS

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

Ubuntu

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

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine