Instalowanie usługi Azure Container Storage do użycia z usługą Azure Kubernetes Service

Azure Container Storage to oparta na chmurze usługa zarządzania woluminami, wdrażania i orkiestracji utworzona dla kontenerów. Użyj tego samouczka, aby zainstalować najnowszą wersję produkcyjną usługi Azure Container Storage w klastrze usługi Azure Kubernetes Service (AKS), niezależnie od tego, czy tworzysz nowy klaster, czy włączasz usługę w istniejącym klastrze.

Ten artykuł wyjaśnia, jak zainstalować Azure Container Storage przy użyciu dwóch obsługiwanych przepływów (tylko instalator lub instalator + funkcja), jak uruchamiana jest instalacja komponentów oraz jak zweryfikować i rozwiązywać problemy z wdrożeniem. Typy magazynów woluminów trwałych instalują sterowniki implementujące Container Storage Interface (CSI). Azure Container Storage może również umożliwić i zarządzać rozproszonym akceleratorem przechowywania w chmurze (DACS), który instaluje osobne rozszerzenie i nie tworzy elementu StorageClass.

Jeśli wolisz open-source'ową wersję Azure Container Storage, zobacz repozytorium local-csi-driver , aby uzyskać alternatywne instrukcje instalacji.

Po ukończeniu tego samouczka możesz wykonywać następujące czynności:

  • Przygotowywanie środowiska Azure CLI
  • Tworzenie lub wybieranie grupy zasobów dla klastra
  • Potwierdź, że typy maszyn wirtualnych w puli węzłów spełniają wymagania instalacji
  • Instalowanie Azure Container Storage poprzez utworzenie nowego klastra AKS lub włączenie go w istniejącym klastrze

Ważne

Ten artykuł dotyczy usługi Azure Container Storage (wersja 2.x.x). Aby zapoznać się z wcześniejszymi wersjami, zobacz dokumentację usługi Azure Container Storage (wersja 1.x.x). Jeśli masz już zainstalowaną usługę Azure Container Storage (w wersji 1.x.x) w klastrze usługi AKS, usuń ją, wykonując następujące kroki.

Wymagania wstępne

  • Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.

  • Ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.83.0 lub nowszej. Aby uzyskać więcej informacji, zobacz Jak zainstalować interfejs wiersza polecenia platformy Azure. Wyłącz rozszerzenia, takie jak aks-preview w przypadku wystąpienia problemów. Zainstaluj lub zaktualizuj rozszerzenia zgodnie z potrzebami:

    • az extension add --upgrade --name k8s-extension
    • az extension add --upgrade --name elastic-san (Tylko Elastic SAN)
  • Potrzebny jest klient wiersza polecenia Kubernetes, kubectl. Jest już zainstalowany, jeśli używasz usługi Azure Cloud Shell. Możesz zainstalować ją lokalnie, uruchamiając az aks install-cli polecenie .

  • Sprawdź, czy region docelowy jest obsługiwany w regionach usługi Azure Container Storage.

  • Zaplanuj konfigurację puli węzłów:

    • Użyj systemu Linux jako typu systemu operacyjnego (system Windows nie jest obsługiwany).
    • Wybierz jednostkę SKU maszyny wirtualnej, która obsługuje lokalne dyski danych NVMe, jeśli planujesz używać lokalnego magazynu NVMe, takiego jak maszyny wirtualne zoptymalizowane pod kątem magazynu lub maszyny wirtualne przyspieszone za pomocą GPU.
    • W przypadku istniejących klastrów upewnij się, że pule węzłów już korzystają z obsługiwanej SKU maszyn wirtualnych przed włączeniem funkcji Azure Container Storage.
  • Jeśli używasz elastycznej sieci SAN po raz pierwszy w subskrypcji, uruchom to jednorazowe polecenie rejestracji:

    az provider register --namespace Microsoft.ElasticSan
    

Ustaw kontekst subskrypcji

Ustaw kontekst subskrypcji platformy Azure przy użyciu polecenia az account set. Identyfikatory subskrypcji można wyświetlić, uruchamiając polecenie az account list --output table. Zastąp <subscription-id> identyfikatorem subskrypcji.

az account set --subscription <subscription-id>

Tworzenie grupy zasobów

Grupa zasobów platformy Azure to logiczny kontener zasobów. Podczas tworzenia grupy zasobów należy określić lokalizację. Ta lokalizacja przechowuje metadane grupy zasobów i służy jako domyślny region dla zasobów tworzonych bez jawnego regionu.

Za pomocą polecenia az group create utwórz grupę zasobów. Zastąp <resource-group-name> nazwą swojej grupy zasobów i <location> regionem platformy Azure, takim jak eastus, westus2, westus3 lub westeurope. Jeśli włączysz usługę Azure Container Storage w istniejącym klastrze usługi AKS, użyj grupy zasobów, która już hostuje klaster.

az group create --name <resource-group-name> --location <location>

Jeśli grupa zasobów zostanie utworzona pomyślnie, zobaczysz dane wyjściowe podobne do tego przykładu:

{
  "id": "/subscriptions/<guid>/resourceGroups/myContainerStorageRG",
  "location": "eastus",
  "managedBy": null,
  "name": "myContainerStorageRG",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null
}

Instalowanie usługi Azure Container Storage w nowym klastrze usługi AKS

Wybierz scenariusz zgodny ze swoim środowiskiem.

Ważne

Usługa Azure Container Storage domyślnie instaluje najnowszą wersję główną. Możesz przypiąć wersję główną za pomocą polecenia --container-storage-version. Nie można przypisać wersji mniejszych ani poprawek.

Instalacja wyłącznie za pomocą instalatora

Uruchom następujące polecenie, aby utworzyć nowy klaster usługi AKS i zainstalować usługę Azure Container Storage. Zastąp <cluster-name> i <resource-group> własnymi wartościami i określ typ maszyny wirtualnej, którego chcesz użyć.

az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage --generate-ssh-keys

Wdrożenie może potrwać do 5 minut. Instalacja sterownika CSI jest odroczona do momentu utworzenia klasy magazynu lub włączenia typu magazynu później.

Postępuj zgodnie z instrukcjami dotyczącymi tworzenia lokalnej klasy magazynu NVMe lub elastycznej klasy magazynu sieci SAN .

Instalator i instalacja typu pamięci

Uruchom następujące polecenie, aby utworzyć nowy klaster usługi AKS i zainstalować usługę Azure Container Storage. Zastąp <cluster-name> i <resource-group> własnymi wartościami i określ typ maszyny wirtualnej, którego chcesz użyć.

az aks create -n <cluster-name> -g <resource-group> --node-vm-size Standard_L8s_v3 --enable-azure-container-storage ephemeralDisk --generate-ssh-keys

To polecenie instaluje instalatora, wdraża lokalny sterownik NVMe CSI i tworzy domyślną klasę magazynu o nazwie local-csi. Możesz zainstalować i użyć zarówno lokalnego urządzenia NVMe, jak i elastycznej sieci SAN, podając listę, taką jak ephemeralDisk elasticSan.

Instalowanie usługi Azure Container Storage w istniejącym klastrze usługi AKS

Instalacja wyłącznie za pomocą instalatora

Uruchom następujące polecenie, aby włączyć usługę Azure Container Storage w istniejącym klastrze usługi AKS. Zastąp <cluster-name> i <resource-group> własnymi wartościami.

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

Wdrożenie może potrwać do 5 minut. Po zakończeniu procesu w klastrze zainstalowany jest składnik instalatora Azure Container Storage. Instalacja sterownika CSI jest odroczona do momentu utworzenia klasy magazynu lub włączenia typu magazynu później. Postępuj zgodnie z instrukcjami dotyczącymi tworzenia lokalnej klasy magazynu NVMe lub elastycznej klasy magazynu sieci SAN .

Instalator i instalacja typu pamięci

Uruchom następujące polecenie, aby włączyć usługę Azure Container Storage w istniejącym klastrze usługi AKS. Zastąp <cluster-name> i <resource-group> własnymi wartościami oraz określ, jakiego typu magazynu chcesz użyć.

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

To polecenie instaluje instalatora, wdraża sterownik Elastic SAN CSI i tworzy domyślną klasę magazynu o nazwie azuresan-csi. Możesz zainstalować i użyć zarówno lokalnego urządzenia NVMe, jak i elastycznej sieci SAN, podając listę, taką jak ephemeralDisk elasticSan.

Zainstaluj rozproszony akcelerator dla magazynu w chmurze (wersja zapoznawcza)

Włącz rozproszony akcelerator dla przechowywania w chmurze na istniejącym klastrze AKS, używając wartości distributedAccelerator Wymagane są wielkie litery w A. Rozszerzenie instaluje się na zasobie zarządzanego klastra AKS; nie musisz łączyć klastra z usługą Arc.

Użyj aks-preview wersji 22.0.0b9 lub nowszej wersji. Zainstaluj lub zaktualizuj rozszerzenie, zweryfikowaj jego wersję, a następnie zainstaluj lub zaktualizuj connectedk8s i k8s-extension, aby zarządzać oraz przeglądać rozszerzenie DACS:

az extension add --name aks-preview --upgrade --yes
az extension show --name aks-preview --query version --output tsv
az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes

Przed włączeniem DACS wybierz pulę węzłów Linuksa z lokalnymi dyskami danych NVMe przeznaczonymi dla pamięci podręcznej. Aplikuj etykietę dacs.azure.com/processing-unit=cpu przez konfigurację puli węzłów, zachowując wszelkie istniejące niestandardowe etykiety. Wykonaj instrukcje w Weryfikacja puli węzłów pamięci podręcznej.

Caution

Włączanie DACS instaluje wymagany DaemonSet, który wykrywa, formatuje i montuje lokalne dyski NVMe na oznaczonych węzłach cache. Oznaczaj tylko węzły z dyskami, które nie są zajęte przez inny komponent pamięci masowej.

Wykonaj następujące polecenie, zastępując <cluster-name> i <resource-group> swoimi wartościami:

az aks update \
  --name <cluster-name> \
  --resource-group <resource-group> \
  --enable-azure-container-storage distributedAccelerator

To polecenie instaluje rozszerzenie distributedaccelerator, kontroler DACS oraz wymagany DaemonSet NVMe w kube-system, a także niestandardową definicję zasobów caches.storage.azure.com (CRD). Nie instalujesz osobnego chartu zależności ani samodzielnie nie zarządzasz wydaniem Helm rozszerzenia. Domyślnie nie tworzy klasy StorageClass ani nie udostępnia zasobu cache i podów cache-server. Sama udana instalacja rozszerzenia nie oznacza, że pamięć podręczna jest gotowa do obsługi ruchu aplikacji.

Przekazuj distributedAccelerator samodzielnie w tym poleceniu, zamiast łączyć je z opcjami magazynu woluminów trwałych opisanymi wcześniej. Przed udostępnieniem serwerów cache sprawdź, czy wymagane elementy zarządzane są gotowe na każdym oznaczonym węźle cache. Aby dowiedzieć się więcej o konfiguracji pamięci podręcznej i przepływie pracy aplikacji, zobacz Wprowadzenie do rozproszonego akceleratora dla magazynu w chmurze na platformie AKS.

Aby usunąć DACS, należy postępować zgodnie z Usuwanie rozproszonego akceleratora do magazynu w chmurze. Usuń zasoby pamięci podręcznej podczas działania kontrolera, a następnie wyłącz DACS. Wyłączenie usuwa kontroler i zarządzany wstępny zestaw DaemonSet; nie usuwaj tych elementów osobno.

  • Przygotowywanie narzędzia Terraform i uwierzytelnianie na platformie Azure
  • Określ swoją grupę zasobów i konfigurację klastra AKS
  • Potwierdź, że typy maszyn wirtualnych w puli węzłów spełniają wymagania instalacji
  • Stosowanie narzędzia Terraform w celu wdrożenia usługi Azure Container Storage lub włączenia go w istniejącym klastrze

Ważne

Ten artykuł dotyczy usługi Azure Container Storage (wersja 2.x.x). Aby zapoznać się z wcześniejszymi wersjami, zobacz dokumentację usługi Azure Container Storage (wersja 1.x.x). Jeśli masz już zainstalowaną usługę Azure Container Storage (w wersji 1.x.x) w klastrze usługi AKS, usuń ją, wykonując następujące kroki.

Wymagania wstępne

  • Jeśli nie masz subskrypcji Azure, przed rozpoczęciem utwórz darmowe konto.

  • Ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.83.0 lub nowszej. Aby uzyskać więcej informacji, zobacz Jak zainstalować interfejs wiersza polecenia platformy Azure. Wyłącz rozszerzenia, takie jak aks-preview w przypadku wystąpienia problemów. Zainstaluj lub zaktualizuj rozszerzenia zgodnie z potrzebami:

    • az extension add --upgrade --name k8s-extension
    • az extension add --upgrade --name elastic-san (Tylko Elastic SAN)
  • Potrzebny jest klient wiersza polecenia Kubernetes, kubectl. Jest już zainstalowany, jeśli używasz usługi Azure Cloud Shell. Możesz zainstalować ją lokalnie, uruchamiając az aks install-cli polecenie .

  • Sprawdź, czy region docelowy jest obsługiwany w regionach usługi Azure Container Storage.

  • Zaplanuj konfigurację puli węzłów:

    • Użyj systemu Linux jako typu systemu operacyjnego (system Windows nie jest obsługiwany).
    • Wybierz jednostkę SKU maszyny wirtualnej, która obsługuje lokalne dyski danych NVMe, takie jak maszyny wirtualne zoptymalizowane do przechowywania lub maszyny wirtualne przyspieszone przez GPU.
    • W przypadku istniejących klastrów upewnij się, że pule węzłów już korzystają z obsługiwanej SKU maszyn wirtualnych przed włączeniem funkcji Azure Container Storage.
  • Zainstaluj program Terraform w wersji 1.5 lub nowszej i potwierdź instalację za pomocą polecenia terraform version. Terraform może ponownie użyć uwierzytelniania Azure CLI.

  • Jeśli używasz elastycznej sieci SAN po raz pierwszy w subskrypcji, uruchom to jednorazowe polecenie rejestracji:

    az provider register --namespace Microsoft.ElasticSan
    

Ustaw kontekst subskrypcji

Narzędzie Terraform może określić docelową subskrypcję platformy Azure za pomocą wielu metod:

  • subscription_id w bloku dostawcy
  • ARM_SUBSCRIPTION_ID zmienna środowiskowa
  • Domyślna subskrypcja Azure CLI
  • Tożsamość zarządzana (w przypadku uruchamiania na platformie Azure)

W przypadku użycia lokalnego ustaw kontekst interfejsu wiersza polecenia platformy Azure:

az account set --subscription <subscription-id>

Jeśli wdrażasz za pomocą narzędzia Terraform po raz pierwszy w subskrypcji, uruchom to jednorazowe polecenie rejestracyjne:

az provider register --namespace Microsoft.KubernetesConfiguration

# Wait for registration to complete (can take a few minutes)
az provider show --namespace Microsoft.KubernetesConfiguration --query "registrationState" -o tsv

Instalowanie usługi Azure Container Storage w nowym klastrze usługi AKS

Ważne

Usługa Azure Container Storage automatycznie instaluje najnowszą dostępną wersję i aktualizuje się automatycznie. Wybór wersji ręcznej nie jest obsługiwany.

  1. W pustym katalogu roboczym utwórz plik main.tf z następującą minimalną konfiguracją klastra AKS. Zaktualizuj nazwy zasobów, lokalizacje i rozmiary maszyn wirtualnych, aby spełnić wymagania.

    terraform {
      required_version = ">= 1.5.0"
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~> 4.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    resource "azurerm_resource_group" "rg" {
      name     = "demo-aks-rg"
      location = "eastus"
    }
    
    resource "azurerm_kubernetes_cluster" "aks" {
      name                = "demo-aks-cluster"
      dns_prefix          = "demo-aks"
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
    
      default_node_pool {
        name       = "systempool"
        vm_size    = "Standard_L8s_v3"
        node_count = 3
      }
    
      identity {
        type = "SystemAssigned"
      }
    }
    
    resource "azurerm_kubernetes_cluster_extension" "container_storage" {
      # NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility
      name           = "acstor"
      cluster_id     = azurerm_kubernetes_cluster.aks.id
      extension_type = "microsoft.azurecontainerstoragev2"
    }
    
  2. Zainicjuj katalog roboczy, aby pobrać dostawcę AzureRM.

    terraform init
    
  3. Przejrzyj planowane zmiany.

    terraform plan
    
  4. Zastosuj konfigurację, aby utworzyć grupę zasobów, klaster usługi AKS i rozszerzenie usługi Azure Container Storage. Wdrożenie zwykle trwa 5 minut.

    terraform apply
    

Po zakończeniu procesu w klastrze zainstalowany jest składnik instalatora Azure Container Storage. Instalacja sterownika CSI jest odroczona do momentu utworzenia klasy przechowywania. Postępuj zgodnie z instrukcjami dotyczącymi tworzenia lokalnej klasy magazynu NVMe lub elastycznej klasy magazynu sieci SAN .

Instalowanie usługi Azure Container Storage w istniejącym klastrze usługi AKS

Jeśli klaster usługi AKS już istnieje i zarządzasz nim poza programem Terraform, nadal możesz włączyć usługę Azure Container Storage, tworząc tylko zasób rozszerzenia. Użyj źródła danych, aby wyszukać identyfikator klastra.

terraform {
  required_version = ">= 1.5.0"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~> 4.0"
    }
  }
}

provider "azurerm" {
  features {}
}

data "azurerm_kubernetes_cluster" "existing" {
  name                = "existing-aks"
  resource_group_name = "existing-aks-rg"
}

resource "azurerm_kubernetes_cluster_extension" "container_storage" {
  # NOTE: the `name` parameter must be "acstor" for Azure CLI compatibility
  name           = "acstor"
  cluster_id     = data.azurerm_kubernetes_cluster.existing.id
  extension_type = "microsoft.azurecontainerstoragev2"
}

Uruchom polecenie terraform init (jeśli jest to nowy katalog roboczy), a następnie terraform apply zainstaluj usługę Azure Container Storage w docelowym klastrze. Wdrożenie zwykle trwa 5 minut.

Po zakończeniu procesu w klastrze zainstalowany jest składnik instalatora Azure Container Storage. Instalacja sterownika CSI jest odroczona do momentu utworzenia klasy przechowywania. Postępuj zgodnie z instrukcjami dotyczącymi tworzenia lokalnej klasy magazynu NVMe lub elastycznej klasy magazynu sieci SAN .

Weryfikowanie instalacji

Nawiązywanie połączenia z klastrem usługi AKS

Przed uruchomieniem poleceń weryfikacji upewnij się, że lokalna konfiguracja kubeconfig jest ustawiona na klaster docelowy:

az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>

Jeśli zarządzasz wieloma klastrami, dodaj element --overwrite-existing w celu zastąpienia istniejącego kontekstu lub użyj polecenia --context , aby ustawić unikatową nazwę kontekstu.

Weryfikacja instalatora (tryb tylko dla instalatora)

Po włączeniu tylko instalatora sprawdź, czy instalator jest obecny:

kubectl get deploy -n kube-system | grep acstor

Oczekiwane dane wyjściowe:

acstor-cluster-manager                2/2     2            2           4d9h
acstor-geneva                         2/2     2            2           4d9h

Zweryfikuj rozproszony akcelerator dla przechowywania w chmurze

W przypadku instalacji DACS sprawdź rozszerzenie zamiast szukać StorageClass:

az k8s-extension show \
  --cluster-type managedClusters \
  --cluster-name <cluster-name> \
  --resource-group <resource-group> \
  --name distributedaccelerator \
  --query '{extensionType:extensionType,provisioningState:provisioningState,currentVersion:currentVersion,releaseTrain:releaseTrain}' \
  --output table

Potwierdź, że typ rozszerzenia to microsoft.distributedaccelerator, a jego stan aprowizacji to Succeeded. Pole currentVersion pokazuje zainstalowaną wersję. Nazwa zasobu rozszerzenia jest pisana małymi literami distributedaccelerator, w przeciwieństwie do opcji pamięci CLI distributedAccelerator.

Po połączeniu z klastrem zweryfikuj kontroler, wymagany DaemonSet i CRD:

kubectl rollout status deployment/dacs-manager --namespace kube-system --timeout=5m
kubectl get deployment dacs-manager --namespace kube-system
kubectl rollout status daemonset/dacs-prereq --namespace kube-system --timeout=10m
kubectl get daemonset dacs-prereq --namespace kube-system
kubectl get pods --namespace kube-system --selector app.kubernetes.io/name=dacs-prereq --output wide
kubectl get crd caches.storage.azure.com

Kontynuuj tylko po tym, jak rozszerzenie jest już w Succeeded stanie – kontroler ma gotową replikę, a wymagany DaemonSet ma gotowy pod na każdym oznaczonym węźle cache. DaemonSet z zerową liczbą pożądanych replik nie weryfikuje przygotowania NVMe. Jeśli sprawdzenie się nie powiedzie, zobacz Rozwiązywanie problemów z rozproszonym akceleratorem dla magazynu w chmurze.

Następujące kroki weryfikacji klasy pamięci i sterownika CSI dotyczą typów woluminów trwałych, a nie DAC-ów.

Sprawdzanie obecności klasy przechowywania

Po utworzeniu klasy magazynu lub włączeniu typu magazynu sprawdź klasę magazynu:

kubectl get sc

Przykładowy wynik:

NAME                    PROVISIONER               RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
azuresan-csi            san.csi.azure.com         Delete          Immediate              false                  4d7h
local-csi               localdisk.csi.acstor.io   Delete          WaitForFirstConsumer   true                   4d5h

Sprawdź instalację sterowników

Sprawdź, czy spodziewane składniki są dostępne po utworzeniu klasy pamięci lub instalacji typu pamięci.

kubectl get pod -n kube-system | grep acstor

Przykładowy wynik:

pod/acstor-azuresan-csi-driver-jrqd2                       7/7     Running   0               142m
pod/acstor-azuresan-csi-driver-tcdp8                       7/7     Running   0               142m
pod/acstor-cluster-manager-76c67496f9-8ln5d                2/2     Running   0               3h54m
pod/acstor-cluster-manager-76c67496f9-b4c8q                2/2     Running   0               3h54m
pod/acstor-geneva-588bcbcc67-4tr5d                         3/3     Running   0               3h54m
pod/acstor-geneva-588bcbcc67-k7j7k                         3/3     Running   0               3h54m
pod/acstor-node-agent-46v47                                1/1     Running   0               142m
pod/acstor-node-agent-6c99m                                1/1     Running   0               142m
pod/acstor-otel-collector-4lfgz                            1/1     Running   0               142m
pod/acstor-otel-collector-hw9nd                            1/1     Running   0               142m

Debugowanie

Aby przeprowadzić debugowanie, obserwuj system, kiedy składniki są wdrażane.

kubectl get events -n kube-system --watch
kubectl get pod -n kube-system --watch

Sprawdź niestandardowe zasoby HelmRelease i OCIRepository używane przez instalator.

kubectl describe helmreleases.helm.installer.acstor.io -n kube-system
kubectl describe ocirepositories.source.installer.acstor.io -n kube-system

Dalsze kroki