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