Mulai cepat: menyebarkan kluster Kubernetes menggunakan templat Azure Resource Manager
Berlaku untuk: Azure Stack HCI, versi 23H2
Mulai cepat ini menunjukkan cara menyebarkan kluster Kubernetes di AKS Arc menggunakan templat Azure Resource Manager. Azure Arc memperluas kemampuan manajemen Azure ke kluster Kubernetes di mana saja, memberikan pendekatan terpadu untuk mengelola lingkungan yang berbeda.
Sebelum Anda mulai
Artikel ini mengasumsikan pemahaman dasar tentang konsep Kube.
Untuk menyebarkan templat Resource Manager, Anda memerlukan akses tulis pada sumber daya yang Anda sebarkan, dan akses ke semua operasi pada jenis sumber daya Microsoft.Resources/deployments. Misalnya, untuk menyebarkan komputer virtual, Anda memerlukan izin Microsoft.Compute/virtualMachines/write dan Microsoft.Resources/deployments/* . Untuk daftar peran dan izin, lihat Peran bawaan Azure.
Prasyarat
- Akun Azure dengan langganan aktif.
- Kluster Azure Stack HCI 23H2.
- Versi Azure CLI terbaru.
Langkah 1: siapkan akun Azure Anda
Masuk ke Azure: buka terminal atau perintah Anda dan masuk ke akun Azure Anda menggunakan Azure CLI:
az login
Atur langganan Anda: ganti
<your-subscription-id>
dengan ID langganan Anda:az account set --subscription "<your-subscription-id>"
Langkah 2: buat pasangan kunci SSH menggunakan Azure CLI
az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
atau, buat pasangan kunci SSH menggunakan ssh-keygen:
ssh-keygen -t rsa -b 4096
Untuk menyebarkan templat, Anda harus menyediakan kunci publik dari pasangan SSH. Untuk mengambil kunci publik, gunakan az sshkey show
perintah :
az sshkey show --name "mySSHKey" --resource-group "myResourceGroup" --query "publicKey"
Secara default, file kunci SSH dibuat di direktori ~/.ssh . Jalankan az sshkey create
perintah atau ssh-keygen
untuk menimpa pasangan kunci SSH yang ada dengan nama yang sama.
Untuk mengetahui informasi selengkapnya tentang membuat kunci SSH, lihat Membuat dan mengelola kunci SSH untuk autentikasi di Azure.
Langkah 3: Tinjau templat
Templat yang digunakan dalam mulai cepat ini berasal dari repositori Templat Mulai Cepat Azure:
{
"$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"
}
}
]
}
Langkah 4: Menyebarkan templat
Untuk menyebarkan templat, jalankan perintah berikut untuk menyebarkan kluster 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..."
Perlu waktu beberapa menit untuk membuat kluster tersebut. Tunggu hingga kluster berhasil disebarkan sebelum Anda melanjutkan ke langkah berikutnya.
Langkah 5: Verifikasi penyebaran
Setelah penyebaran selesai, gunakan perintah berikut untuk memverifikasi bahwa kluster Kubernetes Anda aktif dan berjalan:
az aksarc show --resource-group "<resource-group-name>" --name "<cluster-name>" --output table
Langkah 6: Sambungkan ke kluster
Untuk menyambungkan ke kluster, jalankan
az connectedk8s proxy
perintah . Perintah mengunduh dan menjalankan biner proksi pada komputer klien, dan mengambil file kubeconfig yang terkait dengan kluster:az connectedk8s proxy --name <cluster name> -g <resource group>
Atau, gunakan klien baris perintah Kube, kubectl. Jika Anda menggunakan Azure Cloud Shell, kubectl sudah diinstal. Untuk menginstal dan menjalankan kubectl secara lokal, jalankan
az aksarc install-cli
perintah .Konfigurasikan kubectl untuk menyambungkan ke kluster Kubernetes menggunakan
az aksarc get-credentials
perintah . Perintah ini mengunduh informasi masuk dan mengonfigurasi CLI Kube untuk menggunakannya:az aksarc get-credentials --resource-group "<resource-group-name>" --name "<cluster-name>"
Verifikasi koneksi ke kluster Anda menggunakan
kubectl get
perintah . Perintah ini mengembalikan daftar node kluster:kubectl get nodes -A --kubeconfig .\<path to kubecofig>
Contoh output berikut menunjukkan tiga simpul yang dibuat di langkah-langkah sebelumnya. Pastikan status simpul Siap:
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
Sumber daya templat
connectedClusters
Nama | Deskripsi | Nilai |
---|---|---|
type |
Jenis sumber daya. | Microsoft.Kubernetes/ConnectedClusters |
apiVersion |
Versi API sumber daya. | 2024-01-01 |
name |
Nama sumber daya. | String (diperlukan) Batas karakter: 1-63 Karakter yang valid: Alfanumerik, garis bawah, dan tanda hubung. Mulai dan akhiri dengan alfanumerik. |
location |
Lokasi geografis tempat sumber daya berada. | String (diperlukan). |
tags |
Tag sumber daya. | Kamus nama dan nilai tag. Lihat Tag dalam templat. |
extendedLocation |
Lokasi komputer virtual yang diperluas. | ExtendedLocation |
identity |
Identitas kluster yang terhubung, jika dikonfigurasi. | |
properties |
Properti kluster yang terhubung. |
ProvisionedClusterInstances
Nama | Deskripsi | Nilai |
---|---|---|
type |
Jenis sumber daya | microsoft.hybridcontainerservice/provisionedclusterinstances |
apiVersion |
Versi API sumber daya | 2024-01-01 |
name |
Nama sumber daya | String (diperlukan). Jangan ubah ini dari default. |
properties |
Properti kluster yang terhubung. | |
extendedLocation |
Lokasi kluster yang diperluas. | ExtendedLocation |
ExtendedLocation
Nama | Deskripsi | Nilai |
---|---|---|
name |
ID lokasi yang diperluas. | string |
type |
Jenis lokasi yang diperluas. | CustomLocation |
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk