Provisi otomatis simpul (pratinjau)
Saat Anda menyebarkan beban kerja ke AKS, Anda perlu membuat keputusan tentang konfigurasi kumpulan simpul mengenai ukuran VM yang diperlukan. Saat beban kerja Anda menjadi lebih kompleks, dan memerlukan CPU, memori, dan kemampuan yang berbeda untuk dijalankan, overhead harus merancang konfigurasi VM Anda untuk banyak permintaan sumber daya menjadi sulit.
Provisi otomatis simpul (NAP) (pratinjau) memutuskan berdasarkan persyaratan sumber daya pod yang tertunda, konfigurasi VM optimal untuk menjalankan beban kerja tersebut dengan cara yang paling efisien dan hemat biaya.
NAP didasarkan pada proyek Open Source Karpenter , dan penyedia AKS juga Open Source. NAP secara otomatis menyebarkan dan mengonfigurasi dan mengelola Karpenter pada kluster AKS Anda.
Penting
Provisi otomatis simpul (NAP) untuk AKS saat ini dalam PRATINJAU. Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.
- Anda memerlukan langganan Azure. Jika Anda tidak memiliki langganan Azure, Anda dapat membuat akun gratis.
- Anda memerlukan Azure CLI yang terinstal.
aks-preview
Instal ekstensi Azure CLI. Versi minimum 0.5.170.- Daftarkan bendera NodeAutoProvisioningPreviewfeature.
aks-preview
Instal ekstensi CLI menggunakanaz extension add
perintah .az extension add --name aks-preview
Perbarui ekstensi untuk memastikan Anda memiliki versi terbaru yang terinstal menggunakan
az extension update
perintah .az extension update --name aks-preview
Daftarkan
NodeAutoProvisioningPreview
bendera fitur menggunakanaz feature register
perintah .az feature register --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
Dibutuhkan beberapa menit agar status menampilkan Terdaftar.
Verifikasi status pendaftaran menggunakan
az feature show
perintah .az feature show --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
Saat status mencerminkan Terdaftar, refresh pendaftaran penyedia sumber daya Microsoft.ContainerService menggunakan
az provider register
perintah .az provider register --namespace Microsoft.ContainerService
- Satu-satunya konfigurasi jaringan yang diizinkan adalah Azure CNI Overlay dengan Powered by Cilium.
- Anda tidak dapat mengaktifkan di kluster tempat kumpulan simpul mengaktifkan autoscaler kluster
- Kumpulan simpul Windows
- Menerapkan konfigurasi kustom ke node kubelet
- Kluster IPv6
- Perwakilan Layanan
Catatan
Anda dapat menggunakan identitas terkelola yang ditetapkan sistem atau ditetapkan pengguna.
- Set enkripsi disk
- CustomCATrustCertificates
- Mode Mulai Berhenti
- Proksi HTTP
- Mutasi OutboundType . Semua OutboundTypes didukung, namun Anda tidak dapat mengubahnya setelah pembuatan.
- Kluster privat (dan DNS privat BYO)
Aktifkan provisi otomatis simpul pada kluster baru menggunakan
az aks create
perintah dan atur--node-provisioning-mode
keAuto
. Anda juga perlu mengatur--network-plugin
keazure
,--network-plugin-mode
keoverlay
, dan--network-dataplane
kecilium
.az aks create \ --name $CLUSTER_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --node-provisioning-mode Auto \ --network-plugin azure \ --network-plugin-mode overlay \ --network-dataplane cilium \ --generate-ssh-keys
Aktifkan provisi otomatis simpul pada kluster yang ada menggunakan
az aks update
perintah dan atur--node-provisioning-mode
keAuto
. Anda juga perlu mengatur--network-plugin
keazure
,--network-plugin-mode
keoverlay
, dan--network-dataplane
kecilium
.az aks update --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --node-provisioning-mode Auto --network-plugin azure --network-plugin-mode overlay --network-dataplane cilium
Provisi otomatis simpul menggunakan daftar SKU VM sebagai titik awal untuk memutuskan mana yang paling cocok untuk beban kerja yang dalam keadaan tertunda. Memiliki kontrol atas SKU apa yang Anda inginkan di kumpulan awal memungkinkan Anda menentukan keluarga SKU tertentu, atau jenis VM dan jumlah maksimum sumber daya yang digunakan penyedia.
Jika Anda memiliki SKU VM tertentu yang merupakan instans cadangan, misalnya, Anda mungkin hanya ingin menggunakan VM tersebut sebagai kumpulan awal.
Anda dapat memiliki beberapa definisi kumpulan simpul dalam kluster, tetapi AKS menyebarkan definisi kumpulan simpul default yang dapat Anda ubah:
apiVersion: karpenter.sh/v1beta1
kind: NodePool
metadata:
name: default
spec:
disruption:
consolidationPolicy: WhenUnderutilized
expireAfter: Never
template:
spec:
nodeClassRef:
name: default
# Requirements that constrain the parameters of provisioned nodes.
# These requirements are combined with pod.spec.affinity.nodeAffinity rules.
# Operators { In, NotIn, Exists, DoesNotExist, Gt, and Lt } are supported.
# https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#operators
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- key: kubernetes.io/os
operator: In
values:
- linux
- key: karpenter.sh/capacity-type
operator: In
values:
- on-demand
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
Pemilih | Deskripsi | Contoh |
---|---|---|
karpenter.azure.com/sku-family | Keluarga SKU VM | D, F, L dll. |
karpenter.azure.com/sku-name | Nama SKU eksplisit | Standard_A1_v2 |
karpenter.azure.com/sku-version | Versi SKU (tanpa "v", dapat menggunakan 1) | 1 , 2 |
karpenter.sh/capacity-type | Jenis alokasi VM (Spot / Sesuai Permintaan) | spot atau sesuai permintaan |
karpenter.azure.com/sku-cpu | Jumlah CPU dalam VM | 16 |
karpenter.azure.com/sku-memory | Memori dalam VM di MiB | 131072 |
karpenter.azure.com/sku-gpu-name | Nama GPU | A100 |
karpenter.azure.com/sku-gpu-manufacturer | Produsen GPU | nvidia |
karpenter.azure.com/sku-gpu-count | Jumlah GPU per VM | 2 |
karpenter.azure.com/sku-networking-accelerated | Apakah VM telah mempercepat jaringan | [benar, salah] |
karpenter.azure.com/sku-storage-premium-capable | Apakah VM mendukung penyimpanan IO Premium | [benar, salah] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize | Batas ukuran untuk disk OS Ephemeral dalam Gb | 92 |
topology.kubernetes.io/zone | Zona Ketersediaan | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os | Sistem Operasi (Linux hanya selama pratinjau) | linux |
kubernetes.io/arch | Arsitektur CPU (AMD64 atau ARM64) | [amd64, arm64] |
Untuk mencantumkan kemampuan SKU VM dan nilai yang vm list-skus
diizinkan, gunakan perintah dari Azure CLI.
az vm list-skus --resource-type virtualMachines --location <location> --query '[].name' --output table
Secara default, NAP mencoba menjadwalkan beban kerja Anda dalam kuota Azure yang telah Anda sediakan. Anda juga dapat menentukan batas atas sumber daya yang digunakan oleh kumpulan simpul, menentukan batas dalam spesifikasi kumpulan simpul.
# Resource limits constrain the total size of the cluster.
# Limits prevent Karpenter from creating new instances once the limit is exceeded.
limits:
cpu: "1000"
memory: 1000Gi
Ketika Anda memiliki beberapa kumpulan simpul yang ditentukan, Dimungkinkan untuk mengatur preferensi di mana beban kerja harus dijadwalkan. Tentukan bobot relatif pada definisi kumpulan Simpul Anda.
# Priority given to the node pool when the scheduler considers which to select. Higher weights indicate higher priority when comparing node pools.
# Specifying no weight is equivalent to specifying a weight of 0.
weight: 10
AKS dengan NAP mengelola peningkatan versi Kubernetes dan pembaruan disk OS VM untuk Anda secara default.
Peningkatan Kubernetes untuk kumpulan simpul NAP mengikuti versi Kubernetes Sarana Kontrol. Jika Anda melakukan peningkatan kluster, simpul NAP Anda diperbarui secara otomatis untuk mengikuti penerapan versi yang sama.
Secara default, komputer virtual kumpulan simpul NAP secara otomatis diperbarui saat gambar baru tersedia. Jika Anda ingin menyematkan kumpulan simpul pada versi gambar simpul tertentu, Anda dapat mengatur imageVersion pada kelas node:
kubectl edit aksnodeclass default
Dalam definisi kelas simpul, atur imageVersion ke salah satu rilis yang diterbitkan yang tercantum pada catatan Rilis AKS. Anda juga dapat melihat ketersediaan gambar di wilayah dengan merujuk ke pelacak rilis AKS
ImageVersion adalah bagian tanggal pada Gambar Simpul karena hanya Ubuntu 22.04 yang didukung, misalnya, "AKSUbuntu-2204-202311.07.0" adalah "202311.07.0"
apiVersion: karpenter.azure.com/v1alpha2
kind: AKSNodeClass
metadata:
annotations:
kubernetes.io/description: General purpose AKSNodeClass for running Ubuntu2204
nodes
meta.helm.sh/release-name: aks-managed-karpenter-overlay
meta.helm.sh/release-namespace: kube-system
creationTimestamp: "2023-11-16T23:59:06Z"
generation: 1
labels:
app.kubernetes.io/managed-by: Helm
helm.toolkit.fluxcd.io/name: karpenter-overlay-main-adapter-helmrelease
helm.toolkit.fluxcd.io/namespace: 6556abcb92c4ce0001202e78
name: default
resourceVersion: "1792"
uid: 929a5b07-558f-4649-b78b-eb25e9b97076
spec:
imageFamily: Ubuntu2204
imageVersion: 202311.07.0
osDiskSizeGB: 128
Menghapus spesifikasi imageVersion akan mengembalikan kumpulan simpul untuk diperbarui ke versi gambar simpul terbaru.
Ketika beban kerja pada simpul Anda diturunkan skalanya, NAP menggunakan aturan gangguan pada spesifikasi kumpulan Simpul untuk memutuskan kapan dan bagaimana menghapus simpul tersebut dan berpotensi menjadwalkan ulang beban kerja Anda agar lebih efisien.
Anda dapat menghapus simpul secara manual menggunakan kubectl delete node
, tetapi NAP juga dapat mengontrol kapan simpul harus mengoptimalkan simpul Anda.
disruption:
# Describes which types of Nodes NAP should consider for consolidation
consolidationPolicy: WhenUnderutilized | WhenEmpty
# 'WhenUnderutilized', NAP will consider all nodes for consolidation and attempt to remove or replace Nodes when it discovers that the Node is underutilized and could be changed to reduce cost
# `WhenEmpty`, NAP will only consider nodes for consolidation that contain no workload pods
# The amount of time NAP should wait after discovering a consolidation decision
# This value can currently only be set when the consolidationPolicy is 'WhenEmpty'
# You can choose to disable consolidation entirely by setting the string value 'Never'
consolidateAfter: 30s
Provisi otomatis node menghasilkan peristiwa kluster yang dapat digunakan untuk memantau keputusan penyebaran dan penjadwalan yang dibuat. Anda dapat melihat peristiwa melalui aliran peristiwa Kubernetes.
kubectl get events -A --field-selector source=karpenter -w
Umpan balik Azure Kubernetes Service
Azure Kubernetes Service adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: