스토리지

이 주제에서는 GKE On-Prem의 스토리지 개념을 설명합니다.

요약

GKE On-Prem은 VMware vSphere 스토리지, Kubernetes 트리 내 볼륨 플러그인(또는 '드라이버), 컨테이너 스토리지 인터페이스(CSI) 드라이버를 통해 외부 블록 또는 파일 스토리지 시스템과 통합됩니다.

GKE On-Prem 클러스터는 기본 Kubernetes StorageClass를 사용하여 vSphere Datastore에 스테이트풀(Stateful) 워크로드를 위한 스토리지를 프로비저닝합니다. StorageClass를 사용하여 다른 스토리지 볼륨을 프로비저닝할 수도 있습니다.

vSphere 스토리지

기본적으로 GKE On-Prem 클러스터는 vSphere 스토리지를 사용합니다. 관리자 클러스터에는 etcd 데이터에 대해 사전 프로비저닝된 vSphere Datastore가 필요합니다.

사용자 클러스터를 만들 때 GKE On-Prem은 vSphere Kubernetes 볼륨 플러그인을 사용하여 vSphere Datastore에서 새 가상 머신 디스크(VMDK)를 동적으로 프로비저닝합니다. 이전 1.2 사용자 클러스터는 관리자 클러스터와 동일한 Datastore를 사용했습니다.

관리자 클러스터와 사용자 클러스터에서 사용하는 vSphere Datastore는 외부 스토리지 배열과 같은 블록 기기의 NFS, vSAN, VMFS에서 지원될 수 있습니다. 다중 호스트 환경에서 각 블록 기기는 환경의 모든 호스트에 연결되어야 하며 Datastore는 추가 호스트에 Datastore 마운트 옵션을 통해 각 호스트에 구성해야 합니다.

기본 스토리지

GKE On-Prem 클러스터에는 Kubernetes가 스토리지를 프로비저닝하는 방법을 결정하는 기본 Kubernetes StorageClass가 포함되어 있습니다. Kubernetes가 스토리지 볼륨을 프로비저닝하면 Kubernetes PersistentVolume로 표시됩니다.

사용자 클러스터의 기본 StorageClass는 vSphere Datastore를 가리키며, 이는 StorageClass 구성의 datastore 필드에 설정됩니다. 기본적으로 사용자 클러스터에 프로비저닝된 Kubernetes PersistentVolume는 해당 Datastore의 VMDK입니다. 이는 관리자 클러스터에서 사용하는 Datastore와 반드시 동일하지는 않습니다.

GKE On-Prem에서 Kubernetes StatefulSets(일반적으로 영구 스토리지가 필요한 스테이트풀(Stateful) 워크로드)는 기본적으로 vSpehre 스토리지를 가리키는 StorageClass가 지원하는 PersistentVolumeClaim를 사용합니다.

Kubernetes 트리 내 볼륨 플러그인

Kubernetes는 다양한 트리 내 볼륨 플러그인과 함께 제공됩니다. 이 중 하나를 사용하여 스테이트풀(Stateful) 워크로드에 블록 또는 파일 스토리지를 제공할 수 있습니다. 트리 내 플러그인을 사용하면 vSphere 스토리지를 거치지 않고도 워크로드를 스토리지에 직접 연결할 수 있습니다.

vSphere 스토리지는 iSCSI, FC, NFS 스토리지 기기가 지원하는 Datastore 내 볼륨의 동적 프로비저닝을 자동으로 제공하지만 트리 내 플러그인은 대부분 동적 프로비저닝을 지원하지 않습니다. 따라서 트리 내 플러그인을 사용하려면 PersistentVolume을 수동으로 만들어야 합니다.

다음 표에서는 여러 트리 내 디렉터리 볼륨 플러그인에 대해 설명합니다.

트리 내 볼륨 플러그인설명지원 액세스 모드동적 프로비저닝
Fibre 채널일반 스토리지 플러그인단일 pod 읽기/쓰기아니요
iSCSI일반 스토리지 플러그인단일 pod 읽기/쓰기아니요
NFS일반 스토리지 플러그인여러 pod 읽기/쓰기아니요
Ceph RBD오픈소스 소프트웨어 정의 스토리지단일 pod 읽기/쓰기
CephFS오픈소스 소프트웨어 정의 스토리지여러 pod 읽기/쓰기아니요
Portworx독점 소프트웨어 정의 스토리지여러 pod 읽기/쓰기
Quobyte독점 소프트웨어 정의 스토리지단일 pod 읽기/쓰기
StorageOS독점 소프트웨어 정의 스토리지단일 pod 읽기/쓰기

컨테이너 스토리지 인터페이스

컨테이너 스토리지 인터페이스(CSI)는 Kubernetes에서 임의의 스토리지 시스템을 컨테이너화된 워크로드에 노출할 수 있도록 하는 개방형 표준 API입니다. GKE On-Prem 클러스터에 CSI 호환 볼륨 드라이버를 배포하면 vSphere 스토리지를 거치지 않고도 워크로드를 호환 스토리지 기기에 직접 연결할 수 있습니다.

GKE On-Prem은 CSI v1.0을 지원합니다. 클러스터에서 CSI를 사용하려면 스토리지 공급업체에서 제공한 CSI 드라이버를 배포해야 합니다. 그런 다음 드라이버의 StorageClass를 사용하도록 워크로드를 구성하거나 기본 StorageClass로 설정할 수 있습니다.

클러스터 저장소 구성

vSphere Datastore 이외의 스토리지 볼륨을 프로비저닝하려면 다른 스토리지 드라이버를 사용하는 클러스터에 새 StorageClass를 만들 수 있습니다. 그런 다음 StorageClass를 클러스터의 기본값으로 설정하거나 StorageClass를 사용하도록 워크로드를 구성할 수 있습니다(StatefulSet 예시).

문제 해결

스토리지 문제 해결을 참조하세요.

추가 자료