스토리지

이 페이지에서는 Anthos GKE On-Prem(GKE 온프렘) 스토리지 개념을 설명합니다.

요약

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

GKE On-Prem 클러스터는 기본 Kubernetes StorageClass를 사용하여 vSphere datastore에 스테이트풀 워크로드를 위한 스토리지를 프로비저닝합니다. 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 PersistentVolumes로 표시됩니다.

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

GKE 온프렘에서 Kubernetes StatefulSets (일반적으로 영구 저장소가 필요한 스테이트 풀 (Stateful) 작업 부하)는 기본적으로 vSpehre 스토리지를 가리키고 있는 StorageClasses가 지원하는 PersistentVolumeClaim을 사용합니다.

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

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

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

Google은 여러 저장소 공급업체와 제휴하여 GKE On-Prem으로 저장소 시스템을 검증했습니다. 자격을 갖춘 스토리지 파트너의 전체 목록을 참조하세요.

기본적으로 GKE On-Prem은 vSAN을 비롯해 VMware Datastore를 자동으로 지원하는 vSphere Cloud Provider(VCP)의 온프레미스 볼륨 플러그인을 활용합니다. 향후에 출시되는 GKE On-Prem에 vSphere CSI 드라이버가 포함될 예정이므로 vSphere CSI 드라이버를 수동으로 배포할 필요가 없으며 배포하지 않는 것이 좋습니다.

Kubernetes 트리 내 볼륨 플러그인

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

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

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

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

클러스터 스토리지 구성

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

문제해결

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

추가 자료