Quickstart: Een Kubernetes-cluster implementeren met behulp van een Azure Resource Manager-sjabloon
Van toepassing op: Azure Local, versie 23H2
In deze quickstart ziet u hoe u een Kubernetes-cluster implementeert in AKS Arc met behulp van een Azure Resource Manager-sjabloon. Azure Arc breidt azure-beheermogelijkheden uit naar Kubernetes-clusters overal en biedt een uniforme benadering voor het beheren van verschillende omgevingen.
Voordat u begint
In dit artikel wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten.
Als u een Resource Manager-sjabloon wilt implementeren, hebt u schrijftoegang nodig voor de resources die u implementeert en hebt u toegang tot alle bewerkingen op het resourcetype Microsoft.Resources/deployments . Als u bijvoorbeeld een virtuele machine wilt implementeren, hebt u machtigingen voor Microsoft.Compute/virtualMachines/write en Microsoft.Resources/deployments/* nodig. Zie Ingebouwde Azure-rollen voor een lijst met rollen en machtigingen.
Vereisten
- Een Azure-account met een actief abonnement.
- Een Lokaal Azure-cluster, versie 23H2.
- De nieuwste Versie van Azure CLI.
Stap 1: uw Azure-account voorbereiden
Meld u aan bij Azure: open uw terminal of opdrachtprompt en meld u aan bij uw Azure-account met behulp van de Azure CLI:
az login
Stel uw abonnement in: vervang dit door
<your-subscription-id>
uw abonnements-id:az account set --subscription "<your-subscription-id>"
Stap 2: een SSH-sleutelpaar maken met behulp van Azure CLI
az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
of maak een SSH-sleutelpaar met behulp van ssh-keygen:
ssh-keygen -t rsa -b 4096
Als u de sjabloon wilt implementeren, moet u de openbare sleutel van het SSH-paar opgeven. Gebruik de az sshkey show
opdracht om de openbare sleutel op te halen:
az sshkey show --name "mySSHKey" --resource-group "myResourceGroup" --query "publicKey"
Standaard worden de SSH-sleutelbestanden gemaakt in de map ~/.ssh . Voer de az sshkey create
of ssh-keygen
opdracht uit om een bestaand SSH-sleutelpaar met dezelfde naam te overschrijven.
Zie SSH-sleutels maken en beheren voor verificatie in Azure voor meer informatie over het maken van SSH-sleutels.
Stap 3: De sjabloon controleren
De sjabloon die in deze quickstart wordt gebruikt, is afkomstig uit de opslagplaats voor Azure-quickstartsjablonen:
{
"$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"
}
}
]
}
Stap 4: De sjabloon implementeren
Voer de volgende opdracht uit om het Kubernetes-cluster te implementeren om de sjabloon te implementeren:
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..."
Het duurt een paar minuten om het cluster te maken. Wacht totdat het cluster met succes is geïmplementeerd voordat u met de volgende stap verdergaat.
Stap 5: De implementatie controleren
Zodra de implementatie is voltooid, gebruikt u de volgende opdracht om te controleren of uw Kubernetes-cluster actief is:
az aksarc show --resource-group "<resource-group-name>" --name "<cluster-name>" --output table
Stap 6: Verbinding maken met het cluster
Voer de
az connectedk8s proxy
opdracht uit om verbinding te maken met het cluster. Met de opdracht wordt een binair proxybestand gedownload en uitgevoerd op de clientcomputer en wordt een kubeconfig-bestand opgehaald dat is gekoppeld aan het cluster:az connectedk8s proxy --name <cluster name> -g <resource group>
Of gebruik de Kubernetes-opdrachtregelclient kubectl. Als u Azure Cloud Shell gebruikt, is kubectl al geïnstalleerd. Voer de
az aksarc install-cli
opdracht uit om kubectl lokaal te installeren en uit te voeren.Configureer kubectl om verbinding te maken met uw Kubernetes-cluster met behulp van de
az aksarc get-credentials
opdracht. Met deze opdracht downloadt u referenties en configureert u de Kubernetes CLI om deze te gebruiken:az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
Controleer de verbinding met uw cluster met behulp van de
kubectl get
opdracht. Met deze opdracht wordt een lijst met de clusterknooppunten geretourneerd:kubectl get nodes -A --kubeconfig .\<path to kubecofig>
In de volgende voorbeelduitvoer ziet u de drie knooppunten die in de vorige stappen zijn gemaakt. Zorg ervoor dat de status van het knooppunt gereed is:
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
Sjabloonresources
connectedClusters
Name | Beschrijving | Waarde |
---|---|---|
type |
Het type van de resource. | Microsoft.Kubernetes/ConnectedClusters |
apiVersion |
De versie van de resource-API. | 2024-01-01 |
name |
De resourcenaam. | Tekenreeks (vereist) Tekenlimiet: 1-63 Geldige tekens: Alfanumerieke tekens, onderstrepingstekens en afbreekstreepjes. Begin en eindig met alfanumeriek. |
location |
De geografische locatie waarin de resource zich bevindt. | Tekenreeks (vereist). |
tags |
Resourcetags. | Woordenlijst met tagnamen en -waarden. Zie Tags in sjablonen. |
extendedLocation |
De uitgebreide locatie van de virtuele machine. | ExtendedLocation |
identity |
De identiteit van het verbonden cluster, indien geconfigureerd. | |
properties |
Eigenschappen van een verbonden cluster. |
ProvisionedClusterInstances
Name | Beschrijving | Waarde |
---|---|---|
type |
Het resourcetype | microsoft.hybridcontainerservice/provisionedclusterinstances |
apiVersion |
De resource-API-versie | 2024-01-01 |
name |
De resourcenaam | Tekenreeks (vereist). Wijzig dit niet van standaardinstelling. |
properties |
Eigenschappen van een verbonden cluster. | |
extendedLocation |
De uitgebreide locatie van het cluster. | ExtendedLocation |
ExtendedLocation
Name | Beschrijving | Waarde |
---|---|---|
name |
De id van de uitgebreide locatie. | tekenreeks |
type |
Het type van de uitgebreide locatie. | CustomLocation |