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
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
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
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ın
az 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>"
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 |