Udostępnij przez


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

  • Skonfiguruj klaster Kubernetes Azure Nexus używając Azure CLI.

Zanim rozpoczniesz

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

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

  • Ten artykuł wymaga wersji 2.61.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 maszyn wirtualnych w sekcji referencyjnej z listą obsługiwanych SKU.

  • Zapoznaj się z listą obsługiwanych wersji Kubernetes dla uzyskania informacji o wspieranych wersjach Kubernetes.

  • Utwórz grupę zasobów przy użyciu polecenia az group create. 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, musisz posiadać uprawnienia do zapisu w zasobach, które wdrażasz, oraz dostęp do wszystkich operacji na 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.

  • Potrzebujesz identyfikatora zasobu klastra Azure Operator Nexus custom location.

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

  • Ten szybki start zakłada, że masz podstawową wiedzę na temat pojęć związanych z platformą 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:

Variable Description
LOKALIZACJA Region świadczenia usługi Azure, w którym chcesz utworzyć klaster.
Grupa Zasobów 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ć.
Nazwa użytkownika administratora Nazwa użytkownika administratora klastra.
SSH_PUBLIC_KEY Klucz publiczny SSH używany do bezpiecznej komunikacji z klastrem.
LICZBA_KOMPONENTÓW_STEROWANIA Liczba węzłów płaszczyzny sterowania dla klastra.
CONTROL_PLANE_VM_SIZE Rozmiar maszyny wirtualnej dla węzłów płaszczyzny sterowania.
Nazwa_Poczatkowej_Puli_Agentow Nazwa początkowej puli agentów.
INITIAL_AGENT_POOL_COUNT Liczba węzłów w pierwotnej puli agentów.
Początkowa wielkość maszyny wirtualnej puli agentów Rozmiar maszyny wirtualnej dla początkowej puli agentów.
POD_CIDR Zakres sieci podó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_SSH_PUBLIC_KEY="$(cat ~/.ssh/id_rsa.pub)"
AGENT_POOL_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}" \
    ssh-key-values='["${CONTROL_PLANE_SSH_PUBLIC_KEY}"]' \
  --initial-agent-pool-configurations "[{count:${INITIAL_AGENT_POOL_COUNT},mode:System,name:${INITIAL_AGENT_POOL_NAME},vm-sku-name:${INITIAL_AGENT_POOL_VM_SIZE},ssh-key-values:['${AGENT_POOL_SSH_PUBLIC_KEY}']}]" \
  --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 / Notatka

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 wygaśnie limit czasu. Takie podejście do sprawdzania pojemności ma sens tylko wtedy, gdy konkretna strefa nie jest określona podczas tworzenia klastra lub puli agentów.

Po kilku minutach polecenie ukończy się i zwróci 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

Połącz się 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 Connect to an Azure Operator Nexus Kubernetes cluster (Nawiązywanie połączenia z klastrem Kubernetes operatora platformy Azure).

Uwaga / Notatka

Podczas tworzenia klastra Kubernetes Nexus, Nexus automatycznie tworzy zarządzaną grupę zasobów przeznaczoną do przechowywania zasobów klastra. W ramach tej grupy ustanawia się zasób klastra połączonego z Arc.

Aby uzyskać dostęp do klastra, należy skonfigurować klaster connect kubeconfig. Po zalogowaniu się do Azure CLI przy użyciu odpowiedniej jednostki Microsoft Entra możesz uzyskać kubeconfig konieczne do komunikacji z klastrem z dowolnego miejsca, nawet poza otaczającą go zaporą.

  1. Ustaw CLUSTER_NAME, RESOURCE_GROUP i SUBSCRIPTION_ID zmienne.

    CLUSTER_NAME="myNexusK8sCluster"
    RESOURCE_GROUP="myResourceGroup"
    SUBSCRIPTION_ID=<set the correct subscription_id>
    
  2. Pobierz informacje o zarządzanej grupie zasobów za pomocą az i przechowaj w 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, żeby wysyłać żądania do klastra.

    kubectl get pods -A
    

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

Uwaga / Notatka

Jeśli zostanie wyświetlony komunikat o błędzie "Nie można opublikować tokenu dostępu do serwera proxy klienta. Nie udało się połączyć z MSI", 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 / Notatka

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

Uprzątnij zasoby

Gdy grupa zasobów nie będzie już potrzebna, usuń grupę zasobów. 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

Dalsze kroki

Teraz można wdrożyć CNF-y bezpośrednio przez połączenie klastra lub przez usługę Azure Operator Service Manager.