File Storage for Classic 설정
IBM Cloud File Storage for Classic는 Kubernetes 지속적 볼륨(PV)을 사용하여 앱에 추가할 수 있는 지속적이고 빠르며 유연한 네트워크 연결의 NFS 기반 File Storage for Classic 입니다. 워크로드의 요구사항을 충족하는 GB 크기와 IOPS를 사용하여 사전정의된 스토리지 계층 중에서 선택할 수 있습니다. IBM Cloud ( File Storage for Classic )가 귀하에게 적합한 스토리지 옵션인지 확인하려면 ‘스토리지 솔루션 선택’을 참조하십시오. 가격 정보는 가격을 참조하십시오.
전통적인 인프라
빠른 시작 가이드 File Storage for Classic
이 빠른 시작 가이드에서는 볼륨을 동적으로 프로비저닝하기 위해 PVC를 생성하여 클러스터 내에 24Gi 내구성 File Storage for Classic 볼륨을 생성합니다. 그런 다음 PVC를 마운트하는 앱 배치를 작성합니다.
클러스터에서 File Storage for Classic를 처음 사용하시는 것입니까? File Storage for Classic 구성에 익숙한 경우에는 여기로 다시 돌아오십시오.
-
PVC에 대한 파일을 작성하고 이름을
pvc.yaml로 지정하십시오.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: silver-pvc labels: billingType: hourly region: # Example: us-south zone: # Example: dal13 spec: accessModes: - ReadWriteMany resources: requests: storage: 24Gi storageClassName: ibmc-file-silver -
클러스터에 PVC를 작성하십시오.
kubectl apply -f pvc.yaml -
silver-pvcPVC가 바인드되면 PVC를 사용하는 앱 배치를 작성하십시오. 배치에 대한 파일을 작성하고 이름을deployment.yaml로 지정하십시오.apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: spec: selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - image: # Your contanerized app image. name: my-container volumeMounts: - name: my-volume mountPath: /mount-path volumes: - name: my-volume persistentVolumeClaim: claimName: silver-pvc -
클러스터에 배치를 작성하십시오.
kubectl apply -f deployment.yaml
자세한 정보는 다음 링크를 참조하십시오.
File Storage for Classic 구성 결정
IBM Cloud® Kubernetes Service는 특정 구성으로 File Storage for Classic를 프로비저닝하는 데 사용할 수 있는 File Storage for Classic의 사전 정의된 스토리지 클래스를 제공합니다.
모든 스토리지 클래스는 사용 가능한 크기, IOPS, 파일 시스템 및 보유 정책을 포함하여 사용자가 프로비저닝하는 File Storage for Classic의 유형을 지정합니다.
스토리지 클래스를 사용하여 특정 유형의 스토리지를 프로비저닝한 후에는 스토리지 디바이스에 대한 유형 또는 보유 정책을 변경할 수 없습니다. 그러나 스토리지 용량과 성능을 늘리려는 경우에는 크기 및 IOPS를 변경할 수 있습니다. 스토리지의 유형 및 보존 정책을 변경하려면 새 스토리지 인스턴스를 생성하고, 기존 스토리지 인스턴스의 데이터를 새 인스턴스로 복사해야 합니다.
시작하기 전에: 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
스토리지 구성을 결정하려면 다음을 수행하십시오.
-
IBM Cloud® Kubernetes Service에서 사용 가능한 스토리지 클래스를 나열하십시오.
kubectl get sc | grep file출력 예
NAME TYPE ibmc-file-bronze (default) ibm.io/ibmc-file ibmc-file-custom ibm.io/ibmc-file ibmc-file-gold ibm.io/ibmc-file ibmc-file-retain-bronze ibm.io/ibmc-file ibmc-file-retain-custom ibm.io/ibmc-file ibmc-file-retain-gold ibm.io/ibmc-file ibmc-file-retain-silver ibm.io/ibmc-file ibmc-file-silver ibm.io/ibmc-file -
스토리지 클래스의 구성을 검토하십시오.
kubectl describe storageclass <storageclass_name>각 스토리지 클래스에 대한 자세한 정보는 스토리지 클래스 참조를 참조하십시오. 원하는 항목을 찾지 못한 경우에는 사용자 정의된 자체 스토리지 클래스의 작성을 고려하십시오. 시작하려면 사용자 정의된 스토리지 클래스 샘플을 체크아웃하십시오.
파일 스토리지 유형
프로비저닝할 File Storage for Classic의 유형을 선택하십시오.
- 브론즈, 실버 및 골드 스토리지 클래스
- 이러한 스토리지 클래스는 Endurance 스토리지를 프로비저닝합니다. Endurance 스토리지를 사용하면 사전 정의된 IOPS 티어에서 기가바이트 단위로 스토리지의 크기를 선택할 수 있습니다.
- 사용자 정의 스토리지 클래스
- 이 스토리지 클래스는 성능 스토리지를 프로비저닝합니다. 성능 스토리지를 사용하면 IOPS 및 스토리지의 크기에 대한 추가적인 제어가 가능합니다.
IOPS
File Storage for Classic의 크기와 IOPS를 선택하십시오. IOPS의 크기와 수는 스토리지의 속도에 대한 지표의 역할을 하는 IOPS(Input/output Operations Per Second) 수의 총계를 정의합니다. 스토리지에 총 IOPS가 많을 수록 읽기/쓰기 오퍼레이션의 처리 속도가 빨라집니다.
- 브론즈, 실버 및 골드 스토리지 클래스
- 이러한 스토리지 클래스는 기가바이트당 고정된 수의 IOPS가 제공되며 SSD 하드 디스크에 프로비저닝됩니다. IOPS 수의 총계는 선택하는 스토리지의 크기에 따라 다릅니다. 허용된 크기 범위 내에서 GB 단위의 정수를 선택할 수 있습니다(예: 20Gi, 256Gi 또는 11854Gi). IOPS 수의 총계를 판별하려면 IOPS를 선택된 크기와 곱해야 합니다. 예를 들어, GB당 4 IOPS가 제공되는 실버 스토리지 클래스에서 1000Gi File Storage for Classic 크기를 선택하는 경우에는 스토리지는 총 4000 IOPS입니다.
| 스토리지 클래스 | GB당 IOPS | 크기 범위(GB) |
|---|---|---|
| 브론즈 | 2IOPS/GB | 20 - 12000Gi |
| 실버 | 4IOPS/GB | 20 - 12000Gi |
| 골드 | 10 IOPS/GB | 20 - 4000Gi |
- 사용자 정의 스토리지 클래스
- 이 스토리지 클래스를 선택하면 원하는 IOPS와 크기에 대해 추가적인 제어가 가능합니다. 크기의 경우, 허용된 크기 범위 내에서 GB 단위의 정수를 선택할 수 있습니다. 사용자가 선택하는 크기에 따라 사용 가능한 IOPS 범위가 결정됩니다. 지정된 범위 내에 있는 100의 배수인 IOPS를 선택할 수 있습니다. 선택하는 IOPS는 정적이며 스토리지의 크기에 따라 스케일링되지 않습니다. 예를 들어, 100 IOPS와 함께 40Gi를 선택하면 총 IOPS는 100을 유지합니다.
- IOPS 대 기가바이트 비율은 사용자를 위해 프로비저닝되는 하드 디스크의 유형도 결정합니다. 예를 들어, 100 IOPS의 500Gi를 보유 중이면 IOPS 대 기가바이트 비율은 0.2입니다. 비율이 0.3 이하인 스토리지는 SATA 하드 디스크에서 프로비저닝됩니다. 비율이 0.3을 초과하는 스토리지는 SSD 하드 디스크에서 프로비저닝됩니다.
| 크기 범위(GB) | 100의 배수로 된 IOPS 범위 |
|---|---|
| 20 - 39Gi | 100 - 1000IOPS |
| 40 - 79Gi | 100 - 2000IOPS |
| 80 - 99Gi | 100 - 4000IOPS |
| 100 - 499Gi | 100 - 6000IOPS |
| 500 - 999Gi | 100 - 10000IOPS |
| 1000 - 1999Gi | 100 - 20000IOPS |
| 2000 - 2999Gi | 200 - 40000IOPS |
| 3000 - 3999Gi | 200 - 48000IOPS |
| 4000 - 7999Gi | 300 - 48000IOPS |
| 8000 - 9999Gi | 500 - 48000IOPS |
| 10000 - 12000Gi | 1000 - 48000IOPS |
재확보 정책
클러스터 또는 지속적 볼륨 청구(PVC)가 삭제된 후에 데이터를 보존하고자 하는지를 선택하십시오.
- 데이터를 보존하려면
retain스토리지 클래스를 선택하십시오. PVC를 삭제하면 PVC만 삭제됩니다. PV, IBM Cloud 인프라 계정의 실제 스토리지 디바이스 및 데이터는 여전히 존재합니다. 스토리지를 재확보하고 클러스터에서 이를 다시 사용하려면 PV를 제거한 후 기존 File Storage for Classic 사용 단계를 수행해야 합니다. - PVC를 삭제할 때 PV, 데이터 및 실제 File Storage for Classic 디바이스를 삭제하려면
retain없이 스토리지 클래스를 선택하십시오.
비용 청구 유형
시간별 또는 월별을 선택하십시오. 자세한 정보는 가격 책정 을 검토하십시오.
기본적으로 모든 File Storage for Classic 디바이스는 시간별 비용 청구 유형으로 프로비저닝됩니다.
월별 비용 청구 유형을 선택하는 경우, 지속적 스토리지를 제거하면 짧은 기간만 사용해도 이에 대해 여전히 월별 비용을 지불하게 됩니다.
앱에 File Storage for Classic 추가
클러스터에 대한 지속적 볼륨 클레임(PVC)을 생성하여 클러스터 간 지속성( File Storage for Classic )을 동적으로 프로비저닝하십시오. 동적 프로비저닝은 일치하는 지속적 볼륨(PV)을 자동으로 작성하고 IBM Cloud 인프라 계정에서 실제 스토리지 디바이스를 주문합니다.
시작하기 전에:
- 방화벽이 있는 경우에는 PVC를 작성할 수 있도록 클러스터가 있는 구역의 IBM Cloud 인프라 IP 범위에 대해 egress 액세스를 허용하십시오.
- 사전 정의된 스토리지 클래스를 결정하거나 사용자 정의된 스토리지 클래스를 작성하십시오.
File Storage for Classic를 Stateful 세트에 배치하려고 하십니까? 자세한 정보는 Stateful 세트에서의 File Storage for Classic 사용을 참조하십시오.
File Storage for Classic를 추가하려는 경우:
-
지속적 볼륨 클레임(PVC)을 정의하는 구성 파일을 작성하고 이 구성을
.yaml파일로 저장하십시오.브론즈, 실버, 골드 스토리지 클래스의 예.
다음
.yaml파일은mypvc기가바이트 크기이고"ibmc-file-silver"로 청구되는"monthly"스토리지 클래스의24Gi로 이름 지정된 청구를 작성합니다.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mypvc labels: billingType: "monthly" region: us-south zone: dal13 spec: accessModes: - ReadWriteMany resources: requests: storage: 24Gi storageClassName: ibmc-file-silver사용자 고유의 스토리지 클래스를 사용하는 예입니다.
다음
.yaml파일은mypvc기가바이트 크기이며 IOPS가ibmc-file-retain-custom이고"hourly"로 청구되는45Gi스토리지 클래스의"300"로 이름 지정된 청구를 작성합니다.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mypvc labels: billingType: "hourly" region: us-south zone: dal13 spec: accessModes: - ReadWriteMany resources: requests: storage: 45Gi iops: "300" storageClassName: ibmc-file-retain-customname- PVC의 이름을 입력하십시오.
billingType- 스토리지 요금이 계산되는 빈도를 "월별" 또는 "시간별"로 지정하십시오. 비용 청구 유형을 지정하지 않으면 스토리지가 시간별 비용 청구 유형으로 프로비저닝됩니다.
region- 선택사항: File Storage for Classic를 프로비저닝할 지역을 지정하십시오. 스토리지에 연결하려면 클러스터가 있는 동일한 지역에서 스토리지를 작성하십시오. 지역을 지정하는 경우에는 구역도 지정해야 합니다. 지역을 지정하지 않거나 지정된 지역을 찾을 수 없는 경우, 스토리지는 클러스터와 동일한 지역에 작성됩니다. 클러스터의 지역을 가져오려면
ibmcloud ks cluster get --cluster <cluster_name_or_ID>를 실행하여 마스터 URL에서 지역 접두부를 찾으십시오(예:https://c2.eu-de.containers.cloud.ibm.com:11111에서eu-de). PVC에서 지역 및 구역을 지정하는 대신 사용자 정의된 스토리지 클래스에서 해당 값을 지정할 수도 있습니다. 그리고 PVC의metadata.annotations.volume.beta.kubernetes.io/storage-class섹션의 스토리지 클래스를 사용하십시오. 지역과 구역이 스토리지 클래스 및 PVC에서 지정된 경우에는 PVC의 값이 우선합니다. zone- 선택사항: File Storage for Classic를 프로비저닝할 구역을 지정하십시오. 앱에서 스토리지를 사용하려면 작업자 노드가 있는 동일한 구역에서 스토리지를 작성하십시오. 작업자 노드의 구역을 보려면
ibmcloud ks worker ls --cluster <cluster_name_or_ID>를 실행하고 CLI 출력의 구역 열을 검토하십시오. 구역을 지정하는 경우에는 지역도 지정해야 합니다. 구역을 지정하지 않거나 지정된 구역을 다중 구역 클러스터에서 찾을 수 없으면 구역이 라운드 로빈 기반으로 선택됩니다. PVC에서 지역 및 구역을 지정하는 대신 사용자 정의된 스토리지 클래스에서 해당 값을 지정할 수도 있습니다. 그리고 PVC의metadata.annotations.volume.beta.kubernetes.io/storage-class섹션의 스토리지 클래스를 사용하십시오. 지역과 구역이 스토리지 클래스 및 PVC에서 지정된 경우에는 PVC의 값이 우선합니다. accessMode- 다음 옵션 중 하나를 지정하십시오.
ReadWriteMany: PVC는 다중 팟(pod)으로 마운트할 수 있습니다. 모든 팟(Pod)은 볼륨에서 읽고 쓸 수 있습니다.ReadOnlyMany: PVC는 다중 팟(pod)으로 마운트할 수 있습니다. 모든 팟(Pod)에는 읽기 전용 액세스 권한이 있습니다.ReadWriteOnce: PVC는 하나의 팟(pod)으로만 마운트할 수 있습니다. 이 팟(Pod)은 볼륨에서 읽고 쓸 수 있습니다.
storage- File Storage for Classic의 크기를 GB(Gi) 단위로 입력하십시오. 스토리지가 프로비저닝된 후에는 File Storage for Classic의 크기를 변경할 수 없습니다. 저장할 데이터의 크기와 일치하도록 크기를 지정해야 합니다.
iops- 이 옵션은 사용자 정의 스토리지 클래스(
ibmc-file-custom / ibmc-file-retain-custom)에서만 사용할 수 있습니다. 허용 범위 내에서 100의 배수가 되도록 스토리지의 총 IOPS를 지정하십시오. 나열된 것과 이외의 IOPS를 선택하면 IOPS가 올림됩니다. storageClassName- File Storage for Classic를 프로비저닝하는 데 사용할 스토리지 클래스의 이름입니다. IBM 제공 스토리지 클래스 중 하나를 사용하거나 사용자 고유의 스토리지 클래스를 작성하도록 선택할 수 있습니다. 스토리지 클래스를 지정하지 않으면 기본 스토리지 클래스
ibmc-file-bronze를 사용하여 PV가 작성됩니다.
사용자 정의된 스토리지 클래스를 사용하려면 해당 스토리지 클래스 이름, 올바른 IOPS 및 크기를 사용하여 PVC를 작성하십시오.
-
PVC를 작성하십시오.
kubectl apply -f mypvc.yaml -
PVC가 작성되고 PV에 바인딩되는지 확인하십시오.
kubectl describe pvc mypvc출력 예
Name: mypvc Namespace: default StorageClass: "" Status: Bound Volume: pvc-0d787071-3a67-11e7-aafc-eef80dd2dea2 Labels: <none> Capacity: 20Gi Access Modes: RWX Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 3m 3m 1 {ibm.io/ibmc-file 31898035-3011-11e7-a6a4-7a08779efd33 } Normal Provisioning External provisioner is provisioning volume for claim "default/my-persistent-volume-claim" 3m 1m 10 {persistentvolume-controller } Normal ExternalProvisioning can't find provisioner "ibm.io/ibmc-file", expecting that a volume for the claim is provisioned either manually or via external software 1m 1m 1 {ibm.io/ibmc-file 31898035-3011-11e7-a6a4-7a08779efd33 } Normal ProvisioningSucceeded Successfully provisioned volume pvc-0d787071-3a67-11e7-aafc-eef80dd2dea2 -
스토리지를 배치에 마운트하려면 구성
.yaml파일을 작성하고 PV를 바인드하는 PVC를 지정하십시오.루트가 아닌 사용자가 지속적 스토리지에 기록해야 하는 앱이나 루트 사용자가 마운트 경로를 소유해야 하는 앱이 있는 경우에는 NFS File Storage for Classic에 대한 루트가 아닌 사용자 액세스 추가를 참조하십시오.
apiVersion: apps/v1 kind: Deployment metadata: name: <deployment_name> labels: app: <deployment_label> spec: selector: matchLabels: app: <app_name> template: metadata: labels: app: <app_name> spec: containers: - image: <image_name> name: <container_name> volumeMounts: - name: <volume_name> mountPath: /<file_path> volumes: - name: <volume_name> persistentVolumeClaim: claimName: <pvc_name>app- metadata 섹션에서, 배치의 레이블을 입력하십시오.
matchLabels.app및labels.app- spec selector 및 template metadata 섹션에서, 앱의 레이블을 입력하십시오.
image- 사용할 컨테이너 이미지의 이름입니다. IBM Cloud Container Registry 계정에서 사용 가능한 이미지를 나열하려면
ibmcloud cr image-list를 실행하십시오. name- 클러스터에 배치하려는 컨테이너의 이름입니다.
mountPath- container volumeMounts 섹션에서, 컨테이너 내에서 볼륨이 마운트되는 디렉토리의 절대 경로를 입력하십시오. 마운트 경로에 쓰여진 데이터는 실제 File Storage for Classic 인스턴스의
root디렉토리 아래에 저장됩니다. 서로 다른 앱 간에 볼륨을 공유하려면, 각 앱에 대해 볼륨 하위 경로를 지정할 수 있습니다. name- container volumeMounts 섹션에서, 팟(Pod)에 마운트할 볼륨의 이름을 입력하십시오.
name- volumes 섹션에서, 팟(Pod)에 마운트할 볼륨의 이름을 입력하십시오. 일반적으로 이 이름은
volumeMounts.name과 동일합니다. claimName- 볼륨의 지속적 볼륨 청구 섹션에 사용할 PV를 바인드하는 PVC의 이름을 입력하십시오.
-
배치를 작성하십시오.
kubectl apply -f <local_yaml_path> -
PV가 성공적으로 마운트되었는지 확인하십시오.
kubectl describe deployment <deployment_name>마운트 지점은 Volume Mounts 필드에 있고 볼륨은 Volumes 필드에 있습니다.
Volume Mounts: /var/run/secrets/kubernetes.io/serviceaccount from default-token-tqp61 (ro) /volumemount from myvol (rw) ... Volumes: myvol: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: mypvc ReadOnly: false
클러스터의 기존 File Storage for Classic 사용
클러스터에서 사용하고자 하는 기존 물리적 스토리지 장치가 있는 경우, PV와 PVC를 수동으로 생성하여 스토리지를 정적으로 할당할 수 있습니다.
시작하기 전에:
기존 File Storage for Classic 인스턴스와 동일한 구역에 존재하는 최소한 하나의 작업자 노드를 보유 중인지 확인하십시오.
계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
기존 스토리지 준비
기존 스토리지를 앱에 마운트하려면 우선 PV에 대한 모든 필수 정보를 검색하고 클러스터에서 액세스 가능하도록 스토리지를 준비해야 합니다.
retain스토리지 클래스로 프로비저닝된 스토리지의 경우.retain스토리지 클래스로 프로비저닝한 스토리지가 있으면 PVC를 제거할 때 PV 및 실제 스토리지 디바이스가 자동으로 제거되지 않습니다. 클러스터의 스토리지를 재사용하려면 우선 나머지 PV를 제거해야 합니다.
프로비저닝된 클러스터와는 다른 클러스터에 있는 기존 스토리지를 사용하려면 클러스터 외부에서 작성된 스토리지의 단계에 따라 스토리지를 작업자 노드의 서브넷에 추가하십시오.
-
기존 PV를 나열하십시오.
kubectl get pv지속적 스토리지에 속하는 PV를 찾으십시오. PV는
released상태입니다. -
PV의 세부사항을 가져오십시오.
kubectl describe pv <pv_name> -
CapacityGb,storageClass,failure-domain.beta.kubernetes.io/region,failure-domain.beta.kubernetes.io/zone,server및path를 기록해 두십시오. -
PV를 제거하십시오.
kubectl delete pv <pv_name> -
PV가 제거되었는지 확인하십시오.
kubectl get pv
- 클러스터 외부에서 프로비저닝된 영구 스토리지의 경우
- 이전에 프로비저닝했지만 이전에 클러스터에서 사용된 적이 없는 기존 스토리지를 사용하려면, 작업자 노드와 동일한 서브넷에서 해당 스토리지가 사용 가능하도록 해야 합니다.
- IBM Cloud 인프라 포털 에서 ‘저장소’를 클릭합니다.
- 조치 메뉴에서 File Storage for Classic를 클릭하고 호스트에 권한 부여를 선택하십시오.
- 서브넷을 선택하십시오.
- 드롭 다운 목록에서 작업자 노드가 연결된 사설 VLAN 서브넷을 선택하십시오. 작업자 노드의 서브넷을 찾으려면
ibmcloud ks worker ls --cluster <cluster_name>을 실행하고 작업자 노드의Private IP를 드롭 다운 목록에서 찾은 서브넷과 비교하십시오. - 제출을 클릭하십시오.
- File Storage for Classic의 이름을 클릭하십시오.
Mount Point,size및Location필드를 기록해 두십시오.Mount Point필드는<nfs_server>:<file_storage_path>로 표시됩니다.
영구 볼륨 및 영구 볼륨 클레임 생성
-
PV에 대한 스토리지 구성 파일을 작성하십시오. 이전에 검색한 값을 포함하십시오.
apiVersion: v1 kind: PersistentVolume metadata: name: mypv labels: failure-domain.beta.kubernetes.io/region: <region> failure-domain.beta.kubernetes.io/zone: <zone> spec: capacity: storage: "<size>" accessModes: - ReadWriteMany nfs: server: "<nfs_server>" path: "<file_storage_path>"name- 작성할 PV 오브젝트의 이름을 입력하십시오.
labels- 이전에 검색한 지역 및 구역을 입력하십시오. 동일한 지역 및 구역에 작업자 노드가 하나 이상 있어야 합니다.
storage- 이전에 검색한 기존 NFS 파일 공유의 스토리지 크기를 입력하십시오. 스토리지 크기는 기가바이트(예: 20Gi(20GB) 또는 1000Gi(1TB))로 기록되어야 하며 그 크기는 기존 파일 공유의 크기와 일치해야 합니다.
accessMode- 다음 옵션 중 하나를 지정하십시오.
ReadWriteMany: PVC는 다중 팟(pod)으로 마운트할 수 있습니다. 모든 팟(Pod)은 볼륨에서 읽고 쓸 수 있습니다.ReadOnlyMany: PVC는 다중 팟(pod)으로 마운트할 수 있습니다. 모든 팟(Pod)에는 읽기 전용 액세스 권한이 있습니다.ReadWriteOnce: PVC는 하나의 팟(pod)으로만 마운트할 수 있습니다. 이 팟(Pod)은 볼륨에서 읽고 쓸 수 있습니다.
server- 이전에 검색한 NFS 파일 공유 서버 ID를 입력하십시오.
path- 이전에 검색한 기존 NFS 파일 공유에 대한 경로를 입력하십시오.
-
클러스터에 PV를 작성하십시오.
kubectl apply -f mypv.yaml -
PV가 작성되었는지 확인하십시오.
kubectl get pv -
다른 구성 파일을 작성하여 PVC를 작성하십시오. PVC가 이전에 작성한 PV와 일치하려면
storage및accessMode에 대해 동일한 값을 선택해야 합니다.storage-class필드는 빈 문자열이어야 합니다. 이 필드 중 하나라도 PV와 일치하지 않으면, 새로운 PV와 새로운 물리적 스토리지 인스턴스가 동적으로 프로비저닝됩니다.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: mypvc spec: accessModes: - ReadWriteMany resources: requests: storage: "<size>" storageClassName: "" -
PVC를 작성하십시오.
kubectl apply -f mypvc.yaml -
PVC가 작성되고 PV에 바인딩되는지 확인하십시오.
kubectl describe pvc mypvc출력 예
Name: mypvc Namespace: default StorageClass: "" Status: Bound Volume: pvc-0d787071-3a67-11e7-aafc-eef80dd2dea2 Labels: <none> Capacity: 20Gi Access Modes: RWX Events: FirstSeen LastSeen Count From SubObjectPath Type Reason Message --------- -------- ----- ---- ------------- -------- ------ ------- 3m 3m 1 {ibm.io/ibmc-file 31898035-3011-11e7-a6a4-7a08779efd33 } Normal Provisioning External provisioner is provisioning volume for claim "default/my-persistent-volume-claim" 3m 1m 10 {persistentvolume-controller } Normal ExternalProvisioning can't find provisioner "ibm.io/ibmc-file", expecting that a volume for the claim is provisioned either manually or via external software 1m 1m 1 {ibm.io/ibmc-file 31898035-3011-11e7-a6a4-7a08779efd33 } Normal ProvisioningSucceeded Successfully provisioned volume pvc-0d787071-3a67-11e7-aafc-eef80dd2dea2
PV를 작성하여 PVC에 바인딩했습니다. 이제 클러스터 사용자는 자신의 배치에 PVC를 마운트하고 PV 오브젝트에서 읽거나 쓰기를 시작할 수 있습니다.
Stateful 세트에서의 File Storage for Classic 사용
데이터베이스와 같은 stateful 앱이 있는 경우에는 앱의 데이터를 저장하기 위해 File Storage for Classic를 사용하는 Stateful 세트를 작성할 수 있습니다. 또는, IBM Cloud DBaaS(Database-as-a-Service)를 사용하여 데이터를 클라우드에 저장할 수 있습니다.
- File Storage for Classic 를 스테이트풀 세트에 추가할 때 주의해야 할 점은 무엇인가요?
- Stateful 세트에 스토리지를 추가하려는 경우에는 Stateful 세트 YAML의
volumeClaimTemplates섹션에 스토리지 구성을 지정합니다.volumeClaimTemplates는 PVC의 기반이며 프로비저닝할 File Storage for Classic의 스토리지 클래스와 크기 또는 IOPS를 포함할 수 있습니다. 그러나volumeClaimTemplates에 레이블을 포함하려는 경우 Kubernetes는 PVC를 작성할 때 이러한 레이블을 포함하지 않습니다. 대신 사용자가 직접 Stateful 세트에 해당 레이블을 추가해야 합니다.
동시에 두 개의 Stateful 세트를 배치할 수는 없습니다. 한 Stateful 세트가 완전히 배치되기 전에 다른 세트를 작성하려 시도하면 Stateful 세트 배치 작업에서 예기치 않은 결과가 발생할 수 있습니다.
- 특정 존에 스테이트풀 세트를 생성하려면 어떻게 해야 하나요?**
- 다중 구역 클러스터에서는 Stateful 세트 YAML의
spec.selector.matchLabels및spec.template.metadata.labels섹션에서 Stateful 세트를 작성할 구역 및 지역을 지정해야 합니다. 또는, 이러한 레이블을 사용자 정의된 스토리지 클래스에 추가하고 이 스토리지 클래스를 Stateful 세트의volumeClaimTemplates섹션에서 사용할 수 있습니다. - 포드가 준비될 때까지 PV를 스테이트풀 포드에 바인딩하는 것을 미룰 수 있나요?
- 예,
volumeBindingMode: WaitForFirstConsumer필드를 포함하는 PVC에 대한 사용자 고유의 스토리지 클래스를 작성 할 수 있습니다. - 스테이트풀 세트에 File Storage for Classic 를 추가하려면 어떤 방법이 있나요?
- Stateful 세트를 작성할 때 자동으로 PVC를 작성하려는 경우에는 동적 프로비저닝을 사용하십시오. Stateful 세트에 대해 PVC를 사전 프로비저닝하거나 기존 PVC를 사용하도록 선택할 수도 있습니다.
동적 프로비저닝을 사용하여 Stateful 세트를 작성할 때 PVC 작성
Stateful 세트를 작성할 때 PVC를 자동으로 작성하려면 이 선택사항을 사용하십시오.
시작하기 전에: 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
-
클러스터 내의 모든 기존 Stateful 세트가 완전히 배치되었는지 확인하십시오. 특정 Stateful 세트가 여전히 배치 중인 경우에는 Stateful 세트 작성을 시작할 수 없습니다. 예기치 않은 결과를 방지하려면 클러스터 내의 모든 Stateful 세트가 완전히 배치될 때까지 기다려야 합니다. 클러스터에 있는 기존 Stateful 세트를 나열하십시오.
kubectl get statefulset --all-namespaces출력 예
NAME DESIRED CURRENT AGE mystatefulset 3 3 6s -
각 Stateful 세트의 Pods Status를 보고 해당 Stateful 세트의 배치가 완료되었는지 확인하십시오.
kubectl describe statefulset <statefulset_name>출력 예
Name: nginx Namespace: default CreationTimestamp: Fri, 05 Oct 2022 13:22:41 -0400 Selector: app=nginx,billingType=hourly,region=us-south,zone=dal10 Labels: app=nginx billingType=hourly region=us-south zone=dal10 Annotations: kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"apps/v1","kind":"StatefulSet","metadata":{"annotations":{},"name":"nginx","namespace":"default"},"spec":{"podManagementPolicy":"Par..." Replicas: 3 desired | 3 total Pods Status: 0 Running / 3 Waiting / 0 Succeeded / 0 Failed Pod Template: Labels: app=nginx billingType=hourly region=us-south zone=dal10CLI 출력의 Replicas 섹션이 Pods Status 섹션의 Running 팟(Pod) 수와 동일하면 Stateful 세트가 완전히 배치된 것입니다. Stateful 세트가 아직 완전히 배치되지 않은 경우에는 진행하기 전에 배치가 완료되기를 기다리십시오.
-
Stateful 세트에 대한 구성 파일과 이 Stateful 세트를 노출하는 데 사용하는 서비스를 작성하십시오.
구역을 지정하는 상태 저장 세트 예. 다음 예는 NGINX를 3개의 복제본을 포함하는 Stateful 세트로 배치하는 방법을 보여줍니다. 각 복제본에 대해,
ibmc-file-retain-bronze스토리지 클래스의 스펙에 따라 20GB의 File Storage for Classic 디바이스가 프로비저닝됩니다. 모든 스토리지는dal10구역에서 프로비저닝됩니다. 다른 구역에서는 File Storage for Classic에 액세스할 수 없으므로 Stateful 세트의 모든 복제본 또한dal10에 있는 작업자 노드에 배치됩니다.apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx spec: serviceName: "nginx" replicas: 3 podManagementPolicy: Parallel selector: matchLabels: app: nginx billingType: "hourly" region: "us-south" zone: "dal10" template: metadata: labels: app: nginx billingType: "hourly" region: "us-south" zone: "dal10" spec: containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: myvol mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: myvol spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi iops: "300" #required only for performance storage storageClassName: ibmc-file-retain-bronze비선호도 규칙 및 지연된 File Storage for Classic 작성이 있는 상태 저장 세트 예. 다음 예는 NGINX를 3개의 복제본을 포함하는 Stateful 세트로 배치하는 방법을 보여줍니다. Stateful 세트는 File Storage for Classic가 작성된 지역 및 구역을 영역을 지정하지 않습니다. 대신, Stateful 세트는 반친화성 규칙을 사용하여 팟(Pod)이 작업자 노드와 구역에 걸쳐 분산되도록 합니다. 작업자 노드 반친화성은
app: nginx레이블을 정의하여 구현됩니다. 이 레이블은 동일한 레이블의 팟(Pod)이 이 작업자 노드에서 이미 실행되는 경우 작업자 노드에서 팟(Pod)을 스케줄하지 않도록 Kubernetes에 지시합니다.topologykey: failure-domain.beta.kubernetes.io/zone레이블은 이 반친화성 규칙을 더 제한하며app: nginx레이블의 팟(Pod)을 이미 실행 중인 작업자 노드와 동일한 구역에 있는 작업자 노드에서 스케줄되지 않도록 합니다. 각 Stateful 세트 팟(Pod)에 대해 두 개의 PVC가volumeClaimTemplates섹션에 정의된 대로 작성되지만 File Storage for Classic 인스턴스의 작성은 스토리지를 사용하는 Stateful 세트 팟(Pod)이 스케줄될 때까지 지연됩니다. 이러한 구성을 ‘토폴로지를 고려한 볼륨 스케줄링’이라고 합니다.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ibmc-file-bronze-delayed parameters: billingType: hourly classVersion: "2" iopsPerGB: "2" sizeRange: '[20-12000]Gi' type: Endurance provisioner: ibm.io/ibmc-file reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer --- apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: web spec: serviceName: "nginx" replicas: 3 podManagementPolicy: "Parallel" selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 100 podAffinityTerm: labelSelector: matchExpressions: - key: app operator: In values: - nginx topologyKey: failure-domain.beta.kubernetes.io/zone containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: myvol1 mountPath: /usr/share/nginx/html - name: myvol2 mountPath: /tmp1 volumeClaimTemplates: - metadata: name: myvol1 spec: accessModes: - ReadWriteMany # access mode resources: requests: storage: 20Gi storageClassName: ibmc-file-bronze-delayed - metadata: name: myvol2 spec: accessModes: - ReadWriteMany # access mode resources: requests: storage: 20Gi storageClassName: ibmc-file-bronze-delayedname- metadata에서, Stateful 세트의 이름을 입력하십시오. 입력하는 이름은
<volume_name>-<statefulset_name>-<replica_number>형식으로 PVC의 이름을 작성하는 데 사용됩니다. serviceName- spec 섹션에서, Stateful 세트를 노출하는 데 사용할 서비스의 이름을 입력하십시오.
replicas- Stateful 세트의 복제본 수를 입력하십시오.
podManagementPolicy- Stateful 세트에 대해 사용할 팟(Pod) 관리 정책을 입력하십시오. 다음 옵션 중에 선택하십시오.
OrderedReady: 이 선택사항을 사용하면 Stateful 세트 복제본이 순서대로 배치됩니다. 예를 들어 3개의 복제본을 지정한 경우, Kubernetes는 첫 번째 복제본의 PVC를 작성하고, 이 PVC가 바인드될 때까지 기다리고, Stateful 세트 복제본을 배치하고, PVC를 복제본에 마운트합니다. 이 배치가 완료되고 나면 두 번째 복제본이 배치됩니다. 이 옵션에 대한 자세한 내용은 OrderedReady 의 ‘Pod 관리’를 참조하십시오.Parallel: 이 옵션을 사용하면 모든 상태 저장 세트 복제본의 배치가 동시에 시작됩니다. 앱에서 복제본의 병렬 배치를 지원하는 경우에는 PVC 및 Stateful 세트 복제본의 배치 시간을 절약하기 위해 이 선택사항을 사용하십시오.
matchLabels- spec selector 섹션에서, Stateful 세트 및 PVC에 포함시킬 모든 레이블을 입력하십시오. Stateful 세트의
volumeClaimTemplates에 포함하는 레이블은 Kubernetes가 인식하지 않습니다. 다음 샘플 레이블을 검토하십시오.region및zone: 모든 Stateful 세트 복제본 및 PVC를 하나의 특정 구역에서 작성하려는 경우에는 두 레이블을 모두 추가하십시오. 사용하는 스토리지 클래스에 구역 및 지역을 지정할 수도 있습니다. 다중 구역 클러스터를 보유한 상태에서 구역 및 지역을 지정하지 않으면 모든 구역 간에 볼륨 요청의 균등한 밸런스를 유지하기 위해 스토리지가 프로비저닝되는 구역이 라운드 로빈 기반으로 선택됩니다.billingType: PVC에 사용할 비용 청구 유형을 입력하십시오.hourly또는monthly중에서 선택하십시오. 이 레이블을 지정하지 않으면 모든 PVC가 시간별 비용 청구 유형으로 작성됩니다.
labels- spec template metadata 섹션에서
spec.selector.matchLabels섹션에 추가한 것과 동일한 레이블을 입력하십시오. affinity- spec template spec affinity 섹션에서, Stateful 세트 팟(Pod)이 작업자 노드 및 구역 전체에 분산되도록 하기 위한 반친화성 규칙을 지정하십시오. 이 예는 Stateful 세트 팟(Pod)이
app: nginx레이블이 있는 팟(Pod)이 실행되는 작업자 노드에서 스케줄되지 않는 것을 선호하는 반친화성 규칙을 보여줍니다.topologykey: failure-domain.beta.kubernetes.io/zone은 이 반친화성 규칙을 더 제한하며 작업자 노드가app: nginx레이블이 있는 팟(Pod)과 동일한 구역에 있는 경우 팟(Pod)이 작업자 노드에서 스케줄되지 않도록 합니다. 이 반친화성 규칙을 사용하면 작업자 노드 및 구역에 대해 반친화성을 구현할 수 있습니다. name- spec volumeClaimTemplates metadata 섹션에서, 볼륨의 이름을 입력하십시오.
spec.containers.volumeMount.name섹션에 정의한 것과 동일한 이름을 사용하십시오. 여기에 입력하는 이름은<volume_name>-<statefulset_name>-<replica_number>형식으로 PVC의 이름을 작성하는 데 사용됩니다. storage- spec volumeClaimTemplates spec resources requests 섹션에서, File Storage for Classic의 크기를 기가바이트(Gi) 단위로 입력하십시오.
iops- spec volumeClaimTemplates spec resources requests 섹션에서, Performance 스토리지를 프로비저닝하려는 경우에는 IOPS 수를 입력하십시오. Endurance 스토리지 클래스를 사용하면서 IOPS 수를 지정하면 IOPS 수가 무시됩니다. 대신 스토리지 클래스에 지정된 IOPS가 사용됩니다.
storageClassName- spec volumeClaimTemplates spec 섹션에서, 사용할 스토리지 클래스를 입력하십시오. 기존 스토리지 클래스를 나열하려면
kubectl get sc | grep file``을 실행하십시오. 스토리지 클래스를 지정하지 않으면 클러스터에 설정된 기본 스토리지 클래스를 사용하여 PVC가 작성됩니다. Stateful 세트가 File Storage for Classic를 사용하여 프로비저닝되도록 기본 스토리지 클래스가ibm.io/ibmc-file프로비저너를 사용하는지 확인하십시오.
-
Stateful 세트를 작성하십시오.
kubectl apply -f statefulset.yaml -
Stateful 세트가 배치될 때까지 기다리십시오.
kubectl describe statefulset <statefulset_name>
PVC의 현재 상태를 보려면 kubectl get pvc를 실행하십시오. PVC의 이름은 <volume_name>-<statefulset_name>-<replica_number>로 형식화됩니다.
정적 프로비저닝: Stateful 세트와 함께 기존 PVC 사용
Stateful 세트를 작성하기 전에 PVC를 사전 프로비저닝하거나 기존 PVC를 Stateful 세트와 함께 사용할 수 있습니다.
Stateful 세트를 작성할 때 동적으로 PVC를 프로비저닝하는 경우, PVC의 이름은 Stateful 세트 YAML 파일에 사용한 값에 따라 지정됩니다. Stateful 세트가 기존 PVC를 사용하기 위해서는 PVC의 이름이 동적 프로비저닝을 사용할 때 자동으로 작성되는 이름과 일치해야 합니다.
시작하기 전에: 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
- Stateful 세트를 작성하기 전에 사전 프로비저닝하려는 경우, 앱에 File Storage for Classic 추가의 1 - 3단계에 따라 각 Stateful 세트 복제본에 대한 PVC를 작성하십시오.
<volume_name>-<statefulset_name>-<replica_number>형식을 따르는 이름을 사용하여 PVC를 작성해야 합니다.
<volume_name>-
Stateful 세트의
spec.volumeClaimTemplates.metadata.name섹션에 지정할 이름을 사용하십시오(예:nginxvol). <statefulset_name>-
Stateful 세트의
metadata.name섹션에 지정할 이름을 사용하십시오(예:nginx_statefulset). <replica_number>-
0부터 시작하는 복제본의 번호를 입력하십시오.
예를 들어, 3개의 Stateful 세트 복제본을 작성해야 하는 경우에는
nginxvol-nginx_statefulset-0,nginxvol-nginx_statefulset-1및nginxvol-nginx_statefulset-2와 같은 이름을 가진 3개의 PVC를 작성하십시오.기존 File Storage for Classic 인스턴스에 대한 PVC 및 PV를 작성하시겠습니까? 정적 프로비저닝을 사용하여 PVC 및 PV를 작성하십시오.
- 동적 프로비저닝: Stateful 세트를 작성할 때 PVC 작성의 단계에 따라 Stateful 세트를 작성하십시오. PVC의 이름은
<volume_name>-<statefulset_name>-<replica_number>형식을 따릅니다. 상태 저장 세트 스펙의 PVC 이름에서 다음 값을 사용해야 합니다.
spec.volumeClaimTemplates.metadata.name-
PVC 이름의
<volume_name>을 입력하십시오. metadata.name-
PVC 이름의
<statefulset_name>을 입력하십시오. spec.replicas-
Stateful 세트에 대해 작성할 복제본의 수를 입력하십시오. 복제본의 수는 이전에 작성한 PVC의 수와 동일해야 합니다.
PVC가 다른 구역에 있는 경우, Stateful 세트에 지역 또는 구역 레이블을 포함하지 마십시오.
-
클러스터에서 팟(pod)을 나열하고 상태 저장 세트에 속하는 팟(pod)을 식별하여 PVC가 상태 저장 세트 복제본 팟(pod)에서 사용되는지 확인하십시오.
kubectl get pods -
기존 PVC가 Stateful 세트 복제본에 마운트되었는지 확인하십시오. CLI 출력의
ClaimName섹션에 있는 **Volumes**을 검토하십시오.kubectl describe pod <pod_name>출력 예
Name: nginx-0 Namespace: default Node: 10.xxx.xx.xxx/10.xxx.xx.xxx Start Time: Fri, 05 Oct 2022 13:24:59 -0400 ... Volumes: myvol: Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace) ClaimName: myvol-nginx-0 ...
기존 스토리지 디바이스의 크기 및 IOPS 변경
스토리지 용량 또는 성능을 높이기 위해 기존 볼륨을 수정할 수 있습니다.
비용 청구에 대한 질문이 있거나 IBM Cloud 콘솔을 사용한 스토리지 수정 방법에 대한 단계를 찾으려면 파일 공유 용량 확장을 참조하십시오.
-
클러스터의 PVC를 나열하고 VOLUME 열에서 연관된 PV의 이름을 기록해 두십시오.
kubectl get pvc출력 예
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE myvol Bound pvc-01ac123a-123b-12c3-abcd-0a1234cb12d3 20Gi RWX ibmc-file-bronze 147d -
PVC가 바인딩된 PV의 세부사항을 나열하여 PVC와 연관된 실제 File Storage for Classic의
StorageType,volumeId및server를 검색하십시오.<pv_name>을 이전 단계에서 검색한 PV의 이름으로 대체하십시오. 스토리지 유형, 볼륨 ID 및 서버 이름이 CLI 출력의Labels섹션에 표시됩니다.kubectl describe pv <pv_name>출력 예
Name: pvc-4b62c704-5f77-11e8-8a75-b229c11ba64a Labels: CapacityGb=20 Datacenter=dal10 Iops=2 StorageType=ENDURANCE Username=IBM02SEV1543159_6 billingType=hourly failure-domain.beta.kubernetes.io/region=us-south failure-domain.beta.kubernetes.io/zone=dal10 path=IBM01SEV1234567_8ab12t server=fsf-dal1001g-fz.adn.networklayer.com volumeId=12345678 ... -
IBM Cloud 인프라 계정에서 볼륨의 크기 또는 IOPS를 수정하십시오.
성능 스토리지의 예.
ibmcloud sl file volume-modify <volume_ID> --new-size <size> --new-iops <iops>내구성 스토리지의 예.
ibmcloud sl file volume-modify <volume_ID> --new-size <size> --new-tier <iops>volume_ID- 이전에 검색한 볼륨의 ID를 입력하십시오.
new-size- 볼륨의 새 크기(Gi)를 입력하십시오. 올바른 크기에 대해서는 File Storage for Classic 구성 결정을 참조하십시오. 입력된 크기는 볼륨의 현재 크기보다 크거나 같아야 합니다. 새 크기를 지정하지 않으면 볼륨의 현재 크기가 사용됩니다.
new-iops- 성능 스토리지에만 해당됩니다. 원하는 새 IOPS 수를 입력하십시오. 올바른 IOPS에 대해서는 File Storage for Classic 구성 결정을 참조하십시오. IOPS를 지정하지 않으면 현재 IOPS가 사용됩니다. 볼륨의 원래 IOPS/GB 비율이 0.3 미만인 경우, 새 IOPS/GB 비율은 0.3 미만이어야 합니다. 볼륨의 원래 IOPS/GB 비율이 0.3보다 크거나 같은 경우, 볼륨의 새 IOPS/GB 비율은 0.3보다 크거나 같아아야 합니다.
new-tier- endurance 스토리지에만 해당됩니다. 원하는 GB당 새 IOPS 수를 입력하십시오. 올바른 IOPS에 대해서는 File Storage for Classic 구성 결정을 참조하십시오. IOPS를 지정하지 않으면 현재 IOPS가 사용됩니다. 볼륨의 원래 IOPS/GB 비율이 0.25 미만인 경우, 새 IOPS/GB 비율은 0.25 미만이어야 합니다. 볼륨의 원래 IOPS/GB 비율이 0.25보다 크거나 같은 경우, 볼륨의 새 IOPS/GB 비율은 0.25보다 크거나 같아아야 합니다.
출력 예
Order 31020713 was placed successfully!. > Storage as a Service > 40 GBs > 2 IOPS per GB > 20 GB Storage Space (Snapshot Space) You might run 'ibmcloud sl file volume-list --order 12345667' to find this file volume after it is ready. -
볼륨의 크기를 변경했으며 팟(Pod)의 볼륨을 사용하는 경우에는 팟(Pod)에 로그인하여 새 크기를 확인하십시오. PVC를 사용하는 모든 팟(Pod)을 나열하십시오. 팟(Pod)은
<pod_name>: <pvc_name>형식으로 리턴됩니다.kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>" -
팟(Pod)에 로그인하십시오.
kubectl exec -it <pod_name> bash -
디스크 사용 통계를 표시하고 이전에 검색한 볼륨의 서버 경로를 찾으십시오.
df -h출력 예
Filesystem Size Used Avail Use% Mounted on overlay 99G 4.8G 89G 6% / tmpfs 64M 0 64M 0% /dev tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup fsf-dal1001g-fz.adn.networklayer.com:/IBM01SEV1234567_6/data01 40G 0 40G 0% /myvol
실제 스토리지의 크기 및 IOPS가 변경되었으나 이 값은 PV 또는 PVC에 반영되지 않습니다. PV 또는 PVC에 대해 설명하는 경우 이전 크기 및 IOPS는 계속해서 표시됩니다. kubectl patch pv 명령을 사용하여 PV의 크기 및 IOPS를 수동으로 업데이트할 수 있는 옵션이 있습니다. 그러나 이 명령을 사용하여 PVC의 크기 또는 IOPS를 변경할 수는 없습니다. PVC와 PV의 크기 및
IOPS가 서로 다르지 않도록 하려면 PVC와 PV를 그대로 두십시오.
기본 NFS 버전 변경
File Storage for Classic의 버전은 IBM Cloud File Storage for Classic 서버와 통신하는 데 사용되는 프로토콜을 판별합니다. 기본적으로 모든 File Storage for Classic 인스턴스는 NFS 버전 4를 사용하여 설정됩니다. 앱이 제대로 작동하려면 특정 버전이 필요한 경우 기존 PV를 이전 NFS 버전으로 변경할 수 있습니다.
기본 NFS 버전을 변경하려면 클러스터에서 File Storage for Classic를 동적으로 프로비저닝하도록 새 스토리지 클래스를 작성하거나 팟(Pod)에 마운트된 기존 PV를 변경하도록 선택할 수 있습니다.
최신 보안 업데이트를 적용하고 성능을 향상시키려면 기본 NFS 버전을 사용하고 이전 NFS 버전으로 변경하지 마십시오.
특정 NFS 버전을 사용하는 사용자 정의 스토리지 클래스 생성
-
프로비저닝하고자 하는 NFS 버전으로 사용자 정의된 스토리지 클래스를 작성하십시오.
-
클러스터에 스토리지 클래스를 작성하십시오.
kubectl apply -f nfsversion_storageclass.yaml -
사용자 정의된 스토리지 클래스가 작성되었는지 확인하십시오.
kubectl get sc -
사용자 정의된 스토리지 클래스로 File Storage for Classic를 프로비저닝하십시오.
기존 PV를 다른 NFS 버전을 사용하도록 변경하기
-
NFS 버전을 변경할 File Storage for Classic의 PV를 가져오고 PV의 이름을 기록해 두십시오.
kubectl get pv -
PV에 어노테이션을 추가하십시오.
<version_number>를 사용할 NFS 버전으로 대체하십시오. 예를 들어, NFS 버전 3.0으로 변경하려면 3을 입력하십시오.kubectl patch pv <pv_name> -p '{"metadata": {"annotations":{"volume.beta.kubernetes.io/mount-options":"vers=<version_number>"}}}' -
File Storage for Classic를 사용하는 팟(Pod)을 삭제하고 팟(Pod)을 다시 작성하십시오.
- 팟(Pod) YAML을 로컬 머신에 저장하십시오.
kubect get pod <pod_name> -o yaml > <filepath/pod.yaml> ``` 2. 팟(Pod)을 삭제하십시오. ```sh {: pre} kubectl deleted pod <pod_name> ``` 3. 팟(Pod)을 다시 작성하십시오. ```sh {: pre} kubectl apply -f pod.yaml ``` -
팟(Pod)이 배치될 때까지 기다리십시오. 상태가
Running으로 변경되면 팟(Pod)이 완전히 배치된 것입니다.kubectl get pods -
팟(Pod)에 로그인하십시오.
kubectl exec -it <pod_name> sh -
File Storage for Classic가 이전에 지정한 NFS 버전으로 마운트되었는지 확인하십시오.
mount | grep "nfs" | awk -F" |," '{ print $5, $8 }'출력 예
nfs vers=3.0
기본 File Storage for Classic 플러그인 스케일링 다운
기본적으로 클래식 클러스터에는 ‘ File Storage for Classic ’ 플러그인이 포함되어 있습니다. 클러스터에서 File Storage for Classic을(를) 사용할 필요가 없으면 플러그인 및 감시자 컴포넌트를 축소하여 클러스터 리소스를 절약할 수 있습니다. 나중에 File Storage for Classic가 필요하면 최대 하나의 복제본으로 다시 스케일링 업할 수 있습니다. 다른 설정을 변경하거나 배치를 완전히 제거할 수 없습니다. 플러그인은 계속 설치되어 있으므로 플러그인을 스케일링 다운한 경우에도 클러스터 버전 업데이트와 함께 업데이트됩니다.
시작하기 전에:
- 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
- ** 네임스페이스에서 배치를 변경할 수 있도록 클러스터에 대한 **관리자
kube-systemIAM 서비스 액세스 역할이 있는지 확인하십시오.
File Storage for Classic 플러그인을 스케일링 다운하려면 다음을 수행하십시오.
-
File Storage for Classic 플러그인 및 감시자 배치를
0개의 복제본으로 스케일링 다운하십시오.kubectl scale deployment -n kube-system --replicas=0 ibm-file-pluginkubectl scale deployment -n kube-system --replicas=0 ibm-storage-watcher나중에 File Storage for Classic가 필요한 경우 다음 명령을 사용하여 플러그인을 다시 스케일링할 수 있습니다.
kubectl scale deployment -n kube-system --replicas=1 ibm-file-plugin && kubectl scale deployment -n kube-system --replicas=1 ibm-storage-watcher -
선택사항: 플러그인이 스케일링 다운되었는지 확인하십시오. 클러스터 새로 고치기 또는 업데이트와 같이 마스터 상태가 변경된 후에도 팟이 제거되고 제거된 상태를 유지하면 축소가 성공합니다.
- 팟(Pod)이 제거되었는지 확인하십시오.
kubectl get pods -n kube-system -l 'app in (ibm-file-plugin, ibm-storage-watcher)' ``` 출력 예 ```sh {: screen} No resources found. ``` 2. 클러스터 마스터를 새로 고치십시오. ```sh {: pre} ibmcloud ks cluster refresh -c <cluster_name_or_ID> ``` 3. 새로 고침이 완료될 때까지 몇 분간 기다린 다음, 하위 단계 `2.a` 을 반복하여 파드가 제거되었는지 확인하십시오. 팟(Pod)이 다시 스케줄되는 경우 File Storage for Classic 플러그인 구성 파일에 대한 변경사항이 제대로 저장되지 않은 것입니다. 클러스터가 올바른 Kubernetes 버전을 실행하는지 확인하고 다시 시도하십시오.
데이터 백업 및 복원
File Storage for Classic는 클러스터의 작업자 노드와 동일한 위치로 프로비저닝됩니다. 이 스토리지는 서버의 작동이 중지되는 경우에 가용성을 제공하기 위해 IBM에 의해 클러스터된 서버에서 호스팅됩니다. 그러나 File Storage for Classic는 자동으로 백업되지 않으며 전체 위치에서 장애가 발생하면 액세스가 불가능할 수 있습니다. 데이터가 유실되거나 손상되지 않도록 하기 위해, 필요한 경우 데이터를 복원하는 데 사용할 수 있는 주기적 백업을 설정할 수 있습니다.
File Storage for Classic에 대해 다음 백업 및 복원 옵션을 검토하십시오.
정기적 스냅샷 설정
특정 시점에 인스턴스 상태를 캡처하는 읽기 전용 이미지인 File Storage for Classic에 대한 주기적 스냅샷을 설정할 수 있습니다. 스냅샷을 저장하려면 File Storage for Classic의 스냅샷 영역을 요청해야 합니다. 스냅샷은 동일한 구역 내의 기본 스토리지 인스턴스에 저장됩니다. 사용자가 실수로 볼륨에서 중요한 데이터를 제거한 경우 스냅샷에서 데이터를 복원할 수 있습니다.
볼륨의 스냅샷을 작성하려면 다음 단계를 완료하십시오.
-
계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
-
ibmcloud slCLI에 로그인하십시오.ibmcloud sl init -
클러스터에 있는 기존 PV를 나열하십시오.
kubectl get pv -
스냅샷 영역을 작성할 PV에 대한 세부사항을 가져오고 볼륨 ID, 크기 및 IOPS를 기록해 두십시오. 볼륨 ID, 크기 및 IOPS는 CLI 출력의 Labels 섹션에서 찾을 수 있습니다.
kubectl describe pv <pv_name> -
이전 단계에서 검색한 매개변수를 사용하여 기존 볼륨의 스냅샷 크기를 작성하십시오.
ibmcloud sl file snapshot-order <volume_ID> --size <size> --tier <iops> -
스냅샷 크기가 작성될 때까지 기다리십시오. CLI 출력의 **Snapshot Size (GB)**가 0에서 주문한 크기로 변경된 경우 스냅샷 크기가 성공적으로 프로비저닝된 것입니다.
ibmcloud sl file volume-detail <volume_ID> -
볼륨에 대한 스냅샷을 작성하고 작성된 스냅샷의 ID를 기록해 두십시오.
ibmcloud sl file snapshot-create <volume_ID> -
스냅샷이 작성되었는지 확인하십시오.
ibmcloud sl file snapshot-list <volume_ID> -
스냅샷 스케줄을 설정하십시오. 스냅샷 스케줄에 사용 가능한 옵션에 대한 자세한 정보는 CLI 문서 를 참조하십시오.
ibmcloud sl block snapshot-enable VOLUME_ID <OPTIONS> -
스냅샷의 데이터를 기존 볼륨에 복원하려면 다음 명령을 실행하십시오.
ibmcloud sl file snapshot-restore <volume_ID> <snapshot_ID>
다른 구역에 스냅샷 복제
구역 장애로부터 데이터를 보호하기 위해 다른 구역에서 설정된 File Storage for Classic 인스턴스로 스냅샷을 복제할 수 있습니다.
데이터는 기본 스토리지에서 백업 스토리지로만 복제할 수 있습니다. 복제된 File Storage for Classic 인스턴스를 클러스터에 마운트할 수는 없습니다. 기본 스토리지에서 장애가 발생하는 경우에는 복제된 백업 스토리지가 기본 스토리지가 되도록 수동으로 설정할 수 있습니다. 그런 다음 클러스터에 이를 추가할 수 있습니다. 기본 스토리지가 복원되고 나면 백업 스토리지로부터 데이터를 복원할 수 있습니다.
스토리지 복제
원본 스토리지 인스턴스와 동일한 구역에서 File Storage for Classic 인스턴스를 복제할 수 있습니다.
복제본(duplicate)에는 복제본(duplicate)을 작성한 시점의 원본 스토리지 인스턴스와 동일한 데이터가 저장되어 있습니다. 복제본(replica)과 다르게 복제본(duplicate)은 원본과 별개인 스토리지 인스턴스로 사용하십시오. 복제하려면 우선 볼륨에 대한 스냅샷을 설정하십시오.
IBM Cloud® Object Storage에 데이터 백업
ibm-backup-restore Helm 차트를 사용하여 클러스터에서 백업을 회전하고 팟(Pod)을 복원할 수 있습니다.
이 팟(Pod)에는 클러스터의 지속적 볼륨 클레임(PVC)에 대한 일회성 또는 주기적 백업을 실행하는 스크립트가 포함되어 있습니다. 데이터는 구역에 설정된 IBM Cloud® Object Storage 인스턴스에 저장됩니다.
데이터의 고가용성을 개선하고 구역 장애로부터 앱을 보호하려면 두 번째 IBM Cloud® Object Storage 인스턴스를 설정하고 구역 간에 데이터를 복제하십시오. IBM Cloud® Object Storage 인스턴스에서 데이터를 복원해야 하는 경우 Helm 차트와 함께 제공되는 복원 스크립트를 사용하십시오.
팟(pod) 및 컨테이너에 대해 데이터 복사
kubectl cp 명령어를 사용하면 클러스터 내의 파드나 특정 컨테이너로, 또는 그곳에서 파일과 디렉터리를 복사할 수 있습니다.
시작하기 전에: 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오. -c를 사용하여 컨테이너를 지정하지 않으면 명령이 팟(Pod)에서 사용 가능한 첫 번째 컨테이너를 사용합니다.
로컬 시스템의 데이터를 클러스터의 팟(pod)에 복사하십시오.
kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath>
클러스터의 팟(pod)에 있는 데이터를 로컬 시스템에 복사하십시오.
kubectl cp <namespace>/<pod>:<pod_filepath>/<filename></var> <local_filepath>/<filename>
로컬 시스템의 데이터를 클러스터의 팟(pod)에서 실행하는 특정 컨테이너에 복사하십시오.
kubectl cp <local_filepath>/<filename> <namespace>/<pod>:<pod_filepath> -c CONTAINER
스토리지 클래스 참조
| 특성 | 설정 |
|---|---|
| 이름 | ibmc-file-bronzeibmc-file-retain-bronzeibmc-file-bronze-gid |
| 유형 | Endurance 스토리지 |
| 파일 시스템 | NFS |
| GB당 IOPS | 2 |
| 크기 범위(GB) | 20 - 12000Gi |
| 하드 디스크 | SSD |
| 재확보 정책 | ibmc-file-bronze: 삭제ibmc-file-retain-bronze: 유지ibmc-file-bronze-gid: 삭제 |
| 보충 그룹 ID | 루트가 아닌 사용자가 파일 스토리지의 인스턴스에 액세스할 수 있도록 ibmc-file-bronze-gid 스토리지 클래식을 사용하는 경우 보충 그룹 ID 65531이 자동으로 설정됩니다. 이 스토리지 클래스를 사용하거나 사용자 정의 그룹 ID를 설정하는 방법에 대한 자세한 정보는 파일 스토리지: 지속적 스토리지에 루트가 아닌 사용자 액세스를 추가할 수 없음을
참조하십시오. |
| 비용 청구 | 시간별 |
| 가격 책정 | 가격 정보 |
| 특성 | 설정 |
|---|---|
| 이름 | ibmc-file-silveribmc-file-retain-silveribmc-file-silver-gid |
| 유형 | Endurance 스토리지 |
| 파일 시스템 | NFS |
| GB당 IOPS | 4 |
| 크기 범위(GB) | 20 - 12000Gi |
| 하드 디스크 | SSD |
| 재확보 정책 | ibmc-file-silver: 삭제ibmc-file-retain-silver: 유지ibmc-file-silver-gid: 삭제 |
| 보충 그룹 ID | 루트가 아닌 사용자가 파일 스토리지의 인스턴스에 액세스할 수 있도록 ibmc-file-bronze-gid 스토리지 클래식을 사용하는 경우 보충 그룹 ID 65531이 자동으로 설정됩니다. 이 스토리지 클래스를 사용하거나 사용자 정의 그룹 ID를 설정하는 방법에 대한 자세한 정보는 파일 스토리지: 지속적 스토리지에 루트가 아닌 사용자 액세스를 추가할 수 없음을
참조하십시오. |
| 비용 청구 | 시간별 |
| 가격 책정 | 가격 정보 |
| 특성 | 설정 |
|---|---|
| 이름 | ibmc-file-goldibmc-file-retain-goldibmc-file-gold-gid |
| 유형 | Endurance 스토리지 |
| 파일 시스템 | NFS |
| GB당 IOPS | 10 |
| 크기 범위(GB) | 20 - 4000Gi |
| 하드 디스크 | SSD |
| 재확보 정책 | ibmc-file-gold: 삭제ibmc-file-retain-gold: 유지ibmc-file-gold-gid: 삭제 |
| 보충 그룹 ID | 루트가 아닌 사용자가 파일 스토리지의 인스턴스에 액세스할 수 있도록 ibmc-file-bronze-gid 스토리지 클래식을 사용하는 경우 보충 그룹 ID 65531이 자동으로 설정됩니다. 이 스토리지 클래스를 사용하거나 사용자 정의 그룹 ID를 설정하는 방법에 대한 자세한 정보는 파일 스토리지: 지속적 스토리지에 루트가 아닌 사용자 액세스를 추가할 수 없음을
참조하십시오. |
| 비용 청구 | 시간별 |
| 가격 책정 | 가격 정보 |
| 특성 | 설정 |
|---|---|
| 이름 | ibmc-file-customibmc-file-retain-custom |
| 유형 | 성능 |
| 파일 시스템 | NFS |
| IOPS 및 크기 |
|
| 하드 디스크 |
IOPS 대 기가바이트 비율은 프로비저닝되는 하드 디스크의 유형을 결정합니다. IOPS 대 기가바이트 비율을 결정하려면 IOPS를 스토리지의 크기로 나누십시오.
|
| 재확보 정책 | ibmc-file-custom: 삭제ibmc-file-retain-custom: 유지 |
| 비용 청구 | 시간별 |
| 가격 책정 | 가격 정보 |
사용자 정의된 샘플 스토리지 클래스
사용자 정의된 스토리지 클래스를 작성하고 PVC에서 해당 스토리지 클래스를 사용할 수 있습니다.
IBM Cloud Kubernetes Service는 특정 계층 및 구성으로 File Storage for Classic 를 프로비저닝하는 데 사용할 수 있는 사전 정의된 스토리지 클래스를 제공합니다. 일부 경우에는 사전 정의된 스토리지 클래스에 포함되지 않은 다른 구성으로 스토리지를 프로비저닝하려고 할 수도 있습니다. 이 주제의 예를 사용하여 사용자 정의된 스토리지 클래스의 샘플을 찾아볼 수 있습니다.
사용자 정의된 스토리지 클래스를 작성하려면 스토리지 클래스 사용자 정의를 참조하십시오. 그 후 PVC에서 사용자 정의된 스토리지 클래스를 사용하십시오.
토폴로지 인식 스토리지 작성
다중 구역 클러스터에서 File Storage for Classic를 사용하려면 볼륨을 읽고 쓸 수 있도록 File Storage for Classic 인스턴스와 동일한 구역에서 팟(Pod)이 스케줄되어야 합니다. Kubernetes가 토폴로지 인식 볼륨 스케줄링을 도입하기 전에 스토리지를 동적으로 프로비저닝하면 PVC가 작성될 때 File Storage for Classic 인스턴스가 자동으로 작성되었습니다. 그런 다음, 팟(Pod)을 작성할 때 Kubernetes 스케줄러는 File Storage for Classic 인스턴스와 동일한 데이터 센터의 작업자 노드에 팟(Pod)을 배치하려고 했습니다.
팟(Pod)의 제한조건을 모르고 File Storage for Classic 인스턴스를 작성하면 원하지 않는 결과가 발생할 수 있습니다. 예를 들어, 작업자 노드에 리소스가 충분하지 않거나 작업자 노드가 오염되어 팟(Pod)이 스케줄될 수 없어 팟(Pod)이 스토리지와 동일한 작업자 노드에 스케줄되지 않을 수도 있습니다. 토폴로지 인식 볼륨 스케줄링을 사용하면 스토리지를 사용하는 첫 번째 팟(Pod)이 작성될 때까지 File Storage for Classic 인스턴스가 지연됩니다.
다음 예제는 이 스토리지를 사용하는 첫 번째 팟(Pod)이 스케줄될 준비가 될 때까지 File Storage for Classic 인스턴스 작성을 지연시키는 스토리지 클래스를 작성하는 방법을 보여줍니다. 작성을 지연하려면 volumeBindingMode: WaitForFirstConsumer 옵션을 포함해야 합니다. 이 옵션을 포함하지 않으면 volumeBindingMode가 자동으로
Immediate로 자동 설정되며 PVC를 작성할 때 File Storage for Classic 인스턴스가 작성됩니다.
내구성 File Storage for Classic의 예.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-file-bronze-delayed
parameters:
billingType: hourly
classVersion: "2"
iopsPerGB: "2"
sizeRange: '[20-12000]Gi'
type: Endurance
provisioner: ibm.io/ibmc-file
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
성능 File Storage for Classic의 예.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-file-performance-storageclass
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-file
parameters:
billingType: "hourly"
classVersion: "2"
sizeIOPSRange: |-
"[20-39]Gi:[100-1000]"
"[40-79]Gi:[100-2000]"
"[80-99]Gi:[100-4000]"
"[100-499]Gi:[100-6000]"
"[500-999]Gi:[100-10000]"
"[1000-1999]Gi:[100-20000]"
"[2000-2999]Gi:[200-40000]"
"[3000-3999]Gi:[200-48000]"
"[4000-7999]Gi:[300-48000]"
"[8000-9999]Gi:[500-48000]"
"[10000-12000]Gi:[1000-48000]"
type: "Performance"
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
다중 구역 클러스터에 대한 구역 지정
특정 구역에 File Storage for Classic를 작성하려는 경우 사용자 정의 스토리지 클래스에 구역과 지역을 지정할 수 있습니다.
특정 구역에서 정적으로 File Storage for Classic를 프로비저닝하려는 경우에는 사용자 정의된 스토리지 클래스를 사용하십시오. 그 외의 모든 경우에는 PVC에 구역을 직접 지정하십시오.
사용자 정의된 스토리지 클래스를 작성하는 경우 클러스터 및 작업자 노드가 있는 동일한 지역 및 구역을 지정하십시오. 클러스터의 지역을 가져오려면 ibmcloud ks cluster get --cluster <cluster_name_or_ID>를 실행하여 마스터 URL에서 지역 접두부를 찾으십시오(예: https://c2.eu-de.containers.cloud.ibm.com:11111에서
eu-de). 작업자 노드의 구역을 가져오려면 ibmcloud ks worker ls --cluster <cluster_name_or_ID>를 실행하십시오.
내구성 File Storage for Classic의 예.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-file-silver-mycustom-storageclass
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-file
parameters:
zone: "dal12"
region: "us-south"
type: "Endurance"
iopsPerGB: "4"
sizeRange: "[20-12000]Gi"
reclaimPolicy: "Delete"
classVersion: "2"
reclaimPolicy: Delete
volumeBindingMode: Immediate
성능 File Storage for Classic의 예.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-file-performance-storageclass
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-file
parameters:
zone: "dal12"
region: "us-south"
billingType: "hourly"
classVersion: "2"
sizeIOPSRange: |-
"[20-39]Gi:[100-1000]"
"[40-79]Gi:[100-2000]"
"[80-99]Gi:[100-4000]"
"[100-499]Gi:[100-6000]"
"[500-999]Gi:[100-10000]"
"[1000-1999]Gi:[100-20000]"
"[2000-2999]Gi:[200-40000]"
"[3000-3999]Gi:[200-48000]"
"[4000-7999]Gi:[300-48000]"
"[8000-9999]Gi:[500-48000]"
"[10000-12000]Gi:[1000-48000]"
type: "Performance"
reclaimPolicy: Delete
volumeBindingMode: Immediate
기본 NFS 버전 변경
다음 사용자 정의된 스토리지 클래스는 프로비저닝하려는 NFS 버전을 정의할 수 있도록 허용합니다. 예를 들어, NFS 버전 3.0을 프로비저닝하려면 <nfs_version>을 3.0으로 대체하십시오.
내구성 File Storage for Classic의 예.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-file-mount
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-file
parameters:
type: "Endurance"
iopsPerGB: "2"
sizeRange: "[1-12000]Gi"
reclaimPolicy: "Delete"
classVersion: "2"
mountOptions: nfsvers=<nfs_version>
성능 File Storage for Classic의 예.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ibmc-file-mount
labels:
kubernetes.io/cluster-service: "true"
provisioner: ibm.io/ibmc-file
parameters:
type: "Performance"
classVersion: "2"
sizeIOPSRange: |-
"[20-39]Gi:[100-1000]"
"[40-79]Gi:[100-2000]"
"[80-99]Gi:[100-4000]"
"[100-499]Gi:[100-6000]"
"[500-999]Gi:[100-10000]"
"[1000-1999]Gi:[100-20000]"
"[2000-2999]Gi:[200-40000]"
"[3000-3999]Gi:[200-48000]"
"[4000-7999]Gi:[300-48000]"
"[8000-9999]Gi:[500-48000]"
"[10000-12000]Gi:[1000-48000]"
mountOptions: nfsvers=<nfs_version>
클러스터에서 지속적 스토리지 제거
클러스터에서 지속적 스토리지를 설정하는 경우에는 스토리지를 요청하는 Kubernetes 지속적 볼륨 클레임(PVC), 팟(Pod)에 마운트되고 PVC에서 설명되는 Kubernetes 지속적 볼륨(PV), 그리고 IBM Cloud 인프라 인스턴스(예: 클래식 파일 또는 블록 스토리지)의 세 개의 기본 컴포넌트가 있습니다. 스토리지를 작성한 방법에 따라 3개 컴포넌트 모두를 별도로 삭제해야 할 수 있습니다.
스토리지 제거 옵션 이해
IBM Cloud 계정에서 지속적 스토리지를 제거하는 것은 스토리지를 프로비저닝한 방식과 이미 제거한 컴포넌트에 따라 다릅니다.
- 클러스터를 삭제하면 내 영구 저장소도 삭제되나요?
- 클러스터 삭제 중에 지속적 스토리지를 제거하는 옵션이 있습니다. 그러나 스토리지가 프로비저닝된 방식에 따라 스토리지 제거에는 모든 스토리지 컴포넌트가 포함되지 않을 수 있습니다.
reclaimPolicy: Delete가 설정된 스토리지 클래스를 사용하여 스토리지를 동적으로 프로비저닝한 경우, 클러스터를 삭제하면 PVC, PV 및 스토리지 인스턴스가 자동으로 삭제됩니다. 정적으로 프로비저닝된 스토리지나reclaimPolicy: Retain``을 설정하는 스토리지 클래스를 사용하여 프로비저닝한 스토리지의 경우, 클러스터를 삭제하면 PVC와 PV는 제거되지만 스토리지 인스턴스와 데이터는 그대로 유지됩니다. 계속해서 스토리지 인스턴스에 대한 비용이 청구됩니다. 또한 비정상 상태에서 클러스터를 삭제한 경우, 제거를 선택했어도 스토리지가 아직 존재할 수 있습니다. - 클러스터는 그대로 두고 스토리지만 삭제하려면 어떻게 해야 하나요?
reclaimPolicy: Delete를 설정하는 스토리지 클래스로 스토리지를 동적으로 프로비저닝한 경우 PVC를 제거하여 지속적 스토리지의 삭제 프로세스를 시작할 수 있습니다. 사용자 PVC, PV 및 스토리지 인스턴스가 자동으로 제거됩니다. 정적으로 프로비저닝된 스토리지 또는reclaimPolicy: Retain``를 설정하는 스토리지 클래스를 사용하여 프로비저닝한 스토리지의 경우, 추가 요금이 부과되지 않도록 PVC, PV 및 스토리지 인스턴스를 수동으로 제거해야 합니다.- 저장 공간을 삭제하면 요금이 어떻게 중단되나요?
- 삭제하는 스토리지 컴포넌트 항목과 시점에 따라 비용 청구 주기가 즉시 중지되지 않을 수 있습니다. PVC 및 PV를 삭제하지만 IBM Cloud 계정의 스토리지 인스턴스는 삭제하지 않은 경우, 해당 인스턴스는 계속 존재하게 되며 이에 대한 비용을 지불하게 됩니다.
PVC, PV 및 스토리지 인스턴스를 삭제하는 경우 비용 청구 주기는 스토리지를 프로비저닝할 때 선택한 billingType과 스토리지를 삭제하도록 선택한 방식에 따라 달라집니다.
-
IBM Cloud 콘솔이나 CLI에서 영구 스토리지 인스턴스를 수동으로 취소하면 다음과 같이 과금이 중단됩니다
- 시간별 스토리지: 비용 청구가 즉시 중지됩니다. 스토리지가 취소된 후 최대 72시간 동안 스토리지 인스턴스가 콘솔에 표시될 수 있습니다.
- 월별 스토리지: 즉시 취소 또는 기념일에 취소 중에서 선택할 수 있습니다. 두 경우 모두 현재 비용 청구 주기가 끝날 때까지 계속해서 비용이 청구되며 다음 비용 청구 주기에 대한 비용 청구가 중지됩니다. 스토리지가 취소된 후 최대 72시간 동안 스토리지 인스턴스가 콘솔 또는 CLI에 표시될 수 있습니다.
- 즉시 취소: 스토리지를 즉시 제거할 경우 이 옵션을 선택합니다. 사용자가 스토리지를 더 이상 사용하지 않거나 데이터를 복구하지 않는 경우가 해당됩니다.
- 기념일: 다음 기념일에 스토리지를 취소할 경우 이 옵션을 선택합니다. 예를 들어, 데이터를 백업할 시간을 팀에 알려주기 위해 스토리지 인스턴스는 다음 기념일까지 활성 상태로 유지되며 이 날짜까지 계속해서 사용할 수 있습니다.
-
reclaimPolicy: Delete를 설정하는 스토리지 클래스로 스토리지를 동적으로 프로비저닝하고 PVC를 제거하도록 선택하는 경우 PV 및 스토리지 인스턴스가 즉시 제거됩니다. 매시간 비용 청구된 스토리지의 경우, 비용 청구가 즉시 중지됩니다. 매월 청구되는 스토리지의 경우 해당 월의 나머지에 대해 비용이 청구됩니다. 스토리지가 제거되고 비용 청구가 중지된 후 최대 72시간 동안 스토리지 인스턴스가 콘솔 또는 CLI에 표시될 수 있습니다.
- 영구 저장소를 삭제하기 전에 무엇을 주의해야 하나요?
- 지속적 스토리지를 정리하면 그 안에 저장된 모든 데이터가 삭제됩니다. 데이터 사본이 필요한 경우 백업을 만드세요.
- 저장소 인스턴스를 삭제했습니다. 왜 내 인스턴스가 여전히 표시되나요?
- 지속적 스토리지를 제거한 후 제거가 완전히 처리되고 IBM Cloud 콘솔 또는 CLI에서 스토리지가 표시되지 않으려면 최대 72 시간이 걸릴 수 있습니다.
지속적 스토리지 정리
지속적 스토리지에 대한 추가 비용이 부과되지 않도록 IBM Cloud 계정에서 PVC, PV 및 스토리지 인스턴스를 제거합니다.
시작하기 전에:
- 보존할 데이터를 백업했는지 확인하십시오.
- 계정에 로그인하십시오. If applicable, target the appropriate resource group. 클러스터에 대한 컨텍스트를 설정하십시오.
지속적 데이터를 정리하려면 다음을 수행하십시오.
-
클러스터의 PVC를 나열하고 PVC의
NAME,STORAGECLASS, 그리고 PVC에 바인드되고 **VOLUME**으로 표시되는 PV의 이름을 기록해 두십시오.kubectl get pvc출력 예
NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE claim1 Bound pvc-06886b77-102b-11e8-968a-f6612bb731fb 20Gi RWO class 78d claim2 Bound pvc-457a2b96-fafc-11e7-8ff9-b6c8f770356c 4Gi RWX class 105d claim3 Bound pvc-1efef0ba-0c48-11e8-968a-f6612bb731fb 24Gi RWX class 83d -
스토리지 클래스에 대한
ReclaimPolicy및 **billingType**을 검토하십시오.kubectl describe storageclass <storageclass_name>재확보 정책에서
Delete를 표시하는 경우에는 PVC를 제거할 때 PV 및 실제 스토리지가 제거됩니다. 재확보 정책에서Retain을 표시하거나 사용자가 스토리지 클래스 없이 스토리지를 프로비저닝한 경우에는 PVC를 제거할 때 PV 및 실제 스토리지가 제거되지 않습니다. 사용자가 PVC, PV 및 실제 스토리지를 개별적으로 제거해야 합니다.스토리지가 매월 비용 청구되는 경우에는 비용 청구 주기가 종료되기 전에 스토리지를 제거해도 여전히 해당 월 전체에 대해 비용이 청구됩니다.
-
PVC를 마운트하는 팟(Pod)을 제거하십시오. PVC를 마운트하는 팟(Pod)을 나열하십시오. 팟(Pod)이 CLI 출력에서 리턴되지 않으면 PVC를 사용하는 팟(Pod)이 없는 것입니다.
kubectl get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"출력 예
depl-12345-prz7b: claim1 -
PVC를 사용하는 팟(Pod)을 제거하십시오. 팟(Pod)이 배치의 일부인 경우에는 배치를 제거하십시오.
kubectl delete pod <pod_name> -
팟(Pod)이 제거되었는지 확인하십시오.
kubectl get pods -
PVC를 제거하십시오.
kubectl delete pvc <pvc_name> -
PV의 상태를 검토하십시오. 이전에 검색한 PV의 이름을 **
VOLUME**으로 사용하십시오. PVC를 제거하면 PVC에 바인드된 PV가 릴리스됩니다. 스토리지를 프로비저닝하는 방법에 따라, PV는Deleting상태(PV가 자동 삭제되는 경우) 또는Released상태(PV를 수동 삭제해야 하는 경우)가 됩니다. 참고: 자동 삭제되는 PV의 경우에는 삭제되기 전에 상태가 잠시Released로 표시될 수 있습니다. 잠시 후에 명령을 다시 실행하면 PV가 제거되었는지 여부를 볼 수 있습니다.kubectl get pv <pv_name> -
PV가 삭제되지 않은 경우에는 PV를 수동으로 제거하십시오.
kubectl delete pv <pv_name> -
PV가 제거되었는지 확인하십시오.
kubectl get pv -
PV가 가리키는 실제 스토리지 인스턴스를 나열하고 실제 스토리지 인스턴스의 **
id**를 기록해 두십시오.ibmcloud sl file volume-list --columns id --columns notes | grep <pv_name>File Storage for Classic에 대한 출력 예.
id notes 12345678 {"plugin":"ibm-file-plugin-5b55b7b77b-55bb7","region":"us-south","cluster":"aa1a11a1a11b2b2bb22b22222c3c3333","type":"Endurance","ns":"default","pvc":"mypvc","pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7","storageclass":"ibmc-file-gold"}"plugin":"ibm-file-plugin-5b55b7b77b-55bb7"- 클러스터가 사용하는 스토리지 플러그인입니다.
"region":"us-south"- 클러스터가 있는 지역입니다.
"cluster":"aa1a11a1a11b2b2bb22b22222c3c3333"- 스토리지 인스턴스와 연관된 클러스터 ID입니다.
"type":"Endurance"- 파일 또는 블록 스토리지의 유형(
Endurance또는Performance)입니다. "ns":"default"- 스토리지 인스턴스가 배치되는 네임스페이스입니다.
"pvc":"mypvc"- 스토리지 인스턴스와 연관된 PVC의 이름입니다.
"pv":"pvc-d979977d-d79d-77d9-9d7d-d7d97ddd99d7"- 스토리지 인스턴스와 연관된 PV입니다.
"storageclass":"ibmc-file-gold"- 스토리지 클래스의 유형(브론즈, 실버, 골드 또는 사용자 정의)입니다.
-
실제 스토리지 인스턴스를 제거하십시오.
ibmcloud sl file volume-cancel <classic_file_id> -
실제 스토리지 인스턴스가 제거되었는지 확인하십시오.
ibmcloud sl file volume-list
삭제 프로세스는 완료되는 데 최대 72시간이 걸릴 수 있습니다.
파일 스토리지에 신뢰할 수 있는 프로필 할당하기
신뢰할 수 있는 프로필을 사용하여 스토리지 솔루션을 비롯한 계정의 리소스에 대한 액세스 권한을 다른 IBM Cloud ID에 부여할 수 있습니다. 신뢰할 수 있는 프로필은 액세스 제어를 중앙 집중화하고, 수명이 긴 API 키가 필요하지 않으며, 특정 작업에 필요한 최소한의 권한으로만 범위를 지정할 수 있습니다. 자세한 내용은 스토리지 구성 요소에 대한 신뢰할 수 있는 프로필 구성을 참조하세요.