Perché l'installazione del plug-in IBM Cloud Object Storage non riesce?

Virtual Private Cloud Infrastruttura classica

L'installazione del plug-in IBM Cloud Object Storage non riesce a causa di risorse in conflitto con installazioni precedenti.

Quando si installa il sito ibm-object-storage-plugin, l'installazione non riesce.

Viene visualizzato un messaggio di errore simile al seguente esempio:

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

Durante l'installazione, il plug-in IBM Cloud Object Storage esegue diverse operazioni, come la creazione di classi di storage e di binding di ruoli del cluster. Alcune risorse potrebbero essere già presenti nel cluster da precedenti installazioni del plug-in IBM Cloud Object Storage e non sono state rimosse correttamente durante la rimozione o l'aggiornamento del plug-in.

Risolvere il problema

Eliminare la risorsa visualizzata nel messaggio di errore e riprovare l'installazione.

  1. Elimina la risorsa visualizzata nel messaggio di errore.

    kubectl delete <resource_kind> <resource_name>
    

    Esempio per l'eliminazione di una risorsa della classe di archiviazione:

    kubectl delete storageclass <storage_class_name>
    
  2. Riprova ad eseguire l'installazione.

  3. Se si continua a visualizzare lo stesso errore, identificare e rimuovere tutte le risorse in conflitto delle installazioni precedenti.

  4. Ottieni un elenco di classi di archiviazione create da ibmcloud-object-storage-plugin.

    kubectl get sc --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  5. Ottieni un elenco di bind del ruolo cluster creati da ibmcloud-object-storage-plugin.

    kubectl get ClusterRoleBinding --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  6. Ottieni un elenco di bind del ruolo creati da 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. Ottieni un elenco di bind del ruolo creati da 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. Ottieni un elenco di ruoli cluster creati da ibmcloud-object-storage-plugin.

    kubectl get ClusterRole --all-namespaces \
        -l app=ibmcloud-object-storage-plugin \
        -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  9. Ottieni un elenco di distribuzioni create da 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. Ottieni un elenco di serie di daemon create da 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. Ottieni un elenco di account di servizio creati da 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. Ottieni un elenco di account di servizio creati da 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. Eliminare le risorse in conflitto identificate nei passaggi precedenti.
kubectl delete <resource_kind> <resource_name>
  1. Dopo aver eliminato le risorse in conflitto, riprova ad eseguire l'installazione.

  2. Verificare che il plug-in sia stato installato correttamente.

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