Udostępnij za pośrednictwem


Rozwiązywanie problemów z usługą Azure Container Storage w wersji zapoznawczej

Usługa Azure Container Storage to oparta na chmurze usługa zarządzania woluminami, wdrażania i orkiestracji wbudowana natywnie dla kontenerów. Skorzystaj z tego artykułu, aby rozwiązać typowe problemy z usługą Azure Container Storage i znaleźć rozwiązania problemów.

Rozwiązywanie problemów z instalacją

Nie można zainstalować usługi Azure Container Storage

Po uruchomieniu az aks createpolecenia może zostać wyświetlony komunikat Nie można zainstalować usługi Azure Container Storage. Klaster usługi AKS jest tworzony. Uruchom polecenie az aks update wraz z poleceniem --enable-azure-container-storage , aby włączyć usługę Azure Container Storage.

Ten komunikat oznacza, że usługa Azure Container Storage nie została zainstalowana, ale klaster usługi AKS został prawidłowo utworzony.

Aby zainstalować usługę Azure Container Storage w klastrze i utworzyć pulę magazynów, uruchom następujące polecenie. Zastąp <cluster-name> wartości i <resource-group> własnymi wartościami. Zastąp ciąg <storage-pool-type> ciągiem azureDisk, ephemeraldisklub elasticSan.

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

Nie można ustawić typu puli magazynów na NVMe

Jeśli spróbujesz zainstalować usługę Azure Container Storage z dyskiem efemerycznym, w szczególności z lokalnym dyskiem NVMe w klastrze, w którym jednostka SKU maszyny wirtualnej nie ma dysków NVMe, zostanie wyświetlony następujący komunikat o błędzie: Nie można ustawić opcji --storage-pool-as NVMe, ponieważ żadna z pul węzłów nie może obsługiwać efemerycznego dysku NVMe.

Aby rozwiązać ten problem, utwórz pulę węzłów przy użyciu jednostki SKU maszyny wirtualnej z dyskami NVMe i spróbuj ponownie. Zobacz Maszyny wirtualne zoptymalizowane pod kątem magazynu.

Rozwiązywanie problemów z pulą magazynów

Aby sprawdzić stan pul magazynów, uruchom polecenie kubectl describe sp <storage-pool-name> -n acstor. Poniżej przedstawiono niektóre problemy, które mogą wystąpić.

Tworzenie elastycznej sieci SAN kończy się niepowodzeniem

Jeśli próbujesz utworzyć elastyczną pulę magazynów SIECI SAN, może zostać wyświetlony komunikat Tworzenie elastycznej sieci SAN platformy Azure nie powiodło się: Maksymalna możliwa liczba elastycznych sieci SAN dla utworzonej już subskrypcji. Oznacza to, że osiągnięto limit liczby elastycznych zasobów sieci SAN, które można wdrożyć w regionie na subskrypcję. Limit można sprawdzić tutaj: Elastyczna skalowalność sieci SAN i cele wydajności. Rozważ usunięcie wszystkich istniejących elastycznych zasobów sieci SAN w ramach subskrypcji, które nie są już używane, lub spróbuj utworzyć pulę magazynów w innym regionie.

Nie znaleziono urządzeń zablokowanych

Jeśli zostanie wyświetlony ten komunikat, prawdopodobnie próbujesz utworzyć pulę magazynów dysków efemerycznych w klastrze, w którym jednostka SKU maszyny wirtualnej nie ma dysków NVMe.

Aby rozwiązać ten problem, utwórz pulę węzłów przy użyciu jednostki SKU maszyny wirtualnej z dyskami NVMe i spróbuj ponownie. Zobacz Maszyny wirtualne zoptymalizowane pod kątem magazynu.

Typ puli magazynów jest już włączony

Jeśli spróbujesz włączyć typ puli magazynów, który jest już włączony, zostanie wyświetlony następujący komunikat: Nieprawidłowa --enable-azure-container-storage wartość. Usługa Azure Container Storage jest już włączona dla typu <storage-pool-type> puli magazynów w klastrze. Możesz sprawdzić, czy istnieją istniejące pule magazynów utworzone, uruchamiając polecenie kubectl get sp -n acstor.

Wyłączanie typu puli magazynów

Podczas wyłączania typu puli magazynów za pośrednictwem usługi Azure Container Storage lub odinstalowywania go za pośrednictwem az aks update --disable-azure-container-storage <storage-pool-type>az aks update --disable-azure-container-storage allprogramu , jeśli istnieje istniejąca pula magazynów tego typu, zostanie wyświetlony następujący komunikat:

Wyłączenie usługi Azure Container Storage dla typu <storage-pool-type> puli magazynów spowoduje wymuszone usunięcie wszystkich pul magazynów tego samego typu i wpłynie na aplikacje korzystające z tych pul magazynów. Wymuszone usunięcie pul magazynów może również prowadzić do wycieku zasobów magazynu, które są używane. Czy chcesz sprawdzić, czy którekolwiek z pul magazynów typu <storage-pool-type> są używane przed wyłączeniem usługi Azure Container Storage? (Y/n)

Jeśli wybierzesz wartość Y, zostanie uruchomiona automatyczna walidacja, aby upewnić się, że nie ma woluminów trwałych utworzonych z puli magazynów. Wybranie n pomija tę walidację i wyłącza typ puli magazynów, usuwając wszystkie istniejące pule magazynów i potencjalnie wpływające na aplikację.

Nie można usunąć grupy zasobów zawierającej klaster usługi AKS

Jeśli utworzono elastyczną pulę magazynów SIECI SAN, być może nie będzie można usunąć grupy zasobów, w której znajduje się klaster usługi AKS.

Aby rozwiązać ten problem, zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów. Znajdź utworzoną grupę zasobów usługi AKS (nazwa grupy zasobów rozpoczyna się od MC_). Wybierz obiekt zasobu SIECI SAN w tej grupie zasobów. Ręcznie usuń wszystkie woluminy i grupy woluminów. Następnie ponów próbę usunięcia grupy zasobów zawierającej klaster usługi AKS.

Rozwiązywanie problemów z trwałym woluminem

Nie można utworzyć woluminów trwałych z pul magazynów dysków efemerycznych

Ponieważ dyski efemeryczne (lokalne dyski NVMe i SSD tymczasowe) są efemeryczne i nie trwałe, wymuszamy użycie ogólnych woluminów efemeryjnych Kubernetes. Jeśli spróbujesz utworzyć trwałe oświadczenie woluminu przy użyciu efemerycznej puli dysków, zostanie wyświetlony następujący błąd: Błąd z serwera (Zabronione): błąd podczas tworzenia "eph-pvc.yaml": odmowa elementu webhook przyjęcia "pvc.acstor.azure.com" żądanie: w pulach magazynu efemerycznego dozwolone są tylko ogólne woluminy efemeryczny.

Jeśli potrzebujesz woluminu trwałego, w którym wolumin ma cykl życia niezależny od każdego zasobnika korzystającego z woluminu, usługa Azure Container Storage obsługuje replikację dla urządzenia NVMe. Możesz utworzyć pulę magazynów z replikacją i utworzyć woluminy trwałe z tego miejsca. Aby uzyskać wskazówki, zobacz Tworzenie puli magazynów z replikacją woluminów. Należy pamiętać, że ponieważ efemeryczne pule magazynów dysków zużywają wszystkie dostępne dyski NVMe, przed utworzeniem nowej puli magazynów z włączoną replikacją należy usunąć wszystkie istniejące pule magazynów efemerycznych dysków. Jeśli nie potrzebujesz trwałości, możesz utworzyć ogólny wolumin efemeryczny.

Oczekiwanie na utworzenie zasobnika z powodu efemerycznego rozmiaru woluminu powyżej dostępnej pojemności

Wolumin efemeryczny jest przydzielany w jednym węźle. Podczas konfigurowania rozmiaru woluminów efemerycznych dla zasobników rozmiar powinien być mniejszy niż dostępna pojemność efemerycznego dysku jednego węzła. W przeciwnym razie tworzenie zasobnika będzie w stanie oczekiwania.

Użyj następującego polecenia, aby sprawdzić, czy tworzenie zasobnika jest w stanie oczekiwania.

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

W tym przykładzie zasobnik fiopod jest w Pending stanie.

Użyj następującego polecenia, aby sprawdzić, czy zasobnik ma zdarzenie ostrzegawcze dotyczące trwałego tworzeniavolumeclaim.

$ 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..

W tym przykładzie zasobnik wyświetla zdarzenie ostrzegawcze podczas tworzenia trwałego oświadczenia fiopod-ephemeralvolumewoluminu .

Użyj następującego polecenia, aby sprawdzić, czy nie można aprowizować trwałego oświadczenia woluminu z powodu niewystarczającej pojemności.

$ 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 }'")

W tym przykładzie Insufficient Storage przedstawiono przyczynę niepowodzenia aprowizacji woluminów.

Uruchom następujące polecenie, aby sprawdzić dostępną pojemność dysku efemerycznego pojedynczego węzła.

$ 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

W tym przykładzie dostępna pojemność dysku tymczasowego dla jednego węzła to 75031990272 bajty lub 69 GiB.

Dostosuj rozmiar magazynu woluminów poniżej dostępnej pojemności i ponownie wdróż zasobnik. Zobacz Wdrażanie zasobnika z ogólnym woluminem efemerycznym.

Zobacz też