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 ’ 애드온 활성화하기

  1. Red Hat OpenShift on IBM Cloud 클러스터 대시보드 에서 애드온을 활성화할 클러스터를 선택합니다.
  2. ‘추가 기능 ’ 섹션에서 Cloud Object Storage 애드온을 찾아 ‘설치’를 클릭하십시오.
  3. 애드온 설치: Cloud Object Storage ” 패널에서 “버전” 드롭다운 메뉴에서 버전을 선택하십시오.
  4. 선택 사항: 다음 매개변수를 구성하십시오.
maxVolumesPerNode
단일 노드에 마운트할 수 있는 IBM Cloud Object Storage 볼륨의 최대 개수를 설정합니다. 기본값은 0``이며, 이는 제한이 적용되지 않음을 의미합니다.
restrictNodeServerScheduling
true 로 설정하면, 노드 서버 포드가 cos.csi.ibm.io/csi-node=true 레이블이 지정된 노드에서만 실행되도록 제한할 수 있습니다. 기본값은 false``이며, 이는 노드 서버 파드가 모든 노드에 스케줄링된다는 것을 의미합니다.
  1. 설치를 클릭하십시오. 추가 기능을 배치하여 사용할 준비가 될 때까지 몇 분 정도 소요될 수 있습니다.
  2. 설치를 확인하십시오. ‘추가 기능 ’ 섹션에서 Cloud Object Storage 애드온의 건강 상태가 ‘정상’으로 표시되는지 확인하십시오.

CLI에서 IBM Cloud Object Storage 애드온 활성화하기

시작하기 전에: Red Hat OpenShift 클러스터에 액세스하십시오.

  1. container-service 플러그인을 최신 버전으로 업데이트하십시오.
    ibmcloud update && ibmcloud plugin update container-service
    
  2. 애드온을 나열하고 설치할 버전을 찾습니다.
    ibmcloud oc cluster addon versions
    
  3. 추가 기능 옵션을 검토하십시오.
    ibmcloud oc cluster addon options --addon ibm-object-csi-driver [--version VERSION]
    
  4. 애드온을 설치합니다.
    ibmcloud oc cluster addon enable ibm-object-csi-driver --cluster CLUSTER [--version VERSION]
    
  5. 설치를 확인하십시오.
    ibmcloud oc cluster addon ls --cluster CLUSTER
    
    OK
    Name                    Version   Health State   Health Status
    ibm-object-csi-driver   1.0       normal         Addon Ready. For more info: http://ibm.biz/addon-state (H1500)
    
  6. 사용 가능한 스토리지 클래스를 나열하십시오. 이 드라이버는 s3fsrclone 마운터에 대해 지역 내 및 지역 간 스토리지 클래스를 모두 지원합니다.
    oc get sc | grep object
    
    ibm-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 을 업데이트하려면 다음 단계를 따르세요.
  1. 클러스터에 있는 노드를 나열하고, COS 드라이버 포드를 실행할 위치를 결정하십시오.
    oc get nodes
    
    출력 예
    NAME            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
    
  2. 모든 노드에서 노드 서버 포드가 현재 실행 중인지 확인하십시오.
    oc get pods -n ibm-object-csi-operator -l app.kubernetes.io/component=node -o wide
    
    출력 예
    NAME                        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>
    
  3. 노드서버 파드가 스케줄링되기를 원하는 노드에 레이블을 지정하세요.
    oc label nodes NODE-NAME-1 NODE-NAME-2 cos.csi.ibm.io/csi-node=true
    
    출력 예
    node/10.241.0.11 labeled
    node/10.241.0.12 labeled
    
  4. 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
    
  5. 노드 서버 파드가 라벨이 지정된 노드에만 스케줄링되는지 확인하십시오.
    oc get pods -n ibm-object-csi-operator -l app.kubernetes.io/component=node -o wide
    
    출력 예
    NAME                        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 옵션
설정 동작
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 옵션
설정 동작
maxVolumesPerNode: "0"(기본값) 노드당 마운트할 수 있는 볼륨 수에는 제한이 없습니다.
maxVolumesPerNode: "VALUE" 단일 노드에 마운트할 수 있는 볼륨 수를 지정된 값으로 제한합니다.

다음 기능을 사용하는 앱을 배포하려면 IBM Cloud Object Storage

COS 자격 증명이 포함된 ‘ Kubernetes ’ 시크릿을 생성합니다.

  1. Red Hat OpenShift 클러스터에 액세스하십시오.

  2. 다음 구성을 secret.yaml 파일로 저장합니다. IAM 자격 증명 또는 HMAC 중 하나만 제공하되 둘 다 제공하면 안 됩니다.

    • IAM 자격 증명의 경우 Object Storage 에서 apiKeyserviceId 을 조합하여 사용합니다.
    • HMAC 자격 증명의 경우 Object Storage 에서 accessKeysecretKey 을 사용합니다.
    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=8
    
    mountOptions
    비밀 번호에서 mountOptions 을 편집하여 s3fs 또는 rclone 에 대한 마운트 옵션을 사용자 지정할 수 있습니다. 지정하는 옵션을 PVC에서 사용하는 스토리지 클래스에 맞게 조정합니다. 스토리지 클래스의 기본값을 검토하려면 oc describe storageclass <storageclass_name> 또는 oc describe storageclass <storageclass_name> 을 실행하세요. 자세한 내용은 s3fs 마운트 옵션rclone 마운트 옵션을 참조하세요.

    현재 이 애드온은 각 마운트 옵션에 대한 적절한 유효성 검사를 통해 고정된 마운트 옵션 집합을 지원하도록 설정되어 있습니다. 유효성 검사 목록에 없는 다른 마운트 옵션을 사용하려면 지원팀에 문의하여 해당 옵션을 사용하도록 설정하세요.

  3. 모든 비밀 데이터 매개변수를 base64 으로 인코딩합니다.

    echo -n "<value>" | base64
    
  4. base64 인코딩된 값으로 secret.yaml 을 업데이트합니다.

  5. 시크릿을 작성하십시오.

    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.
  1. 앞의 예시 중 하나를 선택하여 사용 사례에 맞게 사용자 지정하세요. 스토리지 클래스 목록은 스토리지 클래스 참조를 참조하세요.

  2. PVC를 작성하십시오.

    oc apply -f pvc.yaml
    

배치를 작성합니다.

  1. 다음 구성 내용을 ‘ 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.
    
  2. 배치를 작성하십시오.

    oc apply -f dep.yaml
    

IBM Cloud Object Storage 애드온 비활성화하기

기존 비밀, PVC 및 배포는 애드온을 비활성화하거나 패치를 업데이트해도 삭제되지 않습니다. 기존 고객 워크로드에는 중단이 없습니다.

  1. 다음 명령을 실행하여 애드온을 비활성화하십시오.
     ibmcloud oc cluster addon disable ibm-object-csi-driver --cluster CLUSTER
    
    출력 예
    Data 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
    
  2. 애드온이 제거되었는지 확인하십시오.
    ibmcloud oc cluster addon ls --cluster CLUSTER
    

Helm 플러그인에서 클러스터 애드온으로 마이그레이션하기

  1. Red Hat OpenShift 클러스터에 액세스하십시오.

  2. 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
    
  3. PVC를 설명하고 버킷 이름을 가져옵니다.

    oc describe pvc <pvc_name> | grep ibm.io/bucket:
    

    출력 예

    ibm.io/bucket: test-s3
    
  4. 버킷 이름을 포함하여 비밀을 다시 생성하세요.

    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
    
  5. PVC에 사용된 스토리지 클래스를 찾습니다.

    oc describe pvc <pvc_name> | grep StorageClass:
    

    test-s3 PVC에 대한 명령 예제입니다.

    oc describe pvc test-s3 | grep StorageClass:
    

    출력 예

    StorageClass:  ibmc-s3fs-smart-perf-regional
    
  6. 추가 기능에서 사용할 수 있는 새로운 스토리지 클래스를 검토하고 대체 클래스를 선택합니다.

    • flex 클래스를 사용했다면 새로운 smart 클래스 중 하나를 선택하세요.
    • standard 클래스를 사용했다면 새로운 standard 클래스 중 하나를 선택하세요.
    • 추가 기능에서는 coldvault 클래스를 더 이상 사용할 수 없으므로 대신 smart 또는 standard 클래스를 선택하세요.
  7. 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>
    
  8. 새 스토리지 클래스를 사용하고 이전에 만든 비밀을 참조하는 대체 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.
    
  9. PVC가 Bound 확인합니다.

    oc get pvc
    
  10. 앱에 대한 자세한 정보를 확인하세요.

    oc get pods
    
  11. 앱 규모를 0으로 축소합니다.

    kubectl scale deployment --replicas=0 my-app
    
  12. 이전 단계에서 만든 PVC를 참조하는 대체 배포를 만듭니다.

  13. 새 배포가 실행되고 나면 이전 배포를 삭제할 수 있습니다.

  14. 마이그레이션하려는 각 PVC에 대해 이 단계를 반복하십시오.

IBM Cloud Object Storage 클러스터 애드온 스토리지 클래스

IBM Cloud Object Storage 클러스터 애드온은 s3fsrclone 마운터를 위한 스토리지 클래스를 제공합니다. 데이터 액세스 요구사항에 맞는 스토리지 클래스를 선택하십시오. 스토리지 클래스는 워크로드에 대해 생성된 버킷의 버킷 클래스, 회수 정책 및 기본 마운트 동작을 결정합니다.

Standard
웹 또는 모바일 앱용 데이터와 같이 자주 액세스하는 핫 데이터에 사용합니다.
스마트
특정 사용 패턴을 따르지 않거나 사용 패턴을 예측하기 어려운 워크로드 및 데이터에 사용합니다.
COS 클러스터 애드온 스토리지 클래스
이름 버킷 클래스 복원성 마운트 재확보 정책 바인딩 모드
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> 을 실행하세요.

스토리지 클래스 매개변수

모든 클러스터 애드온 스토리지 클래스에는 다음과 같은 핵심 매개변수가 포함되어 있습니다.

COS 클러스터 애드온 스토리지 클래스의 핵심 매개변수
매개변수 설명
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 스토리지 클래스는 다음과 같은 기본 마운트 옵션을 사용합니다.

COS 애드온 ‘ 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 스토리지 클래스는 다음과 같은 기본 마운트 옵션을 사용합니다.

COS 애드온 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 멀티파트 업로드 중에 병렬로 업로드되는 파트의 수를 설정합니다.