VMware Block Container Storage Interface 드라이버

VMware Container Storage Interface (CSI) 드라이버 를 사용하여 VMware 블록 데이터 볼륨의 라이프사이클을 관리할 수 있습니다.

전제조건

VMware 블록 스토리지 구성을 작성하려면 먼저 다음 전제조건을 충족해야 합니다.

  1. vSphere 버전 6.7U3 이상을 실행 중인지 확인하십시오.
  2. 가상 머신 하드웨어 버전이 버전 15이상인지 확인하십시오.
  3. 마스터 노드가 vCenter 관리 인터페이스와 통신할 수 있는지 확인하십시오.
  4. 모든 노드에서 스왑을 사용 불가능하게 하십시오.
  5. 모든 노드 가상 머신에서 디스크 UUID를 사용으로 설정하십시오.
  6. vSphere 환경에 vSAN 을 배치하십시오. 자세한 정보는 vSAN 문서를 참조하십시오.

스토리지 템플릿을 해당 위치의 클러스터에 배포하려면 먼저 콘솔에서 Satellite 구성에 클러스터 관리자 액세스 사용 옵션을 선택하거나 클러스터를 만들 때 --enable-config-admin 옵션을 포함하여 Satellite 구성을 설정해야 합니다.

Satellite 스토리지 서비스의 범위를 리소스 그룹으로 지정할 수 없습니다. 그러나 위치 및 클러스터와 같은 다른 리소스의 범위를 리소스 그룹으로 지정하는 경우에는 Satellite 리더를 추가하고 계정의 모든 리소스에 대한 관리자 역할을 연결해야 합니다.

콘솔에서 구성 작성 및 지정

  1. 매개변수 참조를 검토하십시오.

  2. '위치' 콘솔에서 스토리지 구성을 생성할 위치를 선택합니다.

  3. 스토리지 > 스토리지 구성 작성을 선택하십시오.

  4. 구성의 이름을 입력하십시오.

  5. 저장소 유형 을 선택하십시오.

  6. 버전을 선택하고 ‘다음’을 클릭하세요

  7. 선택한 스토리지 유형 이 사용자 정의 매개변수를 허용하는 경우 매개변수 탭에서 이를 입력하십시오.

  8. 선택한 스토리지 유형 에 시크릿이 필요한 경우 시크릿 탭에 시크릿을 입력하십시오.

  9. 스토리지 클래스 탭에서 구성에 의해 배치되는 스토리지 클래스를 검토하거나 사용자 정의 스토리지 클래스를 작성하십시오.

  10. 서비스에 지정 탭에서 구성을 지정할 서비스를 선택하십시오.

  11. 완료를 클릭하여 스토리지 구성을 지정하십시오.

CLI에서 구성 작성

  1. 사용할 템플리트 버전에 대한 매개변수 참조 를 검토하십시오.

  2. IBM Cloud에 로그인하십시오.

    ibmcloud login
    
  3. Satellite 위치를 나열하고 Managed from 열을 기록하십시오.

    ibmcloud sat location ls
    
  4. Satellite 위치의 Managed from 지역을 대상으로 지정하십시오. 예를 들어 wdc의 경우 us-east를 대상으로 지정하십시오. 자세한 정보는 Satellite 지역을 참조하십시오.

    ibmcloud target -r us-east
    
  5. default 이외의 리소스 그룹을 사용하는 경우 해당 그룹을 대상으로 지정하십시오.

    ibmcloud target -g RESOURCE_GROUP
    
  6. 사용할 템플리트 버전에 대해 다음 예제 명령 중 하나를 복사하십시오. 명령에 대한 자세한 정보는 명령 참조 에서 ibmcloud sat storage config create 의 내용을 참조하십시오.

    버전 2.7.0 구성을 작성하는 예제 명령입니다.

    ibmcloud sat storage config create --location LOCATION --name NAME --template-name vsphere-csi-driver --template-version 2.7.0 --param "vcenter-username=VCENTER-USERNAME"  --param "vcenter-password=VCENTER-PASSWORD"  --param "insecure-flag=INSECURE-FLAG"  --param "host=HOST"  --param "datacenters=DATACENTERS"  --param "thumbprint=THUMBPRINT"
    
  7. 사용하려는 설정에 따라 명령을 사용자 정의하십시오.

  8. 구성을 생성하려면 해당 명령을 실행하십시오.

  9. 설정이 정상적으로 생성되었는지 확인하십시오.

    ibmcloud sat storage config get --config CONFIG
    

API에서 구성 작성

  1. API키를 생성한 후 새로 고치기 토큰을 요청하십시오. 자세한 정보는 API 키를 사용하여 IBM Cloud IAM 토큰 생성을 참조하십시오.

  2. 사용할 템플리트 버전에 대한 매개변수 참조 를 검토하십시오.

  3. 다음 예제 요청 중 하나를 복사하고 사용할 변수를 대체하십시오.

    버전 2.7.0 구성을 작성하기 위한 요청 예제입니다.

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"vsphere-csi-driver\", \"storage-template-version\": \"2.7.0\", \"update-assignments\": true, \"user-config-parameters\": { \"entry.name\": \"INSECURE-FLAG\", { \"entry.name\": \"HOST\", { \"entry.name\": \"DATACENTERS\",\"user-secret-parameters\": { \"entry.name\": \"VCENTER-USERNAME\",{ \"entry.name\": \"VCENTER-PASSWORD\",{ \"entry.name\": \"THUMBPRINT\",}
    

CLI에서 과제 생성하기

  1. 저장소 구성을 나열하고, 클러스터에 할당할 저장소 구성을 기록해 두십시오.

    ibmcloud sat storage config ls
    
  2. 저장을 할당하려는 클러스터, 클러스터 그룹 또는 서비스의 ID를 확인하십시오.

    클러스터가 Satellite Config에 등록되어 있는지 확인하거나 그룹을 작성하려면 Satellite Config와 사용할 클러스터 설정을 참조하십시오.

    클러스터 그룹을 나열하는 명령 예제입니다.

    ibmcloud sat group ls
    

    클러스터를 나열하는 명령 예제입니다.

    ibmcloud oc cluster ls --provider satellite
    

    Satellite 서비스를 나열하는 예제 명령입니다.

    ibmcloud sat service ls --location LOCATION
    
  3. 이전에 검색한 클러스터, 그룹 또는 서비스에 스토리지 구성을 지정하십시오. 자세한 정보는 ibmcloud sat storage assignment create 명령을 참조하십시오.

    클러스터 그룹에 구성을 지정하는 예제 명령입니다.

    ibmcloud sat storage assignment create --group GROUP --config CONFIG --name NAME
    

    클러스터에 구성을 지정하는 예제 명령입니다.

    ibmcloud sat storage assignment create --cluster CLUSTER --config CONFIG --name NAME
    

    서비스 클러스터에 구성을 지정하는 예제 명령입니다.

    ibmcloud sat storage assignment create --service-cluster-id CLUSTER --config CONFIG --name NAME
    
  4. 지정이 작성되었는지 확인하십시오.

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    

API에서 스토리지 지정 작성

  1. 다음 예제 요청 중 하나를 복사하십시오.

    클러스터에 구성을 지정하기 위한 요청의 다른 연결입니다.

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignmentByCluster" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"CLUSTER-ID\", \"controller\": \"LOCATION-ID\", \"name\": \"ASSIGNMENT-NAME\"}"
    

    클러스터 그룹에 구성을 지정하기 위한 요청 예제.

    curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"string\", \"groups\": [ \"CLUSTER-GROUP\" ], \"name\": \"ASSIGNMENT-NAME\"}"
    
  2. 변수를 세부사항으로 대체하고 요청을 실행하십시오.

  3. 지정을 나열하여 지정이 작성되었는지 확인하십시오.

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignments" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

콘솔에서 스토리지 지정 업데이트

Satellite 콘솔 을 사용하여 지정에 최신 패치 업데이트를 적용할 수 있습니다.

  1. Satellite 콘솔위치 페이지에서 위치를 선택하십시오.

  2. 스토리지 탭을 클릭하여 구성을 보십시오.

  3. 업데이트하려는 구성을 클릭하세요.

  4. 최신 개정판 또는 패치를 적용하려면 정보 정보 (i) 아이콘을 클릭하십시오.

  5. 선택사항: 스토리지 지정에 대해 자동 패치 업데이트를 사용으로 설정하십시오. 자동 패치 업데이트를 사용으로 설정하면 지정에 항상 최신 보안 수정사항이 포함됩니다.

자동 패치 업데이트를 사용하는 경우에도 주요 업데이트를 수동으로 적용해야 합니다.

CLI에서 수동으로 지정 업그레이드

최신 스토리지 템플리트 개정을 사용하도록 지정을 업그레이드하십시오.

  1. Satellite 스토리지 지정을 나열하고 업그레이드하려는 Satellite 지정을 기록해 두십시오.

    ibmcloud sat storage assignment ls
    
  2. Satellite 스토리지 템플리트를 나열하여 사용 가능한 최신 버전을 보십시오.

    ibmcloud sat storage template ls
    
  3. Satellite 지정을 업그레이드하십시오.

    지정을 업그레이드하는 예제 명령입니다.

    ibmcloud sat storage assignment upgrade --assignment ASSIGNMENT
    

CLI에서 구성 및 지정에 대한 자동 패치 업데이트 사용

sat storage assignment autopatch enable CLI를 사용하여 지정에 대한 자동 패치 업데이트를 사용으로 설정할 수 있습니다. 자동 패치 업데이트를 사용으로 설정하면 최신 스토리지 템플리트 개정 (패치) 이 자동으로 적용됩니다. 여전히 주요 업데이트를 수동으로 적용해야 합니다.

  1. Satellite 스토리지 구성을 나열합니다. 구성 ID를 기록해 두세요.

    ibmcloud sat storage assignment ls
    
  2. 다음 예제 명령 중 하나를 실행하여 구성 및 연관된 지정에 대한 자동 패치 업데이트를 사용으로 설정하십시오. 이전 단계에서 확인한 구성 ID를 입력하십시오.

    지정에 대한 자동 패치 업데이트를 사용으로 설정하는 예제 명령입니다.

    ibmcloud sat storage assignment autopatch enable --config CONFIG  (--all | --assignment ASSIGNMENT-ID [--assignment ASSIGNMENT-ID])
    

    지정된 구성에서 모든 스토리지 지정에 대한 자동 패치 업데이트를 사용으로 설정하는 예제 명령입니다.

    ibmcloud sat storage assignment autopatch enable --config CONFIG --all
    

    특정 구성에서 모든 지정에 대해 자동 패치 업데이트를 사용하지 않도록 설정하는 예제 명령입니다.

    ibmcloud sat storage assignment autopatch disable --config CONFIG --all
    

    단일 지정 및 특정 구성에 대한 자동 패치 업데이트를 사용 안함으로 설정하는 예제 명령입니다.

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID
    

    다중 지정 및 특정 구성에 대한 자동 패치 업데이트를 사용 안함으로 설정하는 예제 명령입니다.

    ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID --assignment ASSIGNMENT-ID
    

API에서 구성 및 지정 업그레이드

/v2/storage/satellite/updateAssignment API를 사용하여 새 클러스터 또는 클러스터 그룹으로 지정을 업데이트할 수 있습니다. 개정 업데이트를 적용하려면 updateConfigVersiontrue 로 설정하십시오.

  1. 다음 예제 요청을 복사하고 업데이트할 클러스터 그룹 및 지정의 변수를 대체하십시오.

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/updateAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"groups\": [ \"CLUSTER-GROUPS\" ], \"name\": \"ASSIGNMENT-NAME\", \"updateConfigVersion\": true, \"uuid\": \"ASSIGNMENT-ID\"}"
    
  2. 요청을 실행하십시오.

  3. 업데이트를 확인하기 위해 지정 세부사항을 가져오십시오.

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

API에서 지정에 대한 자동 패치 업데이트 사용

/v2/storage/satellite/setAssignmentAutoupgrade API를 사용하여 지정에 대한 자동 패치 업데이트를 사용으로 설정할 수 있습니다. 자동 패치 업데이트를 사용으로 설정하면 최신 스토리지 템플리트 개정 (패치) 이 자동으로 적용됩니다. 여전히 주요 업데이트를 수동으로 적용해야 합니다.

  1. 다음 예제 요청을 복사하고 업데이트할 클러스터 그룹 및 지정의 변수를 대체하십시오.

    curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/setAssignmentAutoupgrade" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d { "config": "string", "controller": "string", "autopatch": boolean,"assignment" : { "all": boolean, "uuid": ["string", "string", ...], } }
    
  2. 요청을 실행하십시오.

  3. 지정 세부사항을 가져와서 업그레이드를 확인하십시오.

    curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
    

다음 기능을 사용하는 앱 배포 VMware

vmware-csi-driver를 사용하여 클러스터 워크로드에서 사용할 수 있는 PVC를 작성할 수 있습니다.

  1. 앞서 생성한 스토리지 클래스를 참조하는 PVC를 생성합니다.

        kind: PersistentVolumeClaim
        apiVersion: v1
        metadata:
            name: podpvc
        spec:
            accessModes:
             - ReadWriteOnce
            storageClassName: sat-vsphere-vsan-block-metro
            resources:
                requests:
                storage: 10Gi
    
  2. 클러스터에 PVC를 작성하십시오.

    oc apply -f podpvc.yaml
    
  3. 작성한 PVC를 마운트하는 팟(Pod)에 대한 YAML 구성 파일을 작성하십시오.

        apiVersion: v1
        kind: Pod
        metadata:
        name: web-server
        spec:
        containers:
        - name: #web-server
            image: nginx
            command:
                - "/bin/sh"
                - "-c"
                - while true; do echo $(date) >> /mnt/vmwaredisk/outfile; sleep 1; done
            volumeMounts:
             mountPath:  /mnt/vmwaredisk
                name: mypvc
        volumes:
        - name: mypvc
            persistentVolumeClaim:
            claimName: podpvc
            readOnly: false
    
  4. 클러스터에서 팟(Pod)을 작성하십시오.

    oc apply -f mypvc.yaml
    
  5. 팟(Pod)이 배치되었는지 확인하십시오. 앱이 ‘ Running ’ 상태가 되기까지 몇 분 정도 걸릴 수 있으니 유의하시기 바랍니다.

    oc get pods
    
    NAME                                READY   STATUS    RESTARTS   AGE
    my-pvc                              1/1     Running   0          2m58s
    
  6. 팟(Pod)에 로그인하여 앱이 블록 스토리지 볼륨에 쓸 수 있는지 확인하십시오.

    oc exec -it web-server /bin/bash
    
  7. outfile 파일의 컨텐츠를 보고 앱이 지속적 스토리지에 데이터를 쓸 수 있는지 확인하십시오.

    cat outfile
    

    출력 예

    Fri Jul 16 07:49:39 EDT 2021
    Fri Jul 16 07:49:39 EDT 2021
    Fri Jul 16 07:49:39 EDT 2021
    
  8. 팟(Pod)을 종료하십시오.

    exit
    

앱에서 VMware 스토리지를 제거하기

VMware 구성이 더 이상 필요하지 않은 경우, 클러스터에서 앱, PVC, PV 및 할당을 제거할 수 있습니다.

  1. PVC를 나열하고 제거할 PVC의 이름을 기록하십시오.

    oc get pvc
    
  2. PVC를 마운트하는 팟(Pod)을 제거하십시오.

    1. 삭제할 PVC를 현재 마운트하는 모든 팟(Pod)을 나열하십시오. 팟(Pod)이 리턴되지 않으면 현재 PVC를 사용하는 팟(Pod)이 없는 것입니다.
        oc get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>"
        ```
        출력 예
    
        ```sh {: screen}
        NAME         READY   STATUS    RESTARTS   AGE
        web-server   1/1     Running   0          55s
        ```
    1. PVC를 사용하는 팟(Pod)을 제거하십시오. 팟(Pod)이 배치 또는 statefulset의 일부인 경우 배치 또는 statefulset를 제거하십시오.
    
    ```sh {: pre}
        oc delete pod <pod_name>
        ```
        ```sh {: pre}
        oc delete deployment <deployment_name>
        ```
        ```sh {: pre}
        oc delete statefulset <statefulset_name>
        ```
    1. 팟(Pod), 배치 또는 statefulset가 제거되었는지 확인하십시오.
    
    ```sh {: pre}
        oc get pods
        ```
        ```sh {: pre}
        oc get deployments
        ```
        ```sh {: pre}
        oc get statefulset
        ```
    
  3. PVC를 삭제하십시오.

    oc delete pvc <pvc_name>
    
  4. PV가 자동으로 제거되었는지 확인하십시오.

    oc get pv
    

클러스터에서 ‘ VMware ’ 스토리지 구성을 제거하기

클러스터에서 VMware 을 더 이상 사용할 계획이 없다면, CLI를 사용하여 스토리지 구성에서 해당 클러스터의 할당을 해제할 수 있습니다.

스토리지 구성을 제거하면 할당된 모든 클러스터에서 해당 드라이버가 제거됩니다. PVC, PV 및 데이터는 제거되지 않습니다. 하지만 클러스터에 드라이버를 다시 설치하기 전까지는 데이터에 접근할 수 없습니다.

콘솔을 사용하여 VMware 스토리지 구성 제거하기

  1. Satellite 스토리지 대시보드에서 삭제할 스토리지 구성을 선택하십시오.
  2. 조치 > 삭제를 선택하십시오.
  3. 스토리지 구성의 이름을 입력하십시오.
  4. 삭제를 선택하십시오.

명령행을 사용하여 VMWare 스토리지 구성 제거

  1. 스토리지 지정을 나열하고 클러스터에 사용한 지정을 찾으십시오.

    ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
    
  2. 지정을 제거하십시오. 지정이 제거되고 나면 드라이버 팟과 스토리지 클래스가 스토리지 지정의 일부인 모든 클러스터에서 제거됩니다.

    ibmcloud sat storage assignment rm --assignment <assignment_ID>
    
  3. 드라이버가 클러스터에서 제거되었는지 확인하십시오.

    1. 클러스터의 스토리지 클래스를 나열하고 스토리지 클래스가 제거되었는지 확인하십시오.
        oc get sc
        ```
    2. `kube-system` 네임스페이스에 있는 팟을 나열하고 스토리지 드라이버 팟이 제거되었는지 확인하십시오.
    
    ```sh {: pre}
        oc get pods -n kube-system | grep vsphere
        ```
    
  4. 선택사항: 스토리지 구성을 제거하십시오.

    1. 스토리지 구성을 나열하십시오.
        ibmcloud sat storage config ls
        ```
    2. 스토리지 구성을 제거하십시오.
    
    ```sh {: pre}
        ibmcloud sat storage config rm --config <config_name>
        ```
    
    
    

매개변수 참조

2.7.0 매개변수 참조

표 1. 2.7.0 매개변수 참조
표시 이름 CLI 옵션 유형 설명 기본값
vCenter 사용자 이름 vcenter-username 시크릿 vCenter 사용자 이름입니다. 도메인 이름과 함께 사용자 이름을 지정해야 합니다. 예: 'Administrator@vsphere.local'. 해당사항 없음
vCenter 비밀번호 vcenter-password 시크릿 vCenter 서버 사용자 비밀번호입니다. 해당사항 없음
비보안 연결 insecure-flag Config '안전하지 않은 플래그'를 포함합니다. 'true'는 로그인에 자체 서명 인증서를 사용하는 플래그를 포함할 것임을 나타냅니다. 'false'는 보안 연결을 사용함을 나타냅니다. 'false'를 선택한 경우 SSL 지문을 제공해야 합니다. false
vCenter 호스트 host Config vCenter 서버 IP 주소입니다. 해당사항 없음
vCenter 데이터 센터 datacenters Config 호스트 VM이 있는 모든 데이터 센터 경로를 쉼표로 구분하여 나열하십시오. 데이터 센터가 루트에 있으면 데이터 센터의 이름을 제공하십시오. 폴더에 배치되면 폴더/데이터 센터 이름으로 경로를 지정해야 합니다. 해당사항 없음
SSL 인증서 지문 thumbprint 시크릿 VC에 대한 보안 연결을 설정하는 데 사용되는 SSL 지문입니다. 해당사항 없음

VMWare에 대한 도움 및 지원 받기

VMware 에 문제가 발생하는 경우 VMware 지원을 사용하여 지원 요청을 제출하십시오.