IBM Cloud Object Storage 플러그인 설치에 실패하는 이유는 무엇입니까?

가상 프라이빗 클라우드 클래식 인프라

이전 설치의 리소스가 충돌하여 IBM Cloud Object Storage 플러그인을 설치하지 못했습니다.

ibm-object-storage-plugin 을 설치하면 설치가 실패합니다.

다음 예와 유사한 오류 메시지가 표시됩니다:

Error: rendered manifest contains a resource that already exists. Unable to continue with install. Existing resource conflict: namespace: , name: ibmc-s3fs-smart-cross-region, existing_kind: storageClass, new_kind: storage.k8s.io/v1, Kind=StorageClass
Error: plugin "ibmc" exited with error

설치하는 동안 IBM Cloud Object Storage 플러그인은 스토리지 클래스 및 클러스터 역할 바인딩을 만드는 등 다양한 작업을 실행합니다. 일부 리소스는 이전 IBM Cloud Object Storage 플러그인 설치에서 클러스터에 이미 존재하지만 플러그인을 제거하거나 업그레이드할 때 제대로 제거되지 않았을 수 있습니다.

문제 해결

오류 메시지에 표시된 리소스를 삭제하고 설치를 다시 시도합니다.

  1. 오류 메시지에 표시되는 리소스를 삭제하십시오.

    kubectl delete <resource_kind> <resource_name>
    

    스토리지 클래스 리소스 삭제 예:

    kubectl delete storageclass <storage_class_name>
    
  2. 설치를 재시도하십시오.

  3. 동일한 오류가 계속 발생하면 이전 설치에서 충돌하는 리소스를 모두 찾아서 제거하세요.

  4. ibmcloud-object-storage-plugin으로 작성되는 스토리지 클래스의 목록을 가져오십시오.

    kubectl get sc --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  5. ibmcloud-object-storage-plugin으로 작성되는 클러스터 역할 바인딩의 목록을 가져오십시오.

    kubectl get ClusterRoleBinding --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  6. ibmcloud-object-storage-driver로 작성되는 역할 바인딩의 목록을 가져오십시오.

    kubectl get RoleBinding --all-namespaces \
        -l app=ibmcloud-object-storage-driver \
        -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
    
  7. ibmcloud-object-storage-plugin로 작성되는 역할 바인딩의 목록을 가져오십시오.

    kubectl get RoleBinding --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
    
  8. ibmcloud-object-storage-plugin으로 작성되는 클러스터 역할의 목록을 가져오십시오.

    kubectl get ClusterRole --all-namespaces \
        -l app=ibmcloud-object-storage-plugin \
        -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  9. ibmcloud-object-storage-plugin으로 작성되는 배치의 목록을 가져오십시오.

    kubectl get deployments --all-namespaces \
        -l app=ibmcloud-object-storage-plugin \
        -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
    
  10. ibmcloud-object-storage-driver로 작성되는 디먼 세트의 목록을 가져오십시오.

kubectl get DaemonSets --all-namespaces \
    -l app=ibmcloud-object-storage-driver \
    -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
  1. ibmcloud-object-storage-driver로 작성되는 서비스 계정의 목록을 가져오십시오.
kubectl get ServiceAccount --all-namespaces \
    -l app=ibmcloud-object-storage-driver \
    -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
  1. ibmcloud-object-storage-plugin로 작성되는 서비스 계정의 목록을 가져오십시오.
kubectl get ServiceAccount --all-namespaces \
    -l app=ibmcloud-object-storage-plugin \
    -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
  1. 이전 단계에서 식별한 충돌하는 리소스를 삭제합니다.
kubectl delete <resource_kind> <resource_name>
  1. 충돌하는 리소스를 삭제한 후 설치를 재시도하십시오.

  2. 플러그인이 성공적으로 설치되었는지 확인합니다.

kubectl get pods -n kube-system | grep object-storage