Warum schlägt die Installation des IBM Cloud Object Storage-Plug-ins fehl?

Virtuelle Private Cloud Klassische Infrastruktur

Die Installation des IBM Cloud Object Storage Plug-ins schlägt aufgrund von Konflikten mit Ressourcen aus früheren Installationen fehl.

Wenn Sie ibm-object-storage-plugin installieren, schlägt die Installation fehl.

Sie erhalten eine Fehlermeldung ähnlich dem folgenden Beispiel:

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

Während der Installation führt das IBM Cloud Object Storage Plug-in viele verschiedene Aufgaben aus, wie z. B. das Erstellen von Speicherklassen und Cluster-Rollenbindungen. Möglicherweise sind in Ihrem Cluster bereits einige Ressourcen aus früheren Installationen des IBM Cloud Object Storage Plug-ins vorhanden, die beim Entfernen oder Aktualisieren des Plug-ins nicht ordnungsgemäß entfernt wurden.

Problemlösung

Löschen Sie die Ressource, die in der Fehlermeldung angezeigt wird, und versuchen Sie die Installation erneut.

  1. Löschen Sie die Ressource, die in der Fehlernachricht angezeigt ist.

    kubectl delete <resource_kind> <resource_name>
    

    Beispiel für das Löschen einer Speicherklassenressource:

    kubectl delete storageclass <storage_class_name>
    
  2. Wiederholen Sie die Installation.

  3. Wenn der gleiche Fehler weiterhin auftritt, identifizieren Sie alle konfliktbehafteten Ressourcen aus früheren Installationen und entfernen Sie sie.

  4. Rufen Sie eine Liste der Speicherklassen ab, die von ibmcloud-object-storage-plugin erstellt wurden.

    kubectl get sc --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  5. Rufen Sie eine Liste der Clusterrollenbindungen ab, die von ibmcloud-object-storage-plugin erstellt wurden.

    kubectl get ClusterRoleBinding --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  6. Rufen Sie eine Liste der Rollenbindungen ab, die von ibmcloud-object-storage-driver erstellt wurden.

    kubectl get RoleBinding --all-namespaces \
        -l app=ibmcloud-object-storage-driver \
        -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
    
  7. Rufen Sie eine Liste der Rollenbindungen ab, die von ibmcloud-object-storage-plugin erstellt wurden.

    kubectl get RoleBinding --all-namespaces \
            -l app=ibmcloud-object-storage-plugin \
            -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
    
  8. Rufen Sie eine Liste der Clusterrollen ab, die von ibmcloud-object-storage-plugin erstellt wurden.

    kubectl get ClusterRole --all-namespaces \
        -l app=ibmcloud-object-storage-plugin \
        -o jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
    
  9. Rufen Sie eine Liste der Bereitstellungen ab, die von ibmcloud-object-storage-plugin erstellt wurden.

    kubectl get deployments --all-namespaces \
        -l app=ibmcloud-object-storage-plugin \
        -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
    
  10. Rufen Sie eine Liste der Dämongruppen ab, die von ibmcloud-object-storage-driver erstellt wurden.

kubectl get DaemonSets --all-namespaces \
    -l app=ibmcloud-object-storage-driver \
    -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
  1. Rufen Sie eine Liste der Servicekonten ab, die von ibmcloud-object-storage-driver erstellt wurden.
kubectl get ServiceAccount --all-namespaces \
    -l app=ibmcloud-object-storage-driver \
    -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
  1. Rufen Sie eine Liste der Servicekonten ab, die von ibmcloud-object-storage-plugin erstellt wurden.
kubectl get ServiceAccount --all-namespaces \
    -l app=ibmcloud-object-storage-plugin \
    -o jsonpath='{range .items[*]}{.metadata.namespace}{"\t"}{.metadata.name}{"\n"}{end}'
  1. Löschen Sie die kollidierenden Ressourcen, die in den vorangegangenen Schritten identifiziert wurden.
kubectl delete <resource_kind> <resource_name>
  1. Nach dem Löschen der in Konflikt stehenden Ressourcen wiederholen Sie die Installation.

  2. Überprüfen Sie, ob das Plug-in erfolgreich installiert wurde.

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