Udostępnij za pośrednictwem


Uaktualnianie klastra Kubernetes przy użyciu aparatu AKS w usłudze Azure Stack Hub

Aparat AKS umożliwia uaktualnienie klastra Kubernetes, który został pierwotnie wdrożony przy użyciu narzędzia w usłudze Azure Stack Hub. Klastry można obsługiwać przy użyciu aparatu AKS. Zadania konserwacji są podobne do dowolnego systemu IaaS. Należy pamiętać o dostępności nowych aktualizacji i zastosowaniu aparatu AKS.

Uaktualnianie klastra

Polecenie uaktualnienia aktualizuje wersję platformy Kubernetes i podstawowy obraz systemu operacyjnego. Za każdym razem, gdy uruchamiasz polecenie uaktualniania dla każdego węzła klastra, aparat usługi AKS tworzy nową maszynę wirtualną przy użyciu obrazu podstawowego usługi AKS skojarzonego z wersją używanego aparatu Aks.

W przypadku aparatu AKS w wersji 0.73.0 lub nowszej można użyć aks-engine upgrade polecenia , aby zachować walutę każdego węzła głównego i węzła agenta w klastrze.

W przypadku aparatu AKS w wersji 0.75.3 lub nowszej można użyć aks-engine-azurestack upgrade polecenia , aby zachować walutę każdego węzła głównego i węzła agenta w klastrze.

Firma Microsoft nie zarządza klastrem. Firma Microsoft udostępnia jednak narzędzie i obraz maszyny wirtualnej, których można użyć do zarządzania klastrem.

W przypadku wdrożonego klastra uaktualnienia obejmują:

  • Kubernetes
  • Dostawca kubernetes usługi Azure Stack Hub
  • Podstawowy system operacyjny

Podczas uaktualniania klastra produkcyjnego należy wziąć pod uwagę następujące kwestie:

  • Czy używasz poprawnej specyfikacji klastra (apimodel.json) i grupy zasobów dla klastra docelowego?
  • Czy używasz niezawodnej maszyny dla maszyny klienckiej do uruchamiania aparatu AKS i z którego wykonujesz operacje uaktualniania?
  • Upewnij się, że masz klaster kopii zapasowych i że działa.
  • Jeśli to możliwe, uruchom polecenie z maszyny wirtualnej w środowisku usługi Azure Stack Hub, aby zmniejszyć przeskoki sieciowe i potencjalne błędy łączności.
  • Upewnij się, że twoja subskrypcja ma wystarczającą ilość miejsca na cały proces. Proces przydziela nowe maszyny wirtualne podczas procesu.
  • Nie są planowane żadne aktualizacje systemu ani zaplanowane zadania.
  • Skonfiguruj uaktualnienie etapowe w klastrze, który jest skonfigurowany dokładnie jako klaster produkcyjny i przetestuj uaktualnienie przed wykonaniem tego zadania w klastrze produkcyjnym

Kroki uaktualniania do nowszej wersji rozwiązania Kubernetes

Uwaga

Obraz podstawowy usługi AKS jest również uaktualniany, jeśli używasz nowszej wersji aparatu aks-engine, a obraz jest dostępny na platformie handlowej.

Poniższe instrukcje korzystają z minimalnych kroków, aby przeprowadzić uaktualnienie. Jeśli chcesz uzyskać więcej szczegółów, zobacz artykuł Uaktualnianie klastrów Kubernetes.

  1. Najpierw należy określić wersje, które można określić dla uaktualnienia. Ta wersja zależy od aktualnie używanej wersji, a następnie użyj tej wartości wersji do przeprowadzenia uaktualnienia. Wersje platformy Kubernetes obsługiwane przez aparat usługi AKS można wymienić, uruchamiając następujące polecenie:

    Uwaga

    W przypadku usługi AKSe w wersji 0.75.3 lub nowszej polecenie pobierania wersji aparatu usługi AKS to aks-engine-azurestack get-versions.

    aks-engine get-versions --azure-env AzureStackCloud
    

    Aby uzyskać pełne mapowanie aparatu AKS, obrazu podstawowego usługi AKS i wersji platformy Kubernetes, zobacz Obsługiwane wersje aparatu usługi AKS.

  2. Zbierz informacje potrzebne do uruchomienia upgrade polecenia. Polecenie upgrade używa następujących parametrów:

    Parametr Przykład opis
    azure-env AzureStackCloud Aby wskazać aparat usługi AKS, że platforma docelowa to Azure Stack Hub, użyj polecenia AzureStackCloud.
    lokalizacja local Nazwa regionu usługi Azure Stack Hub. W przypadku zestawu ASDK region jest ustawiony na localwartość .
    resource-group kube-rg Wprowadź nazwę nowej grupy zasobów lub wybierz istniejącą grupę zasobów. Nazwa zasobu musi być alfanumeryczna i mała.
    subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Wprowadź identyfikator subskrypcji. Aby uzyskać więcej informacji, zobacz Subskrybowanie oferty
    api-model ./kubernetes-azurestack.json Ścieżka do pliku konfiguracji klastra lub modelu interfejsu API.
    client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Wprowadź identyfikator GUID jednostki usługi. Identyfikator klienta zidentyfikowany jako identyfikator aplikacji, gdy administrator usługi Azure Stack Hub utworzył jednostkę usługi.
    client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Wprowadź wpis tajny jednostki usługi. Jest to wpis tajny klienta skonfigurowany podczas tworzenia usługi.
    identity-system adfs Opcjonalny. Określ rozwiązanie do zarządzania tożsamościami, jeśli używasz usług Federacyjnych Active Directory (AD FS).
  3. Po uruchomieniu wartości uruchom następujące polecenie:

    Uwaga

    W przypadku usługi AKSe w wersji 0.75.3 lub nowszej polecenie uaktualniania aparatu usługi AKS to aks-engine-azurestack upgrade.

    aks-engine upgrade \
    --azure-env AzureStackCloud \
    --location <for an ASDK is local> \
    --resource-group kube-rg \
    --subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --api-model kube-rg/apimodel.json \
    --upgrade-version 1.18.15 \
    --client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
    --identity-system adfs # required if using AD FS
    
  4. Jeśli z jakiegokolwiek powodu operacja uaktualniania napotka błąd, możesz ponownie uruchomić upgrade polecenie po rozwiązaniu problemu. Aparat usługi AKS wznowi operację, w której zakończyła się niepowodzeniem w poprzednim czasie.

Kroki uaktualniania obrazu systemu operacyjnego

  1. Przejrzyj tabelę supported-kubernetes-versions i ustal, czy masz wersję aparatu aks-engine i obrazu podstawowego usługi AKS, który planujesz uaktualnić. Jeśli korzystasz z aparatu AKS w wersji 0.73.0 lub nowszej, aby wyświetlić wersję aparatu aks-engine: aks-engine version. Jeśli korzystasz z aparatu AKS w wersji 0.75.3 lub nowszej, aby wyświetlić wersję aparatu aks-engine: aks-engine-azurestack version.
  2. Uaktualnij odpowiednio aparat AKS na maszynie, na której zainstalowano aparat aks-engine: ./get-akse.sh --version vx.xx.x zastępując x.xx.x wersją docelową.
  3. Poproś operatora usługi Azure Stack Hub o dodanie wersji obrazu podstawowego usługi AKS potrzebnej w witrynie Azure Stack Hub Marketplace, która ma być używana.
  4. aks-engine upgrade Uruchom polecenie przy użyciu tej samej wersji platformy Kubernetes, której już używasz, ale dodaj element --force. Przykład można zobaczyć w temacie Wymuszanie uaktualnienia.

Kroki aktualizacji klastra do systemu operacyjnego Ubuntu 20.04

Aparat usługi AKS w wersji 0.75.3 lub nowszej umożliwia uaktualnienie maszyn wirtualnych klastra z systemu Ubuntu 18.04 do wersji 20.04. Wykonaj te kroki:

  1. Znajdź i zmodyfikuj api-model.json plik, który został wygenerowany podczas wdrażania. Powinien to być ten sam plik używany do każdej operacji uaktualniania lub skalowania za pomocą polecenia aks-engine. W aKS Engine w wersji 0.75.3 lub nowszej użyj polecenia aks-engine-azurestack.
  2. Znajdź sekcje dla masterProfile i agentPoolProfiles, w tych sekcjach zmień wartość distro na aks-ubuntu-20.04.
  3. api-model.json Zapisz plik i użyj api-model.json pliku w aks-engin upgrade poleceniu, tak jak w sekcji Kroki uaktualniania do nowszej wersji rozwiązania Kubernetes

Kroki uaktualniania klastra w przypadku używania woluminów magazynu z aparatem usługi AKS w wersji 0.70.0 lub nowszej

Dostawca usług w chmurze dla projektu platformy Azure (znany również jako cloud-controller-managerdostawca chmury poza drzewem lub zewnętrznego dostawcy usług w chmurze) implementuje interfejs dostawcy usług w chmurze Kubernetes dla chmur platformy Azure. Implementacja poza drzewem zastępuje przestarzałą implementację drzewa.

W usłudze Azure Stack Hub, począwszy od platformy Kubernetes w wersji 1.21, klastry oparte na aks engine będą używać wyłącznie usługi cloud-controller-manager. W związku z tym w celu wdrożenia klastra Kubernetes w wersji 1.21 lub nowszej wymagane jest ustawienie orchestratorProfile.kubernetesConfig.useCloudControllerManager wartości true w modelu interfejsu API (na przykład). Proces uaktualniania aparatu AKS automatycznie zaktualizuje flagę useCloudControllerManager .

Uwaga

Zagadnienia dotyczące uaktualniania: proces uaktualniania klastra Kubernetes z wersji 1.20 (lub nowszej) do wersji 1.21 (lub nowszej) spowoduje przestój obciążeń opartych na aprowizatorze kubernetes.io/azure-disk woluminów w drzewie. Przed uaktualnieniem do platformy Kubernetes w wersji 1.21 lub nowszej zdecydowanie zaleca się wykonanie pełnej kopii zapasowej danych aplikacji i zweryfikowanie w środowisku przedprodukcyjnym, że zasoby magazynu klastra (PV i PVC) można migrować do nowego modułu aprowizacji woluminów. Dowiedz się, jak przeprowadzić migrację do sterownika CSI dysku platformy Azure tutaj.

Inicjowanie obsługi administracyjnej woluminów

Aprowizacja woluminów w drzewie jest zgodna tylko z dostawcą chmury w drzewie. W związku z tym klaster w wersji 1.21 lub nowszej musi zawierać sterownik interfejsu magazynu kontenerów (CSI), jeśli obciążenia użytkowników korzystają z magazynu trwałego. Poniżej wymieniono kilka rozwiązań dostępnych w usłudze Azure Stack Hub.

Aparat AKS nie będzie domyślnie włączać żadnego sterownika CSI w usłudze Azure Stack Hub. W przypadku obciążeń, które wymagają sterownika CSI, można jawnie włączyć azuredisk-csi-driver dodatek (klastry tylko dla systemu Linux) lub użyć Helm go do zainstalowania wykresu azuredisk-csi-driver (klastry z systemem Linux i/lub Windows).

Migrowanie magazynu trwałego do sterownika CSI dysku platformy Azure

Proces uaktualniania klastra opartego na aks engine z wersji 1.20 (lub nowszej) do wersji 1.21 (lub nowszej) spowoduje przestój obciążeń opartych na kubernetes.io/azure-disk aprowizatorze woluminów w drzewie, ponieważ ten aprowizator nie jest częścią dostawcy usług w chmurze dla platformy Azure.

Jeśli dane utrwalone na podstawowych dyskach platformy Azure powinny zostać zachowane, po zakończeniu procesu uaktualniania klastra wymagane są następujące dodatkowe kroki:

  1. Instalowanie sterownika CSI dysku platformy Azure
  2. Usuwanie przestarzałych klas magazynu drzewa
  3. Ponowne tworzenie woluminów trwałych i oświadczeń

1. Ręczne instalowanie sterownika CSI dysku platformy Azure

Poniższy skrypt używa Helm polecenia do zainstalowania sterownika CSI dysku platformy Azure:

DRIVER_VERSION=v1.10.0
helm repo add azuredisk-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts
helm install azuredisk-csi-driver azuredisk-csi-driver/azuredisk-csi-driver \
  --namespace kube-system \
  --set cloud=AzureStackCloud \
  --set controller.runOnMaster=true \
  --version ${DRIVER_VERSION}

2. Zastępowanie klas magazynu

Funkcja kube-addon-manager automatycznie utworzy klasy magazynu sterowników CSI dysku platformy Azure (disk.csi.azure.com) po ręcznym usunięciu klas magazynu w drzewie (kubernetes.io/azure-disk):

IN_TREE_SC="default managed-premium managed-standard"

# Delete deprecated "kubernetes.io/azure-disk" storage classes
kubectl delete storageclasses ${IN_TREE_SC}

# Wait for addon manager to create the "disk.csi.azure.com" storage class resources
kubectl get --watch storageclasses

3. Ponowne tworzenie woluminów trwałych

Po zainstalowaniu sterownika CSI dysku platformy Azure i zastąpieniu klas magazynu następnym krokiem jest ponowne utworzenie woluminów trwałych (PV) i oświadczeń woluminów trwałych (PVC) przy użyciu sterownika CSI dysku platformy Azure (lub alternatywnego rozwiązania CSI).

Jest to wieloetapowy proces, który może być różny w zależności od tego, jak te zasoby zostały początkowo wdrożone. Ogólne kroki to:

  • Usuń wdrożenie lub stanowy zestaw, który odwołuje się do par PV + PVC do migracji (definicja zasobu kopii zapasowej, jeśli to konieczne).
  • Upewnij się, że właściwość PVs persistentVolumeReclaimPolicy jest ustawiona na wartość Retain (przykład).
  • Usuń pary PV + PVC, aby przeprowadzić migrację (w razie potrzeby definicje zasobów kopii zapasowej).
  • Aby przeprowadzić migrację, zaktualizuj definicję zasobuvs, usuwając azureDisk obiekt i dodając csi obiekt z odwołaniem do oryginalnego dysku AzureDisk (przykład).
  • Utwórz ponownie w następującej kolejności zasób PV/s, zasób PVC /s (w razie potrzeby) i na koniec wdrożenie lub stanowy zestaw.

Poniższy skrypt migracji jest dostarczany jako szablon.

Jeśli po uruchomieniu skryptu migracji zasobnik jest zablokowany z powodu błędu "Nie można dołączyć lub zainstalować woluminów", upewnij się, że sterownik CSI dysku platformy Azure został zainstalowany , a klasy magazynu zostały utworzone ponownie.

Wymuszanie uaktualnienia

Mogą istnieć warunki, w których można wymusić uaktualnienie klastra. Na przykład pierwszego dnia wdrożysz klaster w środowisku odłączonym przy użyciu najnowszej wersji platformy Kubernetes. Następnego dnia ubuntu wyda poprawkę do luki w zabezpieczeniach, dla której firma Microsoft generuje nowy obraz podstawowy usługi AKS. Nowy obraz można zastosować, wymuszając uaktualnienie przy użyciu tej samej wdrożonej wersji rozwiązania Kubernetes.

Uwaga

W przypadku usługi AKSe w wersji 0.75.3 lub nowszej polecenie uaktualniania aparatu usługi AKS to aks-engine-azurestack upgrade.

aks-engine upgrade \
--azure-env AzureStackCloud   
--location <for an ASDK is local> \
--resource-group kube-rg \
--subscription-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--api-model kube-rg/apimodel.json \
--upgrade-version 1.18.15 \
--client-id xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--client-secret xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--force

Aby uzyskać instrukcje, zobacz Wymuszanie uaktualniania.

Następne kroki