Share via


Hızlı Başlangıç: Azure Resource Manager şablonu kullanarak Kubernetes kümesi dağıtma

Şunlar için geçerlidir: Azure Stack HCI, sürüm 23H2

Bu hızlı başlangıçta, Azure Resource Manager şablonu kullanarak AKS Arc'ta Kubernetes kümesinin nasıl dağıtılacağı gösterilmektedir. Azure Arc, Azure yönetim özelliklerini her yerde Kubernetes kümelerine genişleterek farklı ortamları yönetmeye yönelik birleşik bir yaklaşım sunar.

Başlamadan önce

Bu makalede Kubernetes kavramlarını temel olarak anlamayı varsayar.

Resource Manager şablonu dağıtmak için, dağıttığınız kaynaklara yazma erişiminiz ve Microsoft.Resources/deployments kaynak türündeki tüm işlemlere erişmeniz gerekir. Örneğin, bir sanal makine dağıtmak için Microsoft.Compute/virtualMachines/write ve Microsoft.Resources/deployments/* izinlerine sahip olmanız gerekir. Rol ve izinlerin listesi için bkz. Azure yerleşik rolleri.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı.
  • Azure Stack HCI 23H2 kümesi.
  • En son Azure CLI sürümü.

1. Adım: Azure hesabınızı hazırlama

  1. Azure'da oturum açın: Terminalinizi veya komut isteminizi açın ve Azure CLI'yi kullanarak Azure hesabınızda oturum açın:

    az login
    
  2. Aboneliğinizi ayarlayın: değerini abonelik kimliğinizle değiştirin <your-subscription-id> :

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

2. Adım: Azure CLI kullanarak SSH anahtar çifti oluşturma

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

veya ssh-keygen kullanarak bir SSH anahtar çifti oluşturun:

ssh-keygen -t rsa -b 4096

Şablonu dağıtmak için SSH çiftinden ortak anahtarı sağlamanız gerekir. Ortak anahtarı almak için komutunu az sshkey show kullanın:

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

Varsayılan olarak, SSH anahtar dosyaları ~/.ssh dizininde oluşturulur. az sshkey create Aynı ada sahip mevcut SSH anahtar çiftlerinin üzerine yazmak için veya ssh-keygen komutunu çalıştırın.

SSH anahtarları oluşturma hakkında daha fazla bilgi için bkz. Azure'da kimlik doğrulaması için SSH anahtarları oluşturma ve yönetme.

3. Adım: Şablonu gözden geçirme

Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç Şablonları deposundandır:

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

4. Adım: Şablonu dağıtma

Şablonu dağıtmak için aşağıdaki komutu çalıştırarak Kubernetes kümesini dağıtın:

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

Kümenin oluşturulması birkaç dakika sürer. Sonraki adıma geçmeden önce kümenin başarıyla dağıtılması için bekleyin.

5. Adım: Dağıtımı doğrulama

Dağıtım tamamlandıktan sonra Kubernetes kümenizin çalışır durumda olduğunu doğrulamak için aşağıdaki komutu kullanın:

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

6. Adım: Kümeye bağlanma

  1. Kümeye bağlanmak için komutunu çalıştırın az connectedk8s proxy . Komut, istemci makinesinde bir ara sunucu ikili dosyasını indirip çalıştırır ve kümeyle ilişkilendirilmiş bir kubeconfig dosyasını getirir:

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

    Alternatif olarak Kubernetes komut satırı istemcisi kubectl'yi de kullanabilirsiniz. Azure Cloud Shell kullanıyorsanız kubectl zaten yüklüdür. Kubectl'yi yerel olarak yüklemek ve çalıştırmak için komutunu çalıştırınaz aksarc install-cli.

    komutunu kullanarak kubectl'yi Kubernetes kümenize bağlanacak şekilde az aksarc get-credentials yapılandırın. Bu komut kimlik bilgilerini indirir ve Kubernetes CLI'yi bunları kullanacak şekilde yapılandırmaktadır:

    az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
    
  2. komutunu kullanarak kubectl get kümenize bağlantıyı doğrulayın. Bu komut, küme düğümlerinin listesini döndürür:

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

    Aşağıdaki örnek çıktı, önceki adımlarda oluşturulan üç düğümü gösterir. Düğüm durumunun Hazır olduğundan emin olun:

    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
    

Şablon kaynakları

connectedClusters

Ad Açıklama Değer
type Kaynak türü. Microsoft.Kubernetes/ConnectedClusters
apiVersion Kaynak API'sinin sürümü. 2024-01-01
name Kaynak adı. Dize (gerekli)
Karakter sınırı: 1-63
Geçerli karakterler: Alfasayısallar, alt çizgiler ve kısa çizgiler.
Alfasayısal ile başlayıp bitirin.
location Kaynağın bulunduğu coğrafi konum. Dize (gerekli).
tags Kaynak etiketleri. Etiket adlarının ve değerlerinin sözlüğü. Bkz. Şablonlardaki etiketler.
extendedLocation Sanal makinenin genişletilmiş konumu. ExtendedLocation
identity Yapılandırılmışsa bağlı kümenin kimliği.
properties Bağlı kümenin özellikleri.

ProvisionedClusterInstances

Ad Açıklama Değer
type Kaynak türü microsoft.hybridcontainerservice/provisionedclusterinstances
apiVersion Kaynak API'sinin sürümü 2024-01-01
name Kaynak adı Dize (gerekli). Bunu varsayılandan değiştirmeyin.
properties Bağlı kümenin özellikleri.
extendedLocation Kümenin genişletilmiş konumu. ExtendedLocation

ExtendedLocation

Ad Açıklama Değer
name Genişletilmiş konumun kimliği. string
type Genişletilmiş konumun türü. CustomLocation

Sonraki adımlar

AKS Arc'a genel bakış