Share via


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

Gilt für: Azure Stack HCI, 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 die 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.

Um eine Resource Manager-Vorlage bereitzustellen, benötigen Sie Schreibzugriff auf die ressourcen, die Sie bereitstellen, und Zugriff auf alle Vorgänge für den Ressourcentyp Microsoft.Resources/deployments. Zum Bereitstellen eines virtuellen Computers benötigen Sie beispielsweise 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 Stack HCI 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 durch <your-subscription-id> Ihre Abonnement-ID:

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

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

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

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

ssh-keygen -t rsa -b 4096

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

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

Standardmäßig werden die SSH-Schlüsseldateien im Verzeichnis ~/.ssh erstellt. Führen Sie den az sshkey create Befehl oder ssh-keygen aus, 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 Repository Azure-Schnellstartvorlagen:

{
    "$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 Befehl aus, um eine Verbindung mit dem az connectedk8s proxy Cluster herzustellen. Der Befehl lädt eine Proxybinärdatei auf dem Clientcomputer herunter, 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. Führen Sie den az aksarc install-cli Befehl aus, um kubectl lokal zu installieren und auszuführen.

    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 Knoten, die in den vorherigen Schritten erstellt wurden. 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 Ressourcentyp. 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, in dem sich die Ressource befindet. Zeichenfolge (erforderlich).
tags Ressourcentags. Wörterbuch der Tagnamen und -werte. Siehe Tags in Vorlagen.
extendedLocation Der erweiterte Speicherort des virtuellen Computers. ExtendedLocation
identity Die Identität des verbundenen Clusters, sofern konfiguriert.
properties Eigenschaften eines verbundenen Clusters.

ProvisionedClusterInstances

Name BESCHREIBUNG Wert
type 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 Der erweiterte Speicherort 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