Dela via


Snabbstart: Distribuera ett Kubernetes-kluster med hjälp av en Azure Resource Manager-mall

Gäller för: Azure Stack HCI, version 23H2

Den här snabbstarten visar hur du distribuerar ett Kubernetes-kluster i AKS Arc med hjälp av en Azure Resource Manager-mall. Azure Arc utökar Azure-hanteringsfunktionerna till Kubernetes-kluster var som helst, vilket ger en enhetlig metod för att hantera olika miljöer.

Innan du börjar

Den här artikeln förutsätter en grundläggande förståelse av Kubernetes-begrepp.

Om du vill distribuera en Resource Manager mall behöver du skrivåtkomst till de resurser som du distribuerar och åtkomst till alla åtgärder i resurstypen Microsoft.Resources/deployments. Om du till exempel vill distribuera en virtuell dator behöver du behörigheterna Microsoft.Compute/virtualMachines/write och Microsoft.Resources/deployments/* . Det finns en lista med roller och behörigheter i Inbyggda roller i Azure.

Förutsättningar

  • Ett Azure-konto med en aktiv prenumeration.
  • Ett Azure Stack HCI 23H2-kluster.
  • Den senaste Versionen av Azure CLI.

Steg 1: Förbereda ditt Azure-konto

  1. Logga in på Azure: öppna terminalen eller kommandotolken och logga in på ditt Azure-konto med hjälp av Azure CLI:

    az login
    
  2. Ange din prenumeration: ersätt <your-subscription-id> med ditt prenumerations-ID:

    az account set --subscription "<your-subscription-id>"
    

Steg 2: Skapa ett SSH-nyckelpar med Hjälp av Azure CLI

az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"

eller skapa ett SSH-nyckelpar med hjälp av ssh-keygen:

ssh-keygen -t rsa -b 4096

Om du vill distribuera mallen måste du ange den offentliga nyckeln från SSH-paret. Använd kommandot för az sshkey show att hämta den offentliga nyckeln:

az sshkey show --name "mySSHKey" --resource-group "myResourceGroup" --query "publicKey"

Som standard skapas SSH-nyckelfilerna i katalogen ~/.ssh . az sshkey create Kör kommandot eller ssh-keygen för att skriva över alla befintliga SSH-nyckelpar med samma namn.

Mer information om hur du skapar SSH-nycklar finns i Skapa och hantera SSH-nycklar för autentisering i Azure.

Steg 3: Granska mallen

Mallen som används i den här snabbstarten kommer från lagringsplatsen för Azure-snabbstartsmallar:

{
    "$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"
        }
      }
    ]
  }

Steg 4: Distribuera mallen

Distribuera mallen genom att köra följande kommando för att distribuera Kubernetes-klustret:

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

Det tar några minuter att skapa klustret. Vänta tills klustret har distribuerats innan du går vidare till nästa steg.

Steg 5: Verifiera distributionen

När distributionen är klar använder du följande kommando för att kontrollera att Kubernetes-klustret är igång:

az aksarc show --resource-group "<resource-group-name>" --name "<cluster-name>" --output table

Steg 6: Anslut till klustret

  1. Kör kommandot för att ansluta till klustret az connectedk8s proxy . Kommandot laddar ned och kör en proxybinärfil på klientdatorn och hämtar en kubeconfig-fil som är associerad med klustret:

    az connectedk8s proxy --name <cluster name> -g <resource group>
    

    Du kan också använda Kubernetes kommandoradsklient kubectl. Om du använder Azure Cloud Shell är kubectl redan installerat. Kör kommandot för att installera och köra kubectl lokalt az aksarc install-cli .

    Konfigurera kubectl för att ansluta till ditt Kubernetes-kluster med kommandot az aksarc get-credentials . Det här kommandot laddar ned autentiseringsuppgifter och konfigurerar Kubernetes CLI för att använda dem:

    az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
    
  2. Kontrollera anslutningen till klustret med hjälp av kubectl get kommandot . Det här kommandot returnerar en lista över klusternoderna:

    kubectl get nodes -A --kubeconfig .\<path to kubecofig> 
    

    Följande exempelutdata visar de tre noder som skapades i föregående steg. Kontrollera att nodstatusen är Klar:

    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
    

Mallresurser

connectedClusters

Name Beskrivning Värde
type Resurstypen. Microsoft.Kubernetes/ConnectedClusters
apiVersion Resurs-API-versionen. 2024-01-01
name Resursnamnet. Sträng (krävs)
Teckengräns: 1–63
Giltiga tecken: Alfanumeriska tecken, understreck och bindestreck.
Börja och sluta med alfanumeriskt.
location Den geo-plats där resursen finns. Sträng (krävs).
tags Resurstaggar. Ordlista med taggnamn och värden. Se Taggar i mallar.
extendedLocation Den utökade platsen för den virtuella datorn. ExtendedLocation
identity Identiteten för det anslutna klustret, om det har konfigurerats.
properties Egenskaper för ett anslutet kluster.

ProvisionedClusterInstances

Name Beskrivning Värde
type Resurstypen microsoft.hybridcontainerservice/provisionedclusterinstances
apiVersion Resurs-API-versionen 2024-01-01
name Resursnamnet Sträng (krävs). Ändra inte detta från standardinställningen.
properties Egenskaper för ett anslutet kluster.
extendedLocation Den utökade platsen för klustret. ExtendedLocation

ExtendedLocation

Name Beskrivning Värde
name ID:t för den utökade platsen. sträng
type Den utökade platsens typ. CustomLocation

Nästa steg

Översikt över AKS Arc