Rychlý start: Nasazení clusteru Kubernetes pomocí šablony Azure Resource Manager

Platí pro: Azure Stack HCI verze 23H2

V tomto rychlém startu se dozvíte, jak nasadit cluster Kubernetes ve službě AKS Arc pomocí šablony Azure Resource Manager. Azure Arc rozšiřuje možnosti správy Azure na clustery Kubernetes kdekoli a poskytuje jednotný přístup ke správě různých prostředí.

Než začnete

Tento článek předpokládá základní znalost konceptů Kubernetes.

Pokud chcete nasadit šablonu Resource Manager, potřebujete oprávnění k zápisu k prostředkům, které nasazujete, a přístup ke všem operacím s typem prostředku Microsoft.Resources/deployments. Například k nasazení virtuálního počítače potřebujete oprávnění Microsoft.Compute/virtualMachines/write a Microsoft.Resources/deployments/* . Seznam rolí a oprávnění najdete v tématu Předdefinované role Azure.

Požadavky

  • Účet Azure s aktivním předplatným.
  • Cluster Azure Stack HCI 23H2.
  • Nejnovější verze Azure CLI

Krok 1: Příprava účtu Azure

  1. Přihlaste se k Azure: Otevřete terminál nebo příkazový řádek a přihlaste se ke svému účtu Azure pomocí Azure CLI:

    az login
    
  2. Nastavte si předplatné: nahraďte <your-subscription-id> id vašeho předplatného:

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

Krok 2: Vytvoření páru klíčů SSH pomocí Azure CLI

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

Nebo pomocí příkazu ssh-keygen vytvořte pár klíčů SSH:

ssh-keygen -t rsa -b 4096

Pokud chcete šablonu nasadit, musíte zadat veřejný klíč z páru SSH. K načtení veřejného klíče použijte az sshkey show příkaz :

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

Ve výchozím nastavení se soubory klíčů SSH vytvářejí v adresáři ~/.ssh . Spuštěním az sshkey create příkazu nebo ssh-keygen přepište všechny existující páry klíčů SSH se stejným názvem.

Další informace o vytváření klíčů SSH najdete v tématu Vytvoření a správa klíčů SSH pro ověřování v Azure.

Krok 3: Kontrola šablony

Šablona použitá v tomto rychlém startu pochází z úložiště Šablony Azure pro rychlý start:

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

Krok 4: Nasazení šablony

Pokud chcete nasadit šablonu, spuštěním následujícího příkazu nasaďte cluster Kubernetes:

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

Vytvoření clusteru bude trvat několik minut. Než přejdete k dalšímu kroku, počkejte na úspěšné nasazení clusteru.

Krok 5: Ověření nasazení

Po dokončení nasazení pomocí následujícího příkazu ověřte, že je cluster Kubernetes spuštěný a spuštěný:

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

Krok 6: Připojení ke clusteru

  1. Pokud se chcete připojit ke clusteru, spusťte příkaz az connectedk8s proxy . Příkaz stáhne a spustí na klientském počítači binární soubor proxy serveru a načte soubor kubeconfig přidružený ke clusteru:

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

    Nebo použijte klienta příkazového řádku Kubernetes kubectl. Pokud používáte Azure Cloud Shell, kubectl je už nainstalovaný. Pokud chcete nainstalovat a spustit kubectl místně, spusťte příkaz az aksarc install-cli .

    Pomocí příkazu nakonfigurujte kubectl pro připojení ke clusteru az aksarc get-credentials Kubernetes. Tento příkaz stáhne přihlašovací údaje a nakonfiguruje rozhraní příkazového řádku Kubernetes tak, aby je používalo:

    az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
    
  2. Pomocí příkazu ověřte připojení ke clusteru kubectl get . Tento příkaz vrátí seznam uzlů clusteru:

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

    Následující příklad výstupu ukazuje tři uzly vytvořené v předchozích krocích. Ujistěte se, že stav uzlu je Připraveno:

    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
    

Prostředky šablon

connectedClusters

Název Description Hodnota
type Typ prostředku. Microsoft.Kubernetes/ConnectedClusters
apiVersion Verze rozhraní API prostředku 2024-01-01
name Název prostředku. Řetězec (povinné)
Omezení počtu znaků: 1–63
Platné znaky: Alfanumerické znaky, podtržítka a spojovníky.
Začátek a konec alfanumerickými znaky
location Geografické umístění, ve kterém se prostředek nachází. Řetězec (povinné).
tags Značky prostředků. Slovník názvů a hodnot značek. Viz Značky v šablonách.
extendedLocation Rozšířené umístění virtuálního počítače. ExtendedLocation
identity Identita připojeného clusteru, pokud je nakonfigurovaná.
properties Vlastnosti připojeného clusteru.

Instance ProvisionedClusterInstance

Název Description Hodnota
type Typ prostředku microsoft.hybridcontainerservice/provisionedclusterinstances
apiVersion Verze rozhraní API prostředku 2024-01-01
name Název prostředku Řetězec (povinné). Neměňte toto nastavení z výchozího nastavení.
properties Vlastnosti připojeného clusteru.
extendedLocation Rozšířené umístění clusteru. ExtendedLocation

ExtendedLocation

Název Description Hodnota
name ID rozšířeného umístění. řetězec
type Typ rozšířeného umístění. CustomLocation

Další kroky

Přehled služby AKS Arc