Düğüm otomatik sağlama (önizleme)
AKS'ye iş yükleri dağıttığınızda, düğüm havuzu yapılandırması hakkında gereken VM boyutuyla ilgili bir karar vermeniz gerekir. İş yükleriniz daha karmaşık hale geldikçe ve farklı CPU, bellek ve özelliklerin çalıştırılmasını gerektirdiğinden, VM yapılandırmanızı çok sayıda kaynak isteği için tasarlamanız gereken ek yük zorlaşır.
Düğüm otomatik sağlama (NAP) (önizleme), bekleyen pod kaynağı gereksinimlerine göre bu iş yüklerini en verimli ve uygun maliyetli şekilde çalıştırmak için en uygun VM yapılandırmasına karar verir.
NAP, Açık Kaynak Karpenter projesini temel alır ve AKS sağlayıcısı da Açık Kaynak'tır. NAP, AKS kümelerinizde Karpenter'ı otomatik olarak dağıtır ve yapılandırıp yönetir.
Önemli
AKS için düğüm otomatik sağlama (NAP) şu anda ÖNİzLEME aşamasındadır. Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Başlamadan önce
- Azure aboneliğine ihtiyacınız var. Azure aboneliğiniz yoksa ücretsiz hesap oluşturabilirsiniz.
- Azure CLI'nın yüklü olması gerekir.
- Azure CLI uzantısını
aks-preview
yükleyin. En düşük sürüm 0.5.170. - NodeAutoProvisioningPreviewfeature bayrağını kaydedin.
CLI uzantısını aks-preview
yükleme
aks-preview
komutunu kullanarak CLI uzantısınıaz extension add
yükleyin.az extension add --name aks-preview
komutunu kullanarak en son sürümü yüklediğinizden emin olmak için uzantıyı güncelleştirin
az extension update
.az extension update --name aks-preview
Özellik bayrağını NodeAutoProvisioningPreview
kaydetme
NodeAutoProvisioningPreview
komutunu kullanarak özellik bayrağınıaz feature register
kaydedin.az feature register --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.
komutunu kullanarak
az feature show
kayıt durumunu doğrulayın.az feature show --namespace "Microsoft.ContainerService" --name "NodeAutoProvisioningPreview"
Durum Kayıtlı olarak yansıtıldığında, komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyin
az provider register
.az provider register --namespace Microsoft.ContainerService
Sınırlamalar
- İzin verilen tek ağ yapılandırması, Cilium tarafından desteklenen Azure CNI Katmandır.
- Düğüm havuzlarında küme otomatik ölçeklendiricisinin etkinleştirildiği bir kümede etkinleştiremezsiniz
Desteklenmeyen özellikler
- Windows düğüm havuzları
- Düğüm kubelet'ine özel yapılandırma uygulama
- IPv6 kümeleri
- Hizmet Sorumluları
Not
Sistem tarafından atanan veya kullanıcı tarafından atanan yönetilen kimliği kullanabilirsiniz.
- Disk şifreleme kümeleri
- CustomCATrustCertificates
- Durdurma modunu başlatma
- HTTP proxy'si
- OutboundType mutasyonu. Tüm OutboundType'lar desteklenir, ancak oluşturma işleminden sonra bunları değiştiremezsiniz.
Düğüm otomatik sağlamayı etkinleştirme
Yeni bir kümede düğüm otomatik sağlamayı etkinleştirme
komutunu kullanarak yeni bir kümede düğüm otomatik sağlamayı
az aks create
etkinleştirin ve olarakAuto
ayarlayın--node-provisioning-mode
. öğesini olarak da ayarlamanız--network-plugin
cilium
azure
--network-plugin-mode
overlay
--network-dataplane
gerekir.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
Mevcut bir kümede düğüm otomatik sağlamayı etkinleştirme
komutunu kullanarak mevcut bir kümede düğüm otomatik sağlamayı
az aks update
etkinleştirin ve olarakAuto
ayarlayın--node-provisioning-mode
. öğesini olarak da ayarlamanız--network-plugin
cilium
azure
--network-plugin-mode
overlay
--network-dataplane
gerekir.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
Düğüm havuzları
Düğüm otomatik sağlama, bekleme durumundaki iş yükleri için en uygun olan iş yüklerine karar vermek için başlangıç noktası olarak VM SKU'larının listesini kullanır. İlk havuzda istediğiniz SKU üzerinde denetim sahibi olmak, belirli SKU ailelerini veya VM türlerini ve bir sağlamanın kullandığı maksimum kaynak miktarını belirtmenize olanak tanır.
Örneğin ayrılmış örnek olan belirli VM SKU'larınız varsa, bu VM'leri yalnızca başlangıç havuzu olarak kullanmak isteyebilirsiniz.
Bir kümede birden çok düğüm havuzu tanımınız olabilir, ancak AKS değiştirebileceğiniz bir varsayılan düğüm havuzu tanımı dağıtır:
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
Desteklenen düğüm sağlama gereksinimleri
İyi bilinen etiketlere sahip SKU seçicileri
Seçici | Açıklama | Örnek |
---|---|---|
karpenter.azure.com/sku-family | VM SKU Ailesi | D, F, L vb. |
karpenter.azure.com/sku-name | Açık SKU adı | Standard_A1_v2 |
karpenter.azure.com/sku-version | SKU sürümü ("v" olmadan 1 kullanabilir) | 1 , 2 |
karpenter.sh/capacity-type | VM ayırma türü (Spot / İsteğe Bağlı) | spot veya isteğe bağlı |
karpenter.azure.com/sku-cpu | VM'deki CPU sayısı | 16 |
karpenter.azure.com/sku-memory | MiB'de VM'de bellek | 131072 |
karpenter.azure.com/sku-gpu-name | GPU adı | A100 |
karpenter.azure.com/sku-gpu-manufacturer | GPU üreticisi | nvidia |
karpenter.azure.com/sku-gpu-count | VM başına GPU sayısı | 2 |
karpenter.azure.com/sku-networking-accelerated | VM'nin ağı hızlandırıp hızlandırmadığı | [true, false] |
karpenter.azure.com/sku-storage-premium-capable | VM'nin Premium GÇ depolamayı destekleyip desteklemediği | [true, false] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize | Kısa ömürlü işletim sistemi diskinin Gb cinsinden boyut sınırı | 92 |
topology.kubernetes.io/zone | Kullanılabilirlik Alanları | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os | İşletim Sistemi (Yalnızca önizleme sırasında Linux) | linux |
kubernetes.io/arch | CPU mimarisi (AMD64 veya ARM64) | [amd64, arm64] |
VM SKU özelliklerini ve izin verilen değerleri listelemek için Azure CLI'dan komutunu kullanın vm list-skus
.
az vm list-skus --resource-type virtualMachines --location <location> --query '[].name' --output table
Düğüm havuzu sınırları
Varsayılan olarak NAP, kullanılabilir Azure kotası içinde iş yüklerinizi zamanlamayı dener. Düğüm havuzu belirtimi içindeki sınırları belirterek düğüm havuzu tarafından kullanılan kaynakların üst sınırını da belirtebilirsiniz.
# 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
Düğüm havuzu ağırlıkları
Birden çok düğüm havuzu tanımladığınızda, bir iş yükünün zamanlanması gereken yeri tercih edebilirsiniz. Node havuzu tanımlarınızda göreli ağırlığı tanımlayın.
# 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
Kubernetes ve düğüm görüntüsü güncelleştirmeleri
NAP ile AKS, Kubernetes sürüm yükseltmelerini ve VM işletim sistemi disk güncelleştirmelerini sizin için varsayılan olarak yönetir.
Kubernetes yükseltmeleri
NAP düğüm havuzları için Kubernetes yükseltmeleri, Denetim Düzlemi Kubernetes sürümünü izler. Küme yükseltmesi gerçekleştirirseniz NAP düğümleriniz otomatik olarak aynı sürüm oluşturmayı izleyecek şekilde güncelleştirilir.
Düğüm görüntüsü güncelleştirmeleri
Varsayılan olarak, yeni bir görüntü kullanılabilir olduğunda NAP düğümü havuzu sanal makineleri otomatik olarak güncelleştirilir. Düğüm havuzunu belirli bir düğüm görüntüsü sürümüne sabitlemek istiyorsanız, node sınıfında imageVersion değerini ayarlayabilirsiniz:
kubectl edit aksnodeclass default
Düğüm sınıfı tanımında imageVersion değerini AKS Sürüm notlarında listelenen yayımlanmış sürümlerden birine ayarlayın. AKS yayın izleyicisine başvurarak bölgelerdeki görüntülerin kullanılabilirliğini de görebilirsiniz
Yalnızca Ubuntu 22.04 desteklendiğinden imageVersion Düğüm Görüntüsündeki tarih bölümüdür; örneğin, "AKSUbuntu-2204-202311.07.0" "202311.07.0" olabilir
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
imageVersion belirtiminin kaldırılması düğüm havuzunu en son düğüm görüntüsü sürümüne güncelleştirilecek şekilde geri döndürecektir.
Düğüm kesintisi
Düğümlerinizdeki iş yükleri ölçeği azaltıldığında NAP, Düğüm havuzu belirtiminde kesinti kurallarını kullanarak bu düğümlerin ne zaman ve nasıl kaldırılacağına karar verir ve iş yüklerinizi daha verimli olacak şekilde yeniden zamanlayabilir.
kullanarak kubectl delete node
bir düğümü el ile kaldırabilirsiniz, ancak NAP düğümlerinizi ne zaman iyileştirmesi gerektiğini de denetleyebilir.
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
Seçim olaylarını izleme
Düğüm otomatik sağlama, alınan dağıtım ve zamanlama kararlarını izlemek için kullanılabilecek küme olayları oluşturur. Kubernetes olay akışı aracılığıyla olayları görüntüleyebilirsiniz.
kubectl get events -A --field-selector source=karpenter -w
Azure Kubernetes Service