IBM Cloud Object Storage 클러스터 애드온 설치하기
IBM Cloud 콘솔이나 CLI에서 ‘ IBM Cloud Object Storage ’ 애드온을 활성화할 수 있습니다.
전제조건:
- IBM Cloud Object Storage 애드온에는 최소 0.3 vCPU 및 360MB의 메모리가 필요합니다.
- 이 애드온은 Red Hat CoreOS (RHCOS) 및 Ubuntu 작업자 노드에서 사용할 수 있습니다. 클러스터에 RHEL 및 RHCOS 노드가 모두 있는 경우 애드온은 RHCOS 노드에만 배포됩니다.
- IBM Cloud Object Storage 인스턴스를 설정합니다.
- 선택 사항 버킷 버전 관리를 사용하려는 경우 버킷에서 버킷 버전 관리를 사용하거나 사용하지 않으려면 서비스 자격 증명에 관리자 또는 작성자 권한이 있어야 합니다. 자세한 내용은 ‘버전 관리 시작하기’를 참조하십시오.
버킷 생성 및 제거에 대한 이해
- PVC에 버킷 이름을 지정하여 기존 버킷을 사용할 수 있습니다.
- 버킷 이름을 입력했는데 해당 버킷이 존재하지 않으면 해당 이름의 버킷이 만들어집니다.
- 버킷 이름을 제공하지 않으면 명명
temp-xxx따라 버킷이 만들어집니다. - 버킷은 스토리지 클래스에 정의된 회수 정책에 따라 삭제됩니다.
reclaimPolicy: Delete설정하면 PVC가 삭제될 때 버킷이 삭제됩니다.reclaimPolicy: Retain설정하면 PVC가 삭제된 후에도 버킷이 유지됩니다.
콘솔에서 ‘ IBM Cloud Object Storage ’ 애드온 활성화하기
- Red Hat OpenShift on IBM Cloud 클러스터 대시보드 에서 애드온을 활성화할 클러스터를 선택합니다.
- ‘추가 기능 ’ 섹션에서 Cloud Object Storage 애드온을 찾아 ‘설치’를 클릭하십시오.
- “애드온 설치: Cloud Object Storage ” 패널에서 “버전” 드롭다운 메뉴에서 버전을 선택하십시오.
- 선택 사항: 다음 매개변수를 구성하십시오.
maxVolumesPerNode- 단일 노드에 마운트할 수 있는 IBM Cloud Object Storage 볼륨의 최대 개수를 설정합니다. 기본값은
0``이며, 이는 제한이 적용되지 않음을 의미합니다. restrictNodeServerSchedulingtrue로 설정하면, 노드 서버 포드가cos.csi.ibm.io/csi-node=true레이블이 지정된 노드에서만 실행되도록 제한할 수 있습니다. 기본값은false``이며, 이는 노드 서버 파드가 모든 노드에 스케줄링된다는 것을 의미합니다.
- 설치를 클릭하십시오. 추가 기능을 배치하여 사용할 준비가 될 때까지 몇 분 정도 소요될 수 있습니다.
- 설치를 확인하십시오. ‘추가 기능 ’ 섹션에서 Cloud Object Storage 애드온의 건강 상태가 ‘정상’으로 표시되는지 확인하십시오.
CLI에서 IBM Cloud Object Storage 애드온 활성화하기
시작하기 전에: Red Hat OpenShift 클러스터에 액세스하십시오.
container-service플러그인을 최신 버전으로 업데이트하십시오.ibmcloud update && ibmcloud plugin update container-service- 애드온을 나열하고 설치할 버전을 찾습니다.
ibmcloud oc cluster addon versions - 추가 기능 옵션을 검토하십시오.
ibmcloud oc cluster addon options --addon ibm-object-csi-driver [--version VERSION] - 애드온을 설치합니다.
ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER [--version VERSION] - 설치를 확인하십시오.
ibmcloud oc cluster addon ls --cluster CLUSTEROK Name Version Health State Health Status ibm-object-csi-driver 1.0 normal Addon Ready. For more info: http://ibm.biz/addon-state (H1500) - 사용 가능한 스토리지 클래스를 나열하십시오. 이 드라이버는
s3fs및rclone마운터에 대해 지역 내 및 지역 간 스토리지 클래스를 모두 지원합니다.oc get sc | grep objectibm-object-storage-smart-cross-region-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-cross-region-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-smart-cross-region-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-cross-region-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-smart-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-smart-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-smart-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-cross-region-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-cross-region-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-cross-region-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-cross-region-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-rclone cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-rclone-retain cos.s3.csi.ibm.io Retain Immediate false 17h ibm-object-storage-standard-s3fs cos.s3.csi.ibm.io Delete Immediate false 17h ibm-object-storage-standard-s3fs-retain cos.s3.csi.ibm.io Retain Immediate false 17h
노드 서버 포드 스케줄링 제한
기본적으로 COS CSI 드라이버 노드 서버 파드는 클러스터 내의 모든 노드에 스케줄링됩니다. restrictNodeServerScheduling 매개변수를 사용하면 노드 서버 포드의 스케줄링을 cos.csi.ibm.io/csi-node=true 레이블이 지정된 노드로만 제한할 수 있습니다.
restrictNodeServerScheduling 는 애드온을 활성화할 때 구성할 수 있으며, 나중에 ConfigMap 파일을 수정하여 업데이트할 수도 있습니다.
- 애드온을 활성화할 때
restrictNodeServerScheduling를 설정하려면, 활성화 명령어에--param플래그를 포함시키십시오.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "restrictNodeServerScheduling=true" - 애드온이 이미 활성화된 상태에서
restrictNodeServerScheduling을 업데이트하려면 다음 단계를 따르세요.
- 클러스터에 있는 노드를 나열하고, COS 드라이버 포드를 실행할 위치를 결정하십시오.
출력 예oc get nodesNAME STATUS ROLES AGE VERSION 10.241.0.11 Ready <none> 5d2h v1.35.5+IKS 10.241.0.12 Ready <none> 5d2h v1.35.5+IKS 10.241.0.13 Ready <none> 5d2h v1.35.5+IKS 10.241.128.10 Ready <none> 5d2h v1.35.5+IKS 10.241.128.11 Ready <none> 5d2h v1.35.5+IKS 10.241.128.9 Ready <none> 5d2h v1.35.5+IKS 10.241.65.12 Ready <none> 5d2h v1.35.5+IKS 10.241.65.13 Ready <none> 5d2h v1.35.5+IKS 10.241.65.14 Ready <none> 5d2h v1.35.5+IKS - 모든 노드에서 노드 서버 포드가 현재 실행 중인지 확인하십시오.
출력 예oc get pods -n ibm-object-csi-operator -l app.kubernetes.io/component=node -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ibm-object-csi-node-2pj2j 3/3 Running 0 145m 172.17.14.10 10.241.0.12 <none> <none> ibm-object-csi-node-7bhwh 3/3 Running 0 145m 172.17.1.72 10.241.65.12 <none> <none> ibm-object-csi-node-7l9hc 3/3 Running 0 145m 172.17.17.6 10.241.128.9 <none> <none> ibm-object-csi-node-cxzt7 3/3 Running 0 145m 172.17.39.72 10.241.0.11 <none> <none> ibm-object-csi-node-dw6qs 3/3 Running 0 145m 172.17.46.77 10.241.128.10 <none> <none> ibm-object-csi-node-rpcvr 3/3 Running 0 145m 172.17.32.198 10.241.65.13 <none> <none> ibm-object-csi-node-swqtg 3/3 Running 0 145m 172.17.16.69 10.241.0.13 <none> <none> ibm-object-csi-node-sxbbs 3/3 Running 0 145m 172.17.26.7 10.241.65.14 <none> <none> ibm-object-csi-node-xm8bt 3/3 Running 0 145m 172.17.20.200 10.241.128.11 <none> <none> - 노드서버 파드가 스케줄링되기를 원하는 노드에 레이블을 지정하세요.
출력 예oc label nodes NODE-NAME-1 NODE-NAME-2 cos.csi.ibm.io/csi-node=truenode/10.241.0.11 labeled node/10.241.0.12 labeled - ConfigMap 를 업데이트하여 제한 기능을 활성화하십시오.
출력 예oc patch cm managed-addon-ibm-object-csi-driver -n kube-system \ --type merge -p '{"data":{"restrictNodeServerScheduling":"true"}}'configmap/managed-addon-ibm-object-csi-driver patched - 노드 서버 파드가 라벨이 지정된 노드에만 스케줄링되는지 확인하십시오.
출력 예oc get pods -n ibm-object-csi-operator -l app.kubernetes.io/component=node -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES ibm-object-csi-node-cxzt7 3/3 Running 0 145m 172.17.39.72 10.241.0.11 <none> <none> ibm-object-csi-node-7bhwh 3/3 Running 0 145m 172.17.1.72 10.241.65.12 <none> <none>
| 설정 | 동작 |
|---|---|
restrictNodeServerScheduling: "false"(기본값) |
Nodeserver 파드는 모든 노드에 스케줄링됩니다. |
restrictNodeServerScheduling: "true" |
Nodeserver 파드는 ‘ cos.csi.ibm.io/csi-node=true ’ 레이블이 지정된 노드에만 스케줄링됩니다. |
노드별 최대 볼륨 수 설정
기본적으로 COS CSI 드라이버는 단일 노드에 마운트할 수 있는 볼륨의 수를 제한하지 않습니다. maxVolumesPerNode 매개변수를 사용하여 노드당 볼륨의 최대 개수를 설정할 수 있습니다.
maxVolumesPerNode 는 애드온을 활성화할 때 구성할 수 있으며, 나중에 ConfigMap 파일을 수정하여 업데이트할 수도 있습니다.
- 애드온을 활성화할 때
maxVolumesPerNode를 설정하려면, 활성화 명령어에--param플래그를 포함시키십시오.ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER --param "maxVolumesPerNode=VALUE" - 애드온이 이미 활성화된 상태에서
maxVolumesPerNode을 업데이트하려면, 관리형 애드온 ConfigMap 에 패치를 적용하십시오.출력 예oc patch cm managed-addon-ibm-object-csi-driver -n kube-system --type merge -p '{"data":{"maxVolumesPerNode":"VALUE"}}'configmap/managed-addon-ibm-object-csi-driver patched
| 설정 | 동작 |
|---|---|
maxVolumesPerNode: "0"(기본값) |
노드당 마운트할 수 있는 볼륨 수에는 제한이 없습니다. |
maxVolumesPerNode: "VALUE" |
단일 노드에 마운트할 수 있는 볼륨 수를 지정된 값으로 제한합니다. |
다음 기능을 사용하는 앱을 배포하려면 IBM Cloud Object Storage
COS 자격 증명이 포함된 ‘ Kubernetes ’ 시크릿을 생성합니다.
-
다음 구성을
secret.yaml파일로 저장합니다. IAM 자격 증명 또는 HMAC 중 하나만 제공하되 둘 다 제공하면 안 됩니다.- IAM 자격 증명의 경우 Object Storage 에서
apiKey와serviceId을 조합하여 사용합니다. - HMAC 자격 증명의 경우 Object Storage 에서
accessKey및secretKey을 사용합니다.
apiVersion: v1 kind: Secret type: cos-s3-csi-driver metadata: name: cos-secret-1 # Name your secret. This same name is used for the PVC in the following steps. namespace: <namespace> # Specify the namespace where you want to create the secret. data: apiKey: <base64-encoded-COS-Service-Instance-apikey> serviceID: <base64-encoded-COS-resource_instance_id> accessKey: <base64-encoded-HMAC-access_key_id> secretKey: <base64-encoded-HMAC-secret_access_key> kp-root-key-crn: <CRN> # Key Protect or HPCS root key crn in base64 encoded format stringData: bucketName: <bucket-name> # Optional. If you don't provide a bucket name, a bucket with the naming convention s3fs-timestamp-xxx or rclone-timestamp-xxx is created. bucketVersioning: "false" # Bucket versioning is set to false by default. Set to "true" to enable bucket versioning. Set to "false" to disable versioning for a bucket where versioning is enabled. Must be a string value. # uid: "3000" # Optional: Provide a uid to run as non root user. This must match runAsUser in SecurityContext of pod spec. mountOptions: | # Review or update the following default s3fs mount options #multipart_size=52 #multireq_max=20 #max_dirty_data=5120 #parallel_count=20 #max_stat_cache_size=100000 #retries=5 #kernel_cache # Review or update the following default rclone mount options #acl=private #bucket_acl=private #upload_cutoff=100Mi #chunk_size=16Mi #max_upload_parts=1000 #upload_concurrency=8mountOptions- 비밀 번호에서
mountOptions을 편집하여s3fs또는rclone에 대한 마운트 옵션을 사용자 지정할 수 있습니다. 지정하는 옵션을 PVC에서 사용하는 스토리지 클래스에 맞게 조정합니다. 스토리지 클래스의 기본값을 검토하려면oc describe storageclass <storageclass_name>또는oc describe storageclass <storageclass_name>을 실행하세요. 자세한 내용은 s3fs 마운트 옵션 및rclone마운트 옵션을 참조하세요.
현재 이 애드온은 각 마운트 옵션에 대한 적절한 유효성 검사를 통해 고정된 마운트 옵션 집합을 지원하도록 설정되어 있습니다. 유효성 검사 목록에 없는 다른 마운트 옵션을 사용하려면 지원팀에 문의하여 해당 옵션을 사용하도록 설정하세요.
- IAM 자격 증명의 경우 Object Storage 에서
-
모든 비밀 데이터 매개변수를 base64 으로 인코딩합니다.
echo -n "<value>" | base64 -
base64 인코딩된 값으로
secret.yaml을 업데이트합니다. -
시크릿을 작성하십시오.
oc apply -f secret.yaml
PVC 만들기
여러 PVC에 걸쳐 하나의 비밀번호를 사용하거나 PVC당 하나의 비밀번호를 사용할 수 있습니다.
PVC yaml에서 다음 어노테이션을 사용하여 이 동작을 관리할 수 있습니다. 이러한 주석은 드라이버가 PVC를 올바른 비밀 번호에 매핑하는 데 도움이 됩니다.
cos.csi.driver/secret: "<custom-secret>"
secret, PVC 및 pod가 모두 동일한 네임스페이스에 있는지 확인하십시오.
예: 1-to-1 비밀을 PVC에 매핑하기 위해 앞서 만든 비밀과 같은 이름을 PVC에 지정하여 PVC를 비밀에 매핑합니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-secret-1 # Give your PVC the same name as the secret you created in the previous step.
namespace: <namespace> # The namespace where you want to create the PVC.
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: <storage_class_name> # The storage class you want to use.
어노테이션을 사용하여 시크릿을 지정하여 많은 PVC에 하나의 시크릿을 사용하는 PVC 예시입니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cos-csi-pvc1
namespace: <namespace> # The namespace where you want to create the PVC.
annotations:
cos.csi.driver/secret: "<custom-secret>"
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 256Mi
storageClassName: <storage_class_name> # The storage class you want to use.
-
앞의 예시 중 하나를 선택하여 사용 사례에 맞게 사용자 지정하세요. 스토리지 클래스 목록은 스토리지 클래스 참조를 참조하세요.
-
PVC를 작성하십시오.
oc apply -f pvc.yaml
배치를 작성합니다.
-
다음 구성 내용을 ‘
dep.yaml’라는 파일로 저장하십시오.apiVersion: apps/v1 kind: Deployment metadata: name: <name> labels: app: <name> spec: replicas: 1 selector: matchLabels: app: <name> template: metadata: labels: app: <name> spec: containers: - name: app-frontend image: <image> # Enter your app image. imagePullPolicy: IfNotPresent volumeMounts: - mountPath: <path_you_want_to_mount_the_volume_on> # For example `/dev` name: cos-csi-volume volumes: - name: cos-csi-volume persistentVolumeClaim: claimName: <pvc_name> # Enter the name of the PVC you created earlier. -
배치를 작성하십시오.
oc apply -f dep.yaml
IBM Cloud Object Storage 애드온 비활성화하기
기존 비밀, PVC 및 배포는 애드온을 비활성화하거나 패치를 업데이트해도 삭제되지 않습니다. 기존 고객 워크로드에는 중단이 없습니다.
- 다음 명령을 실행하여 애드온을 비활성화하십시오.
출력 예ibmcloud oc cluster addon disable ibm-object-csi-driver --cluster CLUSTERData and resources that you created for the add-on might be deleted when the add-on is disabled. Continue? [y/N]> y Disabling add-on ibm-object-csi-driver for cluster XXX... OK - 애드온이 제거되었는지 확인하십시오.
ibmcloud oc cluster addon ls --cluster CLUSTER
Helm 플러그인에서 클러스터 애드온으로 마이그레이션하기
-
PVC의 세부 정보를 확인하고 마이그레이션할 PVC를 선택합니다.
oc get pvc --all-namespaces -o custom-columns='NAMESPACE:.metadata.namespace,NAME:.metadata.name' | tail -n +2 | while read namespace pvc; do kubectl describe pvc "$pvc" -n "$namespace" | grep 'volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs' > /dev/null ; if [ $? -eq 0 ]; then echo "PVC: $pvc in Namespace: $namespace uses ibm.io/ibmc-s3fs storage provisioner"; fi; done출력 예
PVC: pvc-test in Namespace: default uses ibm.io/ibmc-s3fs storage provisioner -
PVC를 설명하고 버킷 이름을 가져옵니다.
oc describe pvc <pvc_name> | grep ibm.io/bucket:출력 예
ibm.io/bucket: test-s3 -
버킷 이름을 포함하여 비밀을 다시 생성하세요.
apiVersion: v1 kind: Secret type: cos-s3-csi-driver metadata: name: cos-secret-1 # Name your secret. namespace: <namespace> # Specify the namespace where you want to create the secret. data: accessKey: <base64-encoded-HMAC-access-key> secretKey: <base64-encoded-HMAC-secret-key> stringData: bucketName: <bucket-name> # uid: "3000" # Optional: Provide a uid to run as non root user. This must match runAsUser in SecurityContext of pod spec. mountOptions: | key1=value1 key2=value2 -
PVC에 사용된 스토리지 클래스를 찾습니다.
oc describe pvc <pvc_name> | grep StorageClass:test-s3PVC에 대한 명령 예제입니다.oc describe pvc test-s3 | grep StorageClass:출력 예
StorageClass: ibmc-s3fs-smart-perf-regional -
추가 기능에서 사용할 수 있는 새로운 스토리지 클래스를 검토하고 대체 클래스를 선택합니다.
flex클래스를 사용했다면 새로운smart클래스 중 하나를 선택하세요.standard클래스를 사용했다면 새로운standard클래스 중 하나를 선택하세요.- 추가 기능에서는
cold및vault클래스를 더 이상 사용할 수 없으므로 대신smart또는standard클래스를 선택하세요.
-
PVC의 세부 정보를 검토합니다.
oc describe pvc test-s3출력 예
Name: pvc-test Namespace: default StorageClass: ibmc-s3fs-smart-perf-regional Status: Bound Volume: pvc-c625474d-31f0-4929-bc3e-feace1fb42fb Labels: <none> Annotations: ibm.io/auto-create-bucket: true ibm.io/auto-delete-bucket: true ibm.io/bucket: bha-test-s23 ibm.io/secret-name: satstoragesecret pv.kubernetes.io/bind-completed: yes pv.kubernetes.io/bound-by-controller: yes volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fs Finalizers: [kubernetes.io/pvc-protection] Capacity: 3Gi Access Modes: RWO VolumeMode: Filesystem Used By: test-pod Events: <none> -
새 스토리지 클래스를 사용하고 이전에 만든 비밀을 참조하는 대체 PVC를 만듭니다.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cos-csi-pvc1 namespace: <namespace> # The namespace where you want to create the PVC. annotations: cos.csi.driver/secret: "cos-secret-1" # Secret created in step 4 spec: accessModes: - ReadWriteOnce resources: requests: storage: 256Mi storageClassName: <storage_class_name> # The storage class you picked based on old storage class mapping. -
PVC가
Bound확인합니다.oc get pvc -
앱에 대한 자세한 정보를 확인하세요.
oc get pods -
앱 규모를 0으로 축소합니다.
kubectl scale deployment --replicas=0 my-app -
이전 단계에서 만든 PVC를 참조하는 대체 배포를 만듭니다.
-
새 배포가 실행되고 나면 이전 배포를 삭제할 수 있습니다.
-
마이그레이션하려는 각 PVC에 대해 이 단계를 반복하십시오.
IBM Cloud Object Storage 클러스터 애드온 스토리지 클래스
IBM Cloud Object Storage 클러스터 애드온은 s3fs 및 rclone 마운터를 위한 스토리지 클래스를 제공합니다. 데이터 액세스 요구사항에 맞는 스토리지 클래스를 선택하십시오. 스토리지 클래스는 워크로드에 대해 생성된 버킷의 버킷 클래스, 회수 정책 및 기본 마운트 동작을 결정합니다.
- Standard
- 웹 또는 모바일 앱용 데이터와 같이 자주 액세스하는 핫 데이터에 사용합니다.
- 스마트
- 특정 사용 패턴을 따르지 않거나 사용 패턴을 예측하기 어려운 워크로드 및 데이터에 사용합니다.
| 이름 | 버킷 클래스 | 복원성 | 마운트 | 재확보 정책 | 바인딩 모드 |
|---|---|---|---|---|---|
| ibm-객체-스토리지-스마트-크로스-리전-rclone | 스마트 | 지역 간 | rclone |
삭제 | 즉시 |
| ibm-객체-스토리지-스마트-크로스-리전-rclone-리테인 | 스마트 | 지역 간 | rclone |
유지 | 즉시 |
| ibm-object-storage-smart-cross-region-s3fs | 스마트 | 지역 간 | s3fs |
삭제 | 즉시 |
| ibm-object-storage-smart-cross-region-s3fs-retain | 스마트 | 지역 간 | s3fs |
유지 | 즉시 |
| iBM-객체-스토리지-스마트-r클론 | 스마트 | 지역 | rclone |
삭제 | 즉시 |
| iBM-객체-스토리지-스마트-r클론-유지 | 스마트 | 지역 | rclone |
유지 | 즉시 |
| ibm-object-storage-smart-s3fs | 스마트 | 지역 | s3fs |
삭제 | 즉시 |
| ibm-object-storage-smart-s3fs-retain | 스마트 | 지역 | s3fs |
유지 | 즉시 |
| ibm-객체-스토리지-표준-크로스-리전-rclone | Standard | 지역 간 | rclone |
삭제 | 즉시 |
| ibm-객체-스토리지-표준-크로스-리전-rclone-retain | Standard | 지역 간 | rclone |
유지 | 즉시 |
| ibm-object-storage-standard-cross-region-s3fs | Standard | 지역 간 | s3fs |
삭제 | 즉시 |
| ibm-object-storage-standard-cross-region-s3fs-retain | Standard | 지역 간 | s3fs |
유지 | 즉시 |
| iBM-객체-스토리지-표준-클론 | Standard | 지역 | rclone |
삭제 | 즉시 |
| iBM-객체-스토리지-표준-클론-유지 | Standard | 지역 | rclone |
유지 | 즉시 |
| ibm-object-storage-standard-s3fs | Standard | 지역 | s3fs |
삭제 | 즉시 |
| ibm-object-storage-standard-s3fs-retain | Standard | 지역 | s3fs |
유지 | 즉시 |
스토리지 클래스에 대한 자세한 버킷 구성을 검토하려면 oc describe storageclass <storageclass_name> 또는 oc describe storageclass <storageclass_name> 을 실행하세요.
스토리지 클래스 매개변수
모든 클러스터 애드온 스토리지 클래스에는 다음과 같은 핵심 매개변수가 포함되어 있습니다.
| 매개변수 | 설명 |
|---|---|
client |
드라이버가 사용하는 클라이언트 유형을 식별합니다. 애드온 스토리지 클래스는 awss3 를 사용합니다. |
cosEndpoint |
버킷 영역에 대한 IBM Cloud Object Storage 엔드포인트를 정의합니다. |
csi.storage.k8s.io/node-publish-secret-name |
IBM Cloud Object Storage 자격 증명이 포함된 비밀의 이름을 참조합니다. |
csi.storage.k8s.io/node-publish-secret-namespace |
IBM Cloud Object Storage 자격 증명이 포함된 비밀의 네임스페이스를 참조합니다. |
locationConstraint |
au-syd-smart 또는 au-syd-standard 과 같은 버킷 클래스 및 지역을 정의합니다. |
mounter |
스토리지 클래스가 s3fs 또는 rclone 마운터를 사용할지 여부를 지정합니다. |
기본 s3fs 스토리지 클래스 마운트 옵션
s3fs 스토리지 클래스는 다음과 같은 기본 마운트 옵션을 사용합니다.
| 마운트 옵션 | 설명 |
|---|---|
multipart_size=52 |
각 멀티파트 요청에 대한 파트 크기를 MB 단위로 설정합니다. |
multireq_max=20 |
리스팅 객체에 대한 최대 병렬 요청 수를 설정합니다. |
max_dirty_data=5120 |
지정된 수의 MB가 쓰여진 후 더티 데이터를 S3 로 플러시합니다. 지원되는 최소 값은 50 입니다. -1 값은 이 동작을 비활성화합니다. |
parallel_count=20 |
대용량 오브젝트를 업로드하기 위한 병렬 요청 수를 설정합니다. s3fs 멀티파트 요청을 사용하여 대용량 오브젝트를 업로드하고 요청을 병렬로 보냅니다. |
max_stat_cache_size=100000 |
통계 캐시 및 심볼릭 링크 캐시의 최대 항목 수를 설정합니다. |
retries=5 |
실패한 S3 트랜잭션을 다시 시도할 횟수를 설정합니다. |
kernel_cache |
볼륨 마운트 지점에 대한 커널 버퍼 캐시를 활성화합니다. IBM Cloud Object Storage 에서 읽은 데이터는 더 빠른 읽기 액세스를 제공하기 위해 커널 캐시에 저장됩니다. 커널 캐시는 표준 및 스마트 s3fs 스토리지 클래스에 대해 활성화됩니다. |
기본 rclone 스토리지 클래스 마운트 옵션
rclone 스토리지 클래스는 다음과 같은 기본 마운트 옵션을 사용합니다.
| 마운트 옵션 | 설명 |
|---|---|
acl=private |
업로드된 개체가 공개적으로 액세스되지 않도록 합니다. |
bucket_acl=private |
rclone 이 만드는 버킷의 기본 ACL을 private 으로 설정합니다. |
upload_cutoff=100Mi |
멀티파트 업로드를 사용하여 100 MiB 보다 큰 파일을 업로드합니다. 작은 파일은 한 번의 요청으로 업로드됩니다. |
chunk_size=16Mi |
멀티파트 업로드에서 각 파트의 크기를 설정합니다. |
max_upload_parts=1000 |
멀티파트 업로드당 최대 파트 수를 설정하고 구성된 chunk_size 으로 지원되는 최대 파일 크기를 간접적으로 제한합니다. chunk_size=16Mi 의 경우 최대 파일 크기는 16 GiB 입니다. |
upload_concurrency=8 |
멀티파트 업로드 중에 병렬로 업로드되는 파트의 수를 설정합니다. |