Freigeben über


Schnellstart: Bereitstellen eines Kubernetes-Clusters mithilfe einer Azure Resource Manager-Vorlage

Gilt für: Azure Local, Version 23H2

In dieser Schnellstartanleitung wird gezeigt, wie Sie einen Kubernetes-Cluster in AKS Arc mithilfe einer Azure Resource Manager-Vorlage bereitstellen. Azure Arc erweitert Azure-Verwaltungsfunktionen auf Kubernetes-Cluster überall und bietet einen einheitlichen Ansatz für die Verwaltung verschiedener Umgebungen.

Voraussetzungen

Für diesen Artikel werden Grundkenntnisse in Bezug auf die Kubernetes-Konzepte vorausgesetzt.

Zum Bereitstellen einer Ressourcen-Manager-Vorlage benötigen Sie Schreibzugriff auf die Ressourcen, die Sie bereitstellen, und den Zugriff auf alle Vorgänge im Ressourcentyp "Microsoft.Resources/deployments" . Um beispielsweise einen virtuellen Computer bereitzustellen, benötigen Sie Microsoft.Compute/virtualMachines/write und Microsoft.Resources/deployments/* Berechtigungen. Eine Liste der Rollen und Berechtigungen finden Sie unter Integrierte Azure-Rollen.

Voraussetzungen

  • Ein Azure-Konto mit einem aktiven Abonnement.
  • Ein azure Local, Version 23H2-Cluster.
  • Die neueste Azure CLI-Version.

Schritt 1: Vorbereiten Ihres Azure-Kontos

  1. Melden Sie sich bei Azure an: Öffnen Sie Ihr Terminal oder ihre Eingabeaufforderung, und melden Sie sich mit der Azure CLI bei Ihrem Azure-Konto an:

    az login
    
  2. Legen Sie Ihr Abonnement fest: Ersetzen Sie <your-subscription-id> das Abonnement durch Ihre Abonnement-ID:

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

Schritt 2: Erstellen eines SSH-Schlüsselpaars mit Azure CLI

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

oder erstellen Sie ein SSH-Schlüsselpaar mit ssh-keygen:

ssh-keygen -t rsa -b 4096

Um die Vorlage bereitzustellen, müssen Sie den öffentlichen Schlüssel aus dem SSH-Paar bereitstellen. Um den öffentlichen Schlüssel abzurufen, verwenden Sie den az sshkey show Befehl:

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

Die SSH-Schlüsseldateien werden standardmäßig im Verzeichnis ~/.ssh erstellt. Führen Sie den az sshkey create Befehl aus ssh-keygen , um ein vorhandenes SSH-Schlüsselpaar mit demselben Namen zu überschreiben.

Weitere Informationen zum Erstellen von SSH-Schlüsseln finden Sie unter Erstellen und Verwalten von SSH-Schlüsseln für die Authentifizierung in Azure.

Schritt 3: Überprüfen der Vorlage

Die in dieser Schnellstartanleitung verwendete Vorlage stammt aus dem Azure-Schnellstartvorlagen-Repository:

{
    "$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"
        }
      }
    ]
  }

Schritt 4: Bereitstellen der Vorlage

Führen Sie zum Bereitstellen der Vorlage den folgenden Befehl aus, um den Kubernetes-Cluster bereitzustellen:

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

Die Erstellung des Clusters dauert einige Minuten. Warten Sie, bis der Cluster erfolgreich bereitgestellt wurde, bevor Sie mit dem nächsten Schritt fortfahren.

Schritt 5: Überprüfen der Bereitstellung

Nachdem die Bereitstellung abgeschlossen ist, verwenden Sie den folgenden Befehl, um zu überprüfen, ob Ihr Kubernetes-Cluster ausgeführt wird:

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

Schritt 6: Herstellen einer Verbindung mit dem Cluster

  1. Führen Sie den az connectedk8s proxy Befehl aus, um eine Verbindung mit dem Cluster herzustellen. Der Befehl lädt eine Proxy-Binärdatei auf dem Clientcomputer herunter und führt sie aus und ruft eine kubeconfig-Datei ab, die dem Cluster zugeordnet ist:

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

    Oder verwenden Sie den Kubernetes-Befehlszeilenclient kubectl. Wenn Sie Azure Cloud Shell verwenden, ist kubectl bereits installiert. Um Kubectl lokal zu installieren und auszuführen, führen Sie den az aksarc install-cli Befehl aus.

    Konfigurieren Sie kubectl , um mithilfe des az aksarc get-credentials Befehls eine Verbindung mit Ihrem Kubernetes-Cluster herzustellen. Mit diesem Befehl werden die Anmeldeinformationen heruntergeladen, und die Kubernetes-Befehlszeilenschnittstelle wird für deren Verwendung konfiguriert:

    az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
    
  2. Überprüfen Sie die Verbindung mit dem Cluster mithilfe des Befehls kubectl get. Dieser Befehl gibt eine Liste der Clusterknoten zurück:

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

    Die folgende Beispielausgabe zeigt die drei in den vorherigen Schritten erstellten Knoten. Stellen Sie sicher, dass der Knotenstatus Bereit lautet:

    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
    

Vorlagenressourcen

connectedClusters

Name Beschreibung Wert
type Der Ressurcentyp. Microsoft.Kubernetes/ConnectedClusters
apiVersion Die Ressourcen-API-Version. 2024-01-01
name Der Name der Ressource. Zeichenfolge (erforderlich)
Zeichenlimit: 1-63
Gültige Zeichen: Alphanumerik, Unterstriche und Bindestriche.
Beginnen und enden Sie mit einem alphanumerischen Zeichen.
location Der geografische Standort, an dem sich die Ressource befindet. Zeichenfolge (erforderlich).
tags Ressourcentags. Wörterbuch der Tagnamen und -werte. Siehe Kategorien in Vorlagen.
extendedLocation Der erweiterte Speicherort des virtuellen Computers. ExtendedLocation
identity Die Identität des verbundenen Clusters, falls konfiguriert.
properties Eigenschaften eines verbundenen Clusters.

ProvisionedClusterInstances

Name Beschreibung Wert
type Der Ressourcentyp microsoft.hybridcontainerservice/provisionedclusterinstances
apiVersion Die Ressourcen-API-Version 2024-01-01
name Der Ressourcenname Zeichenfolge (erforderlich). Ändern Sie dies nicht von der Standardeinstellung.
properties Eigenschaften eines verbundenen Clusters.
extendedLocation Die erweiterte Position des Clusters. ExtendedLocation

ExtendedLocation

Name Beschreibung Wert
name Die ID des erweiterten Speicherorts. Zeichenfolge
type Der Typ des erweiterten Speicherorts. CustomLocation

Nächste Schritte

Übersicht über AKS Arc