Quickstart: Een Kubernetes-cluster implementeren met behulp van een Azure Resource Manager-sjabloon
Van toepassing op: Azure Stack HCI, versie 23H2
In deze quickstart ziet u hoe u een Kubernetes-cluster in AKS Arc implementeert 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 toegang tot alle bewerkingen op het resourcetype Microsoft.Resources/deployments. Als u bijvoorbeeld een virtuele machine wilt implementeren, hebt u de machtigingen 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 Azure Stack HCI 23H2-cluster.
- De nieuwste versie van Azure CLI.
Stap 1: uw Azure-account voorbereiden
Aanmelden bij Azure: open uw terminal of opdrachtprompt en meld u aan bij uw Azure-account met behulp van de Azure CLI:
az login
Uw abonnement instellen: vervang 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 az sshkey show
de opdracht om de openbare sleutel op te halen:
az sshkey show --name "mySSHKey" --resource-group "myResourceGroup" --query "publicKey"
De SSH-sleutelbestanden worden standaard gemaakt in de map ~/.ssh . Voer de az sshkey create
opdracht of uit ssh-keygen
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 azure-snelstartsjablonen:
{
"$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
Als u de sjabloon wilt implementeren, voert u de volgende opdracht uit om het Kubernetes-cluster 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 opdracht uit om verbinding te maken met het
az connectedk8s proxy
cluster. Met de opdracht wordt een binaire proxy op de clientcomputer gedownload en uitgevoerd 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 worden referenties gedownload en wordt de Kubernetes CLI geconfigureerd 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
Naam | Description | Waarde |
---|---|---|
type |
Het resourcetype. | 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
Naam | Description | Waarde |
---|---|---|
type |
Het resourcetype | microsoft.hybridcontainerservice/provisionedclusterinstances |
apiVersion |
De resource-API-versie | 2024-01-01 |
name |
De resourcenaam | Tekenreeks (vereist). Wijzig dit niet van de standaardinstelling. |
properties |
Eigenschappen van een verbonden cluster. | |
extendedLocation |
De uitgebreide locatie van het cluster. | ExtendedLocation |
ExtendedLocation
Naam | Description | Waarde |
---|---|---|
name |
De id van de uitgebreide locatie. | tekenreeks |
type |
Het type van de uitgebreide locatie. | CustomLocation |