Udostępnij za pośrednictwem


Szybki start: wdrażanie klastra Kubernetes przy użyciu szablonu usługi Azure Resource Manager

Dotyczy: Azure Local, wersja 23H2

W tym przewodniku Szybki start pokazano, jak wdrożyć klaster Kubernetes w usłudze AKS Arc przy użyciu szablonu usługi Azure Resource Manager. Usługa Azure Arc rozszerza możliwości zarządzania platformy Azure na klastry Kubernetes w dowolnym miejscu, zapewniając ujednolicone podejście do zarządzania różnymi środowiskami.

Zanim rozpoczniesz

W tym artykule przyjęto założenie, że podstawowa wiedza na temat pojęć związanych z platformą Kubernetes.

Aby wdrożyć szablon usługi Resource Manager, potrzebujesz dostępu do zapisu w wdrażanych zasobach i dostępu do wszystkich operacji w typie zasobu Microsoft.Resources/deployments . Na przykład do wdrożenia maszyny wirtualnej potrzebne są uprawnienia Microsoft.Compute/virtualMachines/write i Microsoft.Resources/deployments/* . Aby uzyskać listę ról i uprawnień, zobacz Role wbudowane platformy Azure.

Wymagania wstępne

  • Konto platformy Azure z aktywną subskrypcją.
  • Klaster platformy Azure w wersji lokalnej 23H2.
  • Najnowsza wersja interfejsu wiersza polecenia platformy Azure.

Krok 1. Przygotowanie konta platformy Azure

  1. Zaloguj się do platformy Azure: otwórz terminal lub wiersz polecenia i zaloguj się do konta platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure:

    az login
    
  2. Ustaw subskrypcję: zastąp <your-subscription-id> element identyfikatorem subskrypcji:

    az account set --subscription "<your-subscription-id>"
    

Krok 2. Tworzenie pary kluczy SSH przy użyciu interfejsu wiersza polecenia platformy Azure

az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"

lub utwórz parę kluczy SSH przy użyciu narzędzia ssh-keygen:

ssh-keygen -t rsa -b 4096

Aby wdrożyć szablon, należy podać klucz publiczny z pary SSH. Aby pobrać klucz publiczny, użyj az sshkey show polecenia :

az sshkey show --name "mySSHKey" --resource-group "myResourceGroup" --query "publicKey"

Domyślnie pliki kluczy SSH są tworzone w katalogu ~/.ssh . Uruchom polecenie orssh-keygen, az sshkey create aby zastąpić dowolną istniejącą parę kluczy SSH o tej samej nazwie.

Aby uzyskać więcej informacji na temat tworzenia kluczy SSH, zobacz Tworzenie kluczy SSH i zarządzanie nimi na potrzeby uwierzytelniania na platformie Azure.

Krok 3. Przeglądanie szablonu

Szablon używany w tym przewodniku Szybki start pochodzi z repozytorium Szablony szybkiego startu platformy Azure:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "provisionedClusterName": {
          "type": "string",
          "defaultValue": "aksarc-armcluster",
          "metadata": {
              "description": "The name of the AKS Arc Cluster resource."
          }
      },
      "location": {
          "type": "string",
          "defaultValue": "eastus",
          "metadata": {
              "description": "The location of the AKS Arc Cluster resource."
          }
      },
      "resourceTags": {
            "type": "object",
            "defaultValue": {}
        },
      "sshRSAPublicKey": {
          "type": "string",
          "metadata": {
              "description": "Configure all linux machines with the SSH RSA public key string. Your key should include three parts, for example 'ssh-rsa AAAAB...snip...UcyupgH '"
          }
      },
       "enableAHUB": {
            "type": "string",
            "defaultValue": "NotApplicable",
            "metadata": {
                "description": "Azure Hybrid Benefit for Windows Server licenses. NotApplicable, True, False."
            }
        },
       "agentName": {
              "type": "string",
              "defaultValue": "nodepool",
              "metadata": {
                  "description": "The name of the node pool."
              }
          },
        "agentVMSize": {
            "type": "string",
            "defaultValue": "Standard_A4_v2",
            "metadata": {
                  "description": "The VM size for node pools."
            }
        },
        "agentCount": {
              "type": "int",
              "defaultValue": 1,
              "minValue": 1,
              "maxValue": 50,
              "metadata": {
                  "description": "The number of nodes for the cluster."
              }
          },
          "agentOsType": {
              "type": "string",
              "defaultValue": "Linux",
              "metadata": {
                  "description": "The OS Type for the agent pool. Values are Linux and Windows."
              }
          },
         "loadBalancerCount": {
            "type": "int",
            "defaultValue": 0,
            "metadata": {
                "description": "The number of load balancers."
            }
        },
          "kubernetesVersion": {
              "type": "string",
              "metadata": {
                  "description": "The version of Kubernetes."
              }
          },
          "controlPlaneNodeCount": {
              "type": "int",
              "defaultValue": 1,
              "minValue": 1,
              "maxValue": 5,
              "metadata": {
                  "description": "The number of control plane nodes for the cluster."
              }
          },
          "controlPlaneIp": {
            "type": "string",
            "defaultValue": "<default_value>",
              "metadata": {
                  "description": "Control plane IP address."
              }
         },
          "controlPlaneVMSize": {
              "type": "string",
              "defaultValue": "Standard_A4_v2",
              "metadata": {
                  "description": "The VM size for control plane."
              }
          },
          "vnetSubnetIds": {
              "type": "array",
              "metadata": {
                  "description": "List of subnet Ids for the AKS cluster."
              }
          },
          "podCidr": {
            "type": "string",
            "defaultValue": "10.244.0.0/16",
            "metadata": {
                  "description": "The VM size for control plane."
              }
          },
          "networkPolicy": {
            "type": "string",
            "defaultValue": "calico",
            "metadata": {
                  "description": "Network policy to use for Kubernetes pods. Only options supported is calico."
              }
          },
          "customLocation": {
            "type": "string",
            "metadata": {
                  "description": "Fully qualified custom location resource Id."
              }
          }
      },
      "resources": [
      {
          "apiVersion": "2024-01-01",
          "type": "Microsoft.Kubernetes/ConnectedClusters",
          "kind": "ProvisionedCluster",
          "location": "[parameters('location')]",
          "name": "[parameters('provisionedClusterName')]",
          "tags": "[parameters('resourceTags')]",
          "identity": {
              "type": "SystemAssigned"
          },
          "properties": {
              "agentPublicKeyCertificate":"" ,
              "aadProfile": {
                  "enableAzureRBAC": false
              }
          }
      },
      {
          "apiVersion": "2024-01-01",
          "type": "microsoft.hybridcontainerservice/provisionedclusterinstances",
          "name": "default",
          "scope": "[concat('Microsoft.Kubernetes/ConnectedClusters', '/', parameters('provisionedClusterName'))]",
          "dependsOn": [
              "[resourceId('Microsoft.Kubernetes/ConnectedClusters', parameters('provisionedClusterName'))]"
          ],
          "properties": {
          "agentPoolProfiles": [
            {
              "count": "[parameters('agentCount')]",
              "name":"[parameters('agentName')]",
              "osType": "[parameters('agentOsType')]",
              "vmSize": "[parameters('agentVMSize')]"
            }
          ],
          "cloudProviderProfile": {
            "infraNetworkProfile": {
                  "vnetSubnetIds": "[parameters('vnetSubnetIds')]"
            }
          },
          "controlPlane": {
            "count": "[parameters('controlPlaneNodeCount')]",
            "controlPlaneEndpoint": {
                        "hostIP": "[parameters('controlPlaneIp')]"
                    },
            "vmSize": "[parameters('controlPlaneVMSize')]"
          },
         "licenseProfile": {
            "azureHybridBenefit": "[parameters('enableAHUB')]"
         },
          "kubernetesVersion": "[parameters('kubernetesVersion')]",
          "linuxProfile": {
            "ssh": {
              "publicKeys": [
                {
                  "keyData": "[parameters('sshRSAPublicKey')]"
                }
              ]
            }
          },
        "networkProfile": {
          "loadBalancerProfile": {
            "count": "[parameters('loadBalancerCount')]"
          },
          "networkPolicy": "[parameters('networkPolicy')]",
          "podCidr": "[parameters('podCidr')]"
        },
        "storageProfile": {
          "nfsCsiDriver": {
            "enabled": false
          },
          "smbCsiDriver": {
            "enabled": false
          }
        }
        },
        "extendedLocation": {
            "name": "[parameters('customLocation')]",
            "type": "CustomLocation"
        }
      }
    ]
  }

Krok 4. Wdrażanie szablonu

Aby wdrożyć szablon, uruchom następujące polecenie, aby wdrożyć klaster Kubernetes:

az deployment group create \
--name "<deployment-name>" \
--resource-group "<resource-group-name>" \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.kubernetes/aks-arc/azuredeploy.json" \
--parameters provisionedClusterName="<cluster-name> location="eastus" sshRSApublicKey="" etc..."

Utworzenie klastra trwa kilka minut. Przed przejściem do następnego kroku poczekaj na pomyślne wdrożenie klastra.

Krok 5. Weryfikowanie wdrożenia

Po zakończeniu wdrażania użyj następującego polecenia, aby sprawdzić, czy klaster Kubernetes jest uruchomiony i działa:

az aksarc show --resource-group "<resource-group-name>" --name "<cluster-name>" --output table

Krok 6. Nawiązywanie połączenia z klastrem

  1. Aby nawiązać połączenie z klastrem, uruchom az connectedk8s proxy polecenie . Polecenie pobiera i uruchamia plik binarny serwera proxy na komputerze klienckim, a następnie pobiera plik kubeconfig skojarzony z klastrem:

    az connectedk8s proxy --name <cluster name> -g <resource group>
    

    Możesz też użyć klienta wiersza polecenia kubernetes, kubectl. Jeśli używasz usługi Azure Cloud Shell, narzędzie kubectl jest już zainstalowane. Aby zainstalować i uruchomić narzędzie kubectl lokalnie, uruchom az aksarc install-cli polecenie .

    Skonfiguruj narzędzie kubectl , aby nawiązać połączenie z klastrem az aksarc get-credentials Kubernetes przy użyciu polecenia . To polecenie pobiera poświadczenia i konfiguruje interfejs wiersza polecenia platformy Kubernetes do ich używania:

    az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
    
  2. Sprawdź połączenie z klastrem kubectl get przy użyciu polecenia . To polecenie zwraca listę węzłów klastra:

    kubectl get nodes -A --kubeconfig .\<path to kubecofig> 
    

    W poniższych przykładowych danych wyjściowych przedstawiono trzy węzły utworzone w poprzednich krokach. Upewnij się, że stan węzła to Gotowe:

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-agentpool-27442051-vmss000000   Ready    agent   10m   v1.27.7
    aks-agentpool-27442051-vmss000001   Ready    agent   10m   v1.27.7
    aks-agentpool-27442051-vmss000002   Ready    agent   11m   v1.27.7
    

Zasoby szablonu

connectedClusters

Nazwa/nazwisko Opis Wartość
type Typ zasobu. Microsoft.Kubernetes/ConnectedClusters
apiVersion Wersja interfejsu API zasobów. 2024-01-01
name Nazwa zasobu. Ciąg (wymagany)
Limit znaków: 1–63
Prawidłowe znaki: alfanumeryczne, podkreślenia i łączniki.
Rozpocznij i zakończ od alfanumeryczne.
location Lokalizacja geograficzna, w której znajduje się zasób. Ciąg (wymagany).
tags Tagi zasobów. Słownik nazw tagów i wartości. Zobacz Tagi w szablonach.
extendedLocation Rozszerzona lokalizacja maszyny wirtualnej. ExtendedLocation
identity Tożsamość połączonego klastra, jeśli jest skonfigurowana.
properties Właściwości połączonego klastra.

ProvisionedClusterInstances

Nazwa/nazwisko Opis Wartość
type Typ zasobu microsoft.hybridcontainerservice/provisionedclusterinstances
apiVersion Wersja interfejsu API zasobów 2024-01-01
name Nazwa zasobu Ciąg (wymagany). Nie zmieniaj tego ustawienia domyślnego.
properties Właściwości połączonego klastra.
extendedLocation Rozszerzona lokalizacja klastra. ExtendedLocation

ExtendedLocation

Nazwa/nazwisko Opis Wartość
name Identyfikator lokalizacji rozszerzonej. string
type Typ lokalizacji rozszerzonej. CustomLocation

Następne kroki

Omówienie usługi AKS Arc