워크로드에 커스텀 StorageClass 사용
Azure용 GKE는 Azure Disk CSI 드라이버 및 Azure File CSI 드라이버를 자동으로 배포합니다.
Azure Disk CSI 드라이버 및 Azure File CSI 드라이버 버전은 Azure용 GKE Kubernetes 버전에 연결되어 있습니다. 일반적으로 드라이버 버전은 GKE 버전 출시 시점에 사용 가능한 최신 버전입니다. 클러스터가 업그레이드되면 드라이버가 자동으로 업데이트됩니다.
커스텀 StorageClass 사용
볼륨에 대해 추가 StorageClass를 만들거나 컨테이너 스토리지 인터페이스(CSI) 드라이버를 사용할 수 있습니다.
Azure Disk 볼륨 또는 다른 CSI 드라이버를 사용 중인지 선택합니다.
Azure Disk 볼륨
Azure Disk 볼륨 유형, 파일 시스템 유형, 다른 매개변수를 지정하는 고유 커스텀 StorageClass를 만들 수 있습니다. Azure용 GKE Azure Disk CSI 드라이버 GitHub 페이지에서 추가 StorageClass 매개변수를 찾을 수 있습니다.
커스텀 StorageClass를 구성하려면 다음 YAML 매니페스트를
my-custom-class.yaml
파일에 복사합니다.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true
CLASS_NAME을 새 StorageClass 이름으로 바꿉니다.
예를 들어 다음 YAML은 특정 스토리지 계정의 볼륨을 프로비저닝하고
group=dev
의 태그를 각 새 볼륨에 적용하는 새 StorageClass를 생성합니다.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-class provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: storageAccount: my-storage-account tags: group=dev
CSI 드라이버
provisioner
필드에 다른 CSI 드라이버를 지정할 수 있습니다.다른 CSI 드라이버를 사용하여 StorageClass를 만들려면 아래 YAML 예시를 사용하면 됩니다.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME provisioner: CSI_DRIVER_NAME volumeBindingMode: WaitForFirstConsumer parameters: ...
다음 값을 바꿉니다.
- CLASS_NAME: StorageClass의 이름입니다(예:
my-custom-class
). - CSI_DRIVER_NAME: CSI 드라이버의 이름입니다(예:
csi.example.com
).
그런 다음 CSI 드라이버의 문서에 따라
parameters
아래의 하위 필드를 구성합니다.- CLASS_NAME: StorageClass의 이름입니다(예:
YAML을 클러스터에 적용합니다.
kubectl apply -f my-custom-class.yaml
커스텀 StorageClass로 PersistentVolumeClaim 만듭니다.
커스텀 StorageClass를 만든 후 PVC에 이를 지정할 수 있습니다. 아래 예시에서는 StorageClass
my-custom-class
를 참조하는my-pvc
라는 이름의 PVC를 만듭니다.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: my-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageclassName: my-custom-class
기본 StorageClass 설정
Azure용 GKE는 LRS를 사용하여 표준 SSD Azure 디스크를 프로비저닝하는 standard-rwo
라는 기본 StorageClass를 사용합니다. 기본값을 다른 StorageClass로 변경할 수 있습니다.
기본 StorageClass를 변경하려면 다음 안내를 따르세요.
standard-rwo
StorageClass의is-default-class
주석을kubectl patch
로 업데이트합니다.kubectl patch storageclass standard-rwo -p \ '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'
storageclass.kubernetes.io/is-default-class: true
주석이 있는 새 StorageClass를 만듭니다.다음 StorageClass 예시에서는
disk.csi.azure.com
드라이버를 사용합니다. 다른 스토리지 드라이버를 설치하려면 CSI 드라이버 설치를 참조하세요.다음 YAML을
my-custom-class.yaml
이라는 파일에 복사합니다.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: CLASS_NAME annotations: storageclass.kubernetes.io/is-default-class: true provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer parameters: skuName: VOLUME_TYPE
다음을 바꿉니다.
- CLASS_NAME: 새 StorageClass의 이름입니다.
- VOLUME_TYPE: StorageClass가 만드는 Azure 디스크 볼륨 유형입니다.
예를 들어 다음 YAML은 프리미엄 SSD Azure 디스크 볼륨을 프로비저닝하는 새 기본 StorageClass를 만듭니다.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: my-custom-default-class annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: disk.csi.azure.com volumeBindingMode: WaitForFirstConsumer parameters: skuName: Premium_LRS
새 커스텀 클래스를 클러스터에 적용합니다.
kubectl apply -f my-custom-class.yaml
이 매니페스트를 적용한 후 Azure용 GKE는 새 스토리지 요청에 my-custom-default-class
StorageClass를 사용합니다.
StatefulSet에서 StorageClass 참조
새 StorageClass를 사용하려면 StatefulSet의 volumeClaimTemplates
에서 이를 참조하면 됩니다.
StatefulSet의 volumeClaimTemplates
사양에서 StorageClass를 참조하면 Kubernetes는 PersistentVolume(PV)을 사용하여 안정적인 스토리지를 제공합니다.
Kubernetes는 StorageClass에 정의된 프로비저닝 도구를 호출하여 새 스토리지 볼륨을 만듭니다. 볼륨이 프로비저닝되면 Kubernetes가 PV를 자동으로 만듭니다.
다음 StatefulSet는 my-custom-class
StorageClass를 참조하고 1기비바이트 볼륨을 프로비저닝합니다.
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: web
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: registry.k8s.io/nginx-slim:0.8
volumeMounts:
- name: www
mountPath: /usr/share/nginx/html
volumeClaimTemplates: # This is the specification in which you reference the StorageClass
- metadata:
name: www
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
storageClassName: my-custom-class # This field references the existing StorageClass
다음 단계
Azure Disk CSI 드라이버 또는 Azure File CSI 드라이버 문서 읽어보기
GKE의 영구 볼륨 알아보기
Azure용 GKE 클러스터에 스토리지 드라이버를 설치합니다.
빠른 시작으로 첫 번째 워크로드를 배포합니다.