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