Delen via


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

  1. Aanmelden bij Azure: open uw terminal of opdrachtprompt en meld u aan bij uw Azure-account met behulp van de Azure CLI:

    az login
    
  2. 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

  1. 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>"
    
  2. 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

Volgende stappen

Overzicht van AKS Arc