Szybki start: tworzenie klastra Kubernetes platformy Azure Nexus przy użyciu interfejsu wiersza polecenia platformy Azure

  • Wdrażanie klastra Kubernetes platformy Azure nexus przy użyciu interfejsu wiersza polecenia platformy Azure.

Zanim rozpoczniesz

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

  • Zainstaluj najnowszą wersję niezbędnych rozszerzeń interfejsu wiersza polecenia platformy Azure.

  • Ten artykuł wymaga wersji 2.49.0 lub nowszej interfejsu wiersza polecenia platformy Azure. W przypadku korzystania z usługi Azure Cloud Shell najnowsza wersja jest już zainstalowana.

  • Jeśli masz wiele subskrypcji platformy Azure, wybierz odpowiedni identyfikator subskrypcji, w którym zasoby mają być rozliczane przy użyciu az account polecenia .

  • Zapoznaj się z tabelą SKU maszyny wirtualnej w sekcji referencyjnej, aby zapoznać się z listą obsługiwanych jednostek SKU maszyn wirtualnych.

  • Zapoznaj się z listą obsługiwanych wersji platformy Kubernetes obsługiwanych wersji rozwiązania Kubernetes.

  • Utwórz grupę zasobów przy użyciu az group create polecenia . Grupa zasobów platformy Azure to grupa logiczna, w której zasoby platformy Azure są wdrażane i zarządzane. Podczas tworzenia grupy zasobów zostanie wyświetlony monit o określenie lokalizacji. Ta lokalizacja to lokalizacja magazynu metadanych grupy zasobów i lokalizacja, w której zasoby są uruchamiane na platformie Azure, jeśli nie określisz innego regionu podczas tworzenia zasobów. W poniższym przykładzie tworzona jest grupa zasobów o nazwie myResourceGroup w lokalizacji eastus.

    az group create --name myResourceGroup --location eastus
    

    Poniższy przykład danych wyjściowych przypomina pomyślne utworzenie grupy zasobów:

    {
      "id": "/subscriptions/<guid>/resourceGroups/myResourceGroup",
      "location": "eastus",
      "managedBy": null,
      "name": "myResourceGroup",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  • Aby wdrożyć plik Bicep lub szablon usługi ARM, potrzebujesz dostępu do zapisu w zasobach wdrażanych i dostępu do wszystkich operacji w typie zasobu Microsoft.Resources/deployments. Na przykład do wdrożenia klastra potrzebne są uprawnienia Microsoft.NetworkCloud/kubernetesclusters/write i Microsoft.Resources/deployments/*. Aby uzyskać listę ról i uprawnień, zobacz Role wbudowane platformy Azure.

  • Potrzebny jest identyfikator zasobu klastra Nexus operatora platformy custom location Azure.

  • Musisz utworzyć różne sieci zgodnie z określonymi wymaganiami dotyczącymi obciążenia i niezbędne jest posiadanie odpowiednich adresów IP dostępnych dla obciążeń. Aby zapewnić bezproblemową implementację, zaleca się skonsultowanie się z odpowiednimi zespołami pomocy technicznej w celu uzyskania pomocy.

  • W tym przewodniku Szybki start założono, że masz podstawową wiedzę na temat pojęć związanych z rozwiązaniem Kubernetes. Aby uzyskać więcej informacji, zobacz temat Kubernetes core concepts for Azure Kubernetes Service (AKS) (Kubernetes — podstawowe pojęcia dotyczące usługi Azure Kubernetes Service (AKS)).

Tworzenie klastra Kubernetes na platformie Azure Nexus

Poniższy przykład tworzy klaster o nazwie myNexusK8sCluster w grupie zasobów myResourceGroup w lokalizacji eastus .

Przed uruchomieniem poleceń należy ustawić kilka zmiennych, aby zdefiniować konfigurację klastra. Poniżej przedstawiono zmienne, które należy ustawić, wraz z niektórymi wartościami domyślnymi, których można użyć dla niektórych zmiennych:

Zmienna opis
LOKALIZACJA Region świadczenia usługi Azure, w którym chcesz utworzyć klaster.
RESOURCE_GROUP Nazwa grupy zasobów platformy Azure, w której chcesz utworzyć klaster.
SUBSCRIPTION_ID Identyfikator subskrypcji platformy Azure.
CUSTOM_LOCATION Ten argument określa niestandardową lokalizację wystąpienia Nexus.
CSN_ARM_ID Identyfikator CSN to unikatowy identyfikator sieci usług w chmurze, której chcesz użyć.
CNI_ARM_ID Identyfikator CNI to unikatowy identyfikator interfejsu sieciowego, który ma być używany przez środowisko uruchomieniowe kontenera.
AAD_ADMIN_GROUP_OBJECT_ID Identyfikator obiektu grupy Microsoft Entra, która powinna mieć uprawnienia administratora w klastrze.
CLUSTER_NAME Nazwa, którą chcesz nadać klastrowi Nexus Kubernetes.
K8S_VERSION Wersja platformy Kubernetes, której chcesz użyć.
ADMIN_USERNAME Nazwa użytkownika administratora klastra.
SSH_PUBLIC_KEY Klucz publiczny SSH używany do bezpiecznej komunikacji z klastrem.
CONTROL_PLANE_COUNT Liczba węzłów płaszczyzny sterowania dla klastra.
CONTROL_PLANE_VM_SIZE Rozmiar maszyny wirtualnej dla węzłów płaszczyzny sterowania.
INITIAL_AGENT_POOL_NAME Nazwa początkowej puli agentów.
INITIAL_AGENT_POOL_COUNT Liczba węzłów w początkowej puli agentów.
INITIAL_AGENT_POOL_VM_SIZE Rozmiar maszyny wirtualnej dla początkowej puli agentów.
POD_CIDR Zakres sieci zasobników Kubernetes w klastrze w notacji CIDR.
SERVICE_CIDR Zakres sieci dla usług Kubernetes w klastrze w notacji CIDR.
DNS_SERVICE_IP Adres IP usługi DNS Kubernetes.

Po zdefiniowaniu tych zmiennych możesz uruchomić polecenie interfejsu wiersza polecenia platformy Azure, aby utworzyć klaster. Dodaj flagę --debug na końcu, aby udostępnić bardziej szczegółowe dane wyjściowe na potrzeby rozwiązywania problemów.

Aby zdefiniować te zmienne, użyj następujących poleceń zestawu i zastąp przykładowe wartości preferowanymi wartościami. Możesz również użyć wartości domyślnych dla niektórych zmiennych, jak pokazano w poniższym przykładzie:

RESOURCE_GROUP="myResourceGroup"
SUBSCRIPTION_ID="<Azure subscription ID>"
LOCATION="$(az group show --name $RESOURCE_GROUP --query location --subscription $SUBSCRIPTION_ID -o tsv)"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CSN_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
CNI_ARM_ID="/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
AAD_ADMIN_GROUP_OBJECT_ID="00000000-0000-0000-0000-000000000000"
CLUSTER_NAME="myNexusK8sCluster"
K8S_VERSION="v1.24.9"
ADMIN_USERNAME="azureuser"
SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
CONTROL_PLANE_COUNT="1"
CONTROL_PLANE_VM_SIZE="NC_G6_28_v1"
INITIAL_AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-1"
INITIAL_AGENT_POOL_COUNT="1"
INITIAL_AGENT_POOL_VM_SIZE="NC_P10_56_v1"
POD_CIDR="10.244.0.0/16"
SERVICE_CIDR="10.96.0.0/16"
DNS_SERVICE_IP="10.96.0.10"

Ważne

Należy zastąpić symbole zastępcze CUSTOM_LOCATION, CSN_ARM_ID, CNI_ARM_ID i AAD_ADMIN_GROUP_OBJECT_ID rzeczywistymi wartościami przed uruchomieniem tych poleceń.

Po zdefiniowaniu tych zmiennych można utworzyć klaster Kubernetes, wykonując następujące polecenie interfejsu wiersza polecenia platformy Azure:

az networkcloud kubernetescluster create \
  --name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --location "${LOCATION}" \
  --kubernetes-version "${K8S_VERSION}" \
  --aad-configuration admin-group-object-ids="[${AAD_ADMIN_GROUP_OBJECT_ID}]" \
  --admin-username "${ADMIN_USERNAME}" \
  --ssh-key-values "${SSH_PUBLIC_KEY}" \
  --control-plane-node-configuration \
    count="${CONTROL_PLANE_COUNT}" \
    vm-sku-name="${CONTROL_PLANE_VM_SIZE}" \
  --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE}}]" \
  --network-configuration \
    cloud-services-network-id="${CSN_ARM_ID}" \
    cni-network-id="${CNI_ARM_ID}" \
    pod-cidrs="[${POD_CIDR}]" \
    service-cidrs="[${SERVICE_CIDR}]" \
    dns-service-ip="${DNS_SERVICE_IP}"

Jeśli nie ma wystarczającej pojemności do wdrożenia żądanych węzłów klastra, zostanie wyświetlony komunikat o błędzie. Jednak ten komunikat nie zawiera żadnych szczegółów dotyczących dostępnej pojemności. Stwierdza się, że tworzenie klastra nie może kontynuować z powodu niewystarczającej pojemności.

Uwaga

Obliczenie pojemności uwzględnia cały klaster platformy, a nie ogranicza się do poszczególnych stojaków. W związku z tym, jeśli pula agentów jest tworzona w strefie (gdzie stojak jest równy strefie) z niewystarczającą pojemnością, ale inna strefa ma wystarczającą pojemność, tworzenie klastra będzie kontynuowane, ale ostatecznie upłynął limit czasu. Takie podejście do sprawdzania pojemności ma sens tylko wtedy, gdy określona strefa nie jest określona podczas tworzenia klastra lub puli agentów.

Po kilku minutach polecenie zostanie ukończone i zwrócone informacje o klastrze. Aby uzyskać bardziej zaawansowane opcje, zobacz Szybki start: wdrażanie klastra Kubernetes platformy Azure Nexus przy użyciu Bicep.

Przeglądanie wdrożonych zasobów

Po zakończeniu wdrażania możesz wyświetlić zasoby przy użyciu interfejsu wiersza polecenia lub witryny Azure Portal.

Aby wyświetlić szczegóły klastra myNexusK8sCluster w myResourceGroup grupie zasobów, wykonaj następujące polecenie interfejsu wiersza polecenia platformy Azure:

az networkcloud kubernetescluster show \
  --name myNexusK8sCluster \
  --resource-group myResourceGroup

Ponadto aby uzyskać listę nazw puli agentów skojarzonych z klastrem myNexusK8sCluster w myResourceGroup grupie zasobów, możesz użyć następującego polecenia interfejsu wiersza polecenia platformy Azure.

az networkcloud kubernetescluster agentpool list \
  --kubernetes-cluster-name myNexusK8sCluster \
  --resource-group myResourceGroup \
  --output table

Łączenie z klastrem

Teraz, gdy klaster Nexus Kubernetes został pomyślnie utworzony i połączony z usługą Azure Arc, możesz łatwo nawiązać z nim połączenie przy użyciu funkcji łączenia klastra. Połączenie klastra umożliwia bezpieczny dostęp do klastra i zarządzanie nim z dowolnego miejsca, co ułatwia interaktywne zadania programistyczne, debugowanie i administrowanie klastrem.

Aby uzyskać bardziej szczegółowe informacje na temat dostępnych opcji, zobacz Połączenie do klastra Kubernetes operatora platformy Azure.

Uwaga

Podczas tworzenia klastra Nexus Kubernetes nexus automatycznie tworzy zarządzaną grupę zasobów przeznaczoną do przechowywania zasobów klastra w ramach tej grupy zostanie ustanowiony zasób klastra połączonego z usługą Arc.

Aby uzyskać dostęp do klastra, należy skonfigurować klaster connect kubeconfig. Po zalogowaniu się do interfejsu wiersza polecenia platformy Azure przy użyciu odpowiedniej jednostki Firmy Microsoft Entra możesz uzyskać kubeconfig niezbędne do komunikowania się z klastrem z dowolnego miejsca, nawet poza zaporą, która go otacza.

  1. Ustaw CLUSTER_NAMEzmienne i SUBSCRIPTION_IDRESOURCE_GROUP .

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Wykonywanie zapytań względem zarządzanej grupy zasobów za pomocą az polecenia i przechowywania w usłudze MANAGED_RESOURCE_GROUP

     az account set -s $SUBSCRIPTION_ID
     MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --output tsv --query managedResourceGroupConfiguration.name)
    
  3. Następujące polecenie uruchamia serwer proxy connectedk8s, który umożliwia nawiązanie połączenia z serwerem interfejsu API Kubernetes dla określonego klastra Nexus Kubernetes.

    az connectedk8s proxy -n $CLUSTER_NAME  -g $MANAGED_RESOURCE_GROUP &
    
  4. Użyj kubectl polecenia , aby wysyłać żądania do klastra:

    kubectl get pods -A
    

    Powinna zostać wyświetlona odpowiedź z klastra zawierającego listę wszystkich węzłów.

Uwaga

Jeśli zostanie wyświetlony komunikat o błędzie "Nie można opublikować tokenu dostępu do serwera proxy klientaFailed w celu nawiązania połączenia z tożsamością usługi zarządzanej", może być konieczne wykonanie polecenia az login w celu ponownego uwierzytelnienia na platformie Azure.

Dodawanie puli agentów

Klaster utworzony w poprzednim kroku ma jedną pulę węzłów. Dodajmy drugą pulę agentów przy użyciu az networkcloud kubernetescluster agentpool create polecenia . Poniższy przykład tworzy pulę agentów o nazwie myNexusK8sCluster-nodepool-2:

Możesz również użyć wartości domyślnych dla niektórych zmiennych, jak pokazano w poniższym przykładzie:

RESOURCE_GROUP="myResourceGroup"
CUSTOM_LOCATION="/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
CLUSTER_NAME="myNexusK8sCluster"
AGENT_POOL_NAME="${CLUSTER_NAME}-nodepool-2"
AGENT_POOL_VM_SIZE="NC_P10_56_v1"
AGENT_POOL_COUNT="1"
AGENT_POOL_MODE="User"

Po zdefiniowaniu tych zmiennych można dodać pulę agentów, wykonując następujące polecenie interfejsu wiersza polecenia platformy Azure:

az networkcloud kubernetescluster agentpool create \
  --name "${AGENT_POOL_NAME}" \
  --kubernetes-cluster-name "${CLUSTER_NAME}" \
  --resource-group "${RESOURCE_GROUP}" \
  --subscription "${SUBSCRIPTION_ID}" \
  --extended-location name="${CUSTOM_LOCATION}" type=CustomLocation \
  --count "${AGENT_POOL_COUNT}" \
  --mode "${AGENT_POOL_MODE}" \
  --vm-sku-name "${AGENT_POOL_VM_SIZE}"

Po kilku minutach polecenie zostanie ukończone i zwrócone informacje o puli agentów. Aby uzyskać bardziej zaawansowane opcje, zobacz Szybki start: wdrażanie klastra Kubernetes platformy Azure Nexus przy użyciu Bicep.

Uwaga

Podczas początkowego tworzenia klastra można dodać wiele pul agentów przy użyciu początkowych konfiguracji puli agentów. Jeśli jednak chcesz dodać pule agentów po początkowym utworzeniu, możesz użyć powyższego polecenia, aby utworzyć dodatkowe pule agentów dla klastra Nexus Kubernetes.

Poniższy przykład danych wyjściowych przypomina pomyślne utworzenie puli agentów.

$ az networkcloud kubernetescluster agentpool list --kubernetes-cluster-name myNexusK8sCluster --resource-group myResourceGroup --output table
This command is experimental and under development. Reference and support levels: https://aka.ms/CLI_refstatus
Count    Location    Mode    Name                          ProvisioningState    ResourceGroup    VmSkuName
-------  ----------  ------  ----------------------------  -------------------  ---------------  -----------
1        eastus      System  myNexusK8sCluster-nodepool-1  Succeeded            myResourceGroup  NC_P10_56_v1
1        eastus      User    myNexusK8sCluster-nodepool-2  Succeeded            myResourceGroup  NC_P10_56_v1

Czyszczenie zasobów

Gdy grupa zasobów nie jest już potrzebna, usuń ją. Grupa zasobów i wszystkie zasoby w grupie zasobów zostaną usunięte.

Użyj polecenia az group delete, aby usunąć grupę zasobów, klaster Kubernetes i wszystkie powiązane zasoby z wyjątkiem zasobów sieciowych Operator Nexus.

az group delete --name myResourceGroup --yes --no-wait

Następne kroki

Teraz można wdrożyć pliki CDF bezpośrednio za pośrednictwem połączenia klastra lub za pośrednictwem programu Azure Operator Service Manager.