Teilen über


Problembehandlung für Azure Container Apps (Vorschau)

Azure Container Storage ist ein cloudbasierter Dienst zum Verwalten, Bereitstellen und Orchestrieren von Volumes, der nativ für Container entwickelt wurde. Verwenden Sie diesen Artikel, um häufige Probleme mit Azure Container Storage zu beheben und Lösungen für Probleme zu finden.

Behandlung von Installationsproblemen

Azure Container Storage kann nicht installiert werden

Nach dem Ausführen von az aks create wird möglicherweise die folgende Meldung angezeigt: Azure Container Storage konnte nicht installiert werden. Der AKS-Cluster wird erstellt. Führen Sie az aks update zusammen mit --enable-azure-container-storage aus, um Azure Container Storage zu aktivieren.

Diese Meldung bedeutet, dass Azure Container Storage nicht installiert wurde, aber Ihr AKS-Cluster wurde ordnungsgemäß erstellt.

Führen Sie den folgenden Befehl aus, um Azure Container Storage im Cluster zu installieren und einen Speicherpool zu erstellen. Ersetzen Sie <cluster-name> und <resource-group> durch Ihre eigenen Werte. Ersetze <storage-pool-type> durch azureDisk, ephemeraldisk oder elasticSan.

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type>

Speicherpooltyp kann nicht auf NVMe festgelegt werden

Wenn Sie versuchen, Azure Container Storage mit kurzlebigem Datenträger zu installieren, insbesondere mit lokalem NVMe auf einem Cluster, in dem die VM-SKU keine NVMe-Laufwerke aufweist, erhalten Sie die folgende Fehlermeldung: --storage-pool-option kann nicht als NVMe festgelegt werden, da keiner der Knotenpools kurzlebige NVMe-Datenträger unterstützt.

Um das Problem zu beheben, erstellen Sie einen Knotenpool mit einer VM-SKU mit NVMe-Laufwerken, und versuchen Sie es erneut. Informationen finden Sie unter Datenspeicheroptimierte VMs.

Behandeln von Problemen mit Speicherpools

Führen Sie kubectl describe sp <storage-pool-name> -n acstor aus, um den Status Ihrer Speicherpools zu überprüfen. Hier sind einige Probleme, die auftreten können.

Die Elastic SAN-Erstellung schlägt fehl

Wenn Sie versuchen, einen Elastic SAN-Speicherpool zu erstellen, wird möglicherweise die folgende Meldung angezeigt: Azure Elastic SAN-Erstellung fehlgeschlagen: Maximale Elastic SAN-Anzahl für das Abonnement bereits erstellt. Dies bedeutet, dass Sie den Grenzwert für die Anzahl der Elastic SAN-Ressourcen erreicht haben, die in einer Region pro Abonnement bereitgestellt werden können. Sie können hier den Grenzwert überprüfen: Elastic SAN: Skalierbarkeit und Leistungsziele. Erwägen Sie das Löschen vorhandener Elastic SAN-Ressourcen im Abonnement, die nicht mehr verwendet werden, oder versuchen Sie, den Speicherpool in einer anderen Region zu erstellen.

Keine Blockgeräte gefunden

Wenn diese Meldung angezeigt wird, versuchen Sie wahrscheinlich, einen kurzlebigen Datenträgerspeicherpool in einem Cluster zu erstellen, in dem die VM-SKU keine NVMe-Laufwerke hat.

Um das Problem zu beheben, erstellen Sie einen Knotenpool mit einer VM-SKU mit NVMe-Laufwerken, und versuchen Sie es erneut. Informationen finden Sie unter Datenspeicheroptimierte VMs.

Speicherpooltyp bereits aktiviert

Wenn Sie versuchen, einen bereits aktivierten Speicherpooltyp zu aktivieren, wird die folgende Meldung angezeigt: Ungültiger --enable-azure-container-storage-Wert. Azure Container Storage ist bereits für den Speicherpooltyp <storage-pool-type> im Cluster aktiviert. Sie können überprüfen, ob bereits Speicherpools vorhanden sind, indem Sie kubectl get sp -n acstor ausführen.

Deaktivieren eines Speicherpooltyps

Wenn Sie einen Speicherpooltyp über az aks update --disable-azure-container-storage <storage-pool-type> deaktivieren oder Azure Container Storage über az aks update --disable-azure-container-storage all deinstallieren, erhalten Sie die folgende Meldung, wenn bereits ein Speicherpool dieses Typs vorhanden ist:

Wenn Sie Azure Container Storage für den Speicherpooltyp deaktivieren, erzwingt <storage-pool-type> die Löschung aller Speicherpools desselben Typs. Das wirkt auf die Anwendungen aus, die diese Speicherpools verwenden. Das erzwungene Löschen von Speicherpools kann auch zu Speicherverlust bei den verwendeten Ressourcen führen. Möchten Sie überprüfen, ob einer der Speicherpools vom Typ <storage-pool-type> verwendet wird, bevor Azure Container Storage deaktiviert wird? (J/N)

Wenn Sie „J“ auswählen, wird eine automatische Prüfung ausgeführt, um sicherzustellen, dass im Speicherpool keine persistenten Volumes erstellt werden. Wenn Sie „N“ auswählen, wird diese Prüfung umgangen und der Speicherpooltyp deaktiviert, alle vorhandenen Speicherpools gelöscht. Dadurch wird Ihre Anwendung potenziell beeinträchtigt.

Ressourcengruppe mit AKS-Cluster kann nicht gelöscht werden

Wenn Sie einen Elastic SAN-Speicherpool erstellt haben, können Sie die Ressourcengruppe, in der sich Ihr AKS-Cluster befindet, möglicherweise nicht löschen.

Um dieses Problem zu beheben, melden Sie sich beim Azure-Portal an, und klicken Sie auf Ressourcengruppen. Suchen Sie die von AKS erstellte Ressourcengruppe (der Ressourcengruppenname beginnt mit MC_). Wählen Sie das SAN-Ressourcenobjekt innerhalb dieser Ressourcengruppe aus. Entfernen Sie manuell alle Volumes und Volumegruppen. Versuchen Sie dann erneut, die Ressourcengruppe zu löschen, die Ihren AKS-Cluster enthält.

Behandeln von Problemen mit persistenten Volumes

Persistente Volumes können nicht aus kurzlebigen Datenträgerspeicherpools erstellt werden.

Da kurzlebiger Datenträger (lokale NVMe und Temp SSD) kurzlebig und nicht dauerhaft sind, erzwingen wir die Verwendung von generischen, kurzlebigen Kubernetes-Volumes. Wenn Sie versuchen, einen persistenten Volume-Anspruch unter Verwendung eines kurzlebigen Datenträgerpools zu erstellen, erhalten Sie die folgende Fehlermeldung: Fehler vom Server (Verboten): Fehler bei der Erstellung von „eph-pvc.yaml“: admission webhook „pvc.acstor.azure.com“ hat die Anforderung abgelehnt: nur generische, kurzlebige Volumes sind in nicht replizierten ephemeralDisk-Speicherpools zulässig.

Wenn Sie ein persistentes Volume benötigen, bei dem das Volume einen Lebenszyklus unabhängig von jedem einzelnen Pod hat, der das Volume verwendet, unterstützt Azure Container Storage die Replikation für NVMe. Sie können einen Speicherpool mit Replikation erstellen und dort persistente Volumes erstellen. Anleitungen finden Sie unter Erstellen eines Speicherpools mit Volumereplikation. Da kurzlebige Datenträgerspeicherpools alle verfügbaren NVMe-Datenträger verbrauchen, müssen Sie alle vorhandenen kurzlebigen Datenträgerspeicherpools löschen, bevor Sie einen neuen Speicherpool erstellen, für den die Replikation aktiviert ist. Wenn Sie keine Persistenz benötigen, können Sie ein generisches, kurzlebiges Volume erstellen.

Pod mit ausstehender Erstellung wegen eines kurzlebigen Volumes größer als die verfügbare Kapazität

Ein kurzlebiges Volume wird einem einzelnen Knoten zugewiesen. Wenn Sie die Größe von kurzlebigen Volumes für Ihre Pods konfigurieren, sollte die Größe kleiner als die verfügbare Kapazität des kurzlebigen Datenträgers eines einzelnen Knotens sein. Andernfalls befindet sich die Poderstellung im Status „Ausstehend“.

Verwenden Sie den folgenden Befehl, um zu überprüfen, ob sich die Poderstellung im Status „Ausstehend“ befindet.

$ kubectl get pods
NAME     READY   STATUS    RESTARTS   AGE
fiopod   0/1     Pending   0          17s

In diesem Beispiel befindet sich der Pod fiopod im Pending-Status.

Verwenden Sie den folgenden Befehl, um zu überprüfen, ob das Warnereignis für die persistente Erstellung des Pods vorhanden ist.

$ kubectl describe pod fiopod
...
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  40s   default-scheduler  0/3 nodes are available: waiting for ephemeral volume controller to create the persistentvolumeclaim "fiopod-ephemeralvolume". preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling..

In diesem Beispiel zeigt der Pod das Warnereignis zum Erstellen eines dauerhaften Volumeanspruchs fiopod-ephemeralvolume.

Verwenden Sie den folgenden Befehl, um zu überprüfen, ob der persistente Volumeanspruch aufgrund unzureichender Kapazität nicht bereitgestellt werden kann.

$ kubectl describe pvc fiopod-ephemeralvolume
...
  Warning  ProvisioningFailed    107s (x13 over 20m)  containerstorage.csi.azure.com_aks-nodepool1-29463073-vmss000000_7f5bd88d-be76-40d2-a59e-e51ce000e35e  failed to provision volume with StorageClass "acstor-ephemeraldisk-temp": rpc error: code = Internal desc = Operation failed: GenericOperation("error in response: status code '507 Insufficient Storage', content: 'RestJsonError { details: \"Operation failed due to insufficient resources: Not enough suitable pools available, 0/1\", message: \"SvcError :: NotEnoughResources\", kind: ResourceExhausted }'")

In dem Beispiel wird Insufficient Storage als Grund für Volumenbereitstellungsfehler dargestellt.

Führen Sie den folgenden Befehl aus, um die verfügbare Kapazität des kurzlebigen Datenträgers eines einzelnen Knotens zu überprüfen.

$ kubectl get diskpool -n acstor
NAME                                CAPACITY      AVAILABLE     USED        RESERVED    READY   AGE
ephemeraldisk-temp-diskpool-jaxwb   75660001280   75031990272   628011008   560902144   True    21h
ephemeraldisk-temp-diskpool-wzixx   75660001280   75031990272   628011008   560902144   True    21h
ephemeraldisk-temp-diskpool-xbtlj   75660001280   75031990272   628011008   560902144   True    21h

In diesem Beispiel ist die verfügbare Kapazität des temporären Datenträgers für einen einzelnen Knoten 75031990272 Byte oder 69 GiB.

Passen Sie die Volumespeichergröße unter der verfügbaren Kapazität an und stellen Sie Ihren Pod erneut bereit. Siehe unter Bereitstellen eines Pods mit einem generischen kurzlebigen Volume.

Weitere Informationen