Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, SKU seçicileri, kaynak sınırları ve öncelik ağırlıkları dahil olmak üzere Azure Kubernetes Service (AKS) düğüm otomatik sağlama (NAP) için düğüm havuzlarının nasıl yapılandırılması açıklanır. Ayrıca, başlamanıza yardımcı olacak örnekler de sağlar.
AKS Otomatik varsayılan olarak NAP'yi içerir. AKS Standart kümeleri için düğüm havuzlarını yapılandırmadan önce NAP'yi etkinleştirmeniz gerekir.
NAP düğüm havuzları için VM'leri nasıl seçer?
NAP, bekleyen iş yükleri için en iyi VM'lere karar vermek için sanal makine (VM) SKU gereksinimlerini kullanır. Aşağıdakileri yapılandırabilirsiniz:
- SKU aileleri ve belirli örnek türleri.
- Kaynak sınırları ve öncelikleri.
- Spot veya İsteğe Bağlı örnekler.
- Mimari, GPU ve diğer özellikler gereksinimleri.
Kaynak, NAP tarafından NodePool oluşturulan düğümler ve bu düğümlerde çalışan podlar üzerinde kısıtlamalar belirler. NAP’yi, varsayılan düğüm havuzu yapılandırması Auto olarak ayarlanmışken etkinleştirdiğinizde, varsayılan NodePool kaynakları oluşturur. Bu düğüm havuzlarını değiştirebilir veya iş yükü gereksinimlerinize uygun ek düğüm havuzları oluşturabilirsiniz.
NAP düğüm havuzlarını nasıl değerlendirir ve seçer?
NAP için yapılandırırken NodePools aşağıdaki davranışları aklınızda bulundurun:
- NAP işlevinin çalışması için en az bir tane
NodePoolgerekir. - NAP, yapılandırılan
NodePoolher öğesini değerlendirir. - NAP, bir pod tarafından tolere edilmeyen taintlere sahip
NodePools'i atlar. - NAP, sağlanan düğümlere başlangıç taintleri uygular, ancak pod toleransı gerektirmez.
- NAP, her pod yalnızca bir havuzla eşleşsin diye gereksinimleri çakışmayan birbirini dışlayan
NodePoolsile en iyi şekilde çalışır. Birden çokNodePoolseşleşme olduğunda NAP, en yüksek ağırlığa sahip olanı kullanır.
Varsayılan düğüm havuzu yapılandırmasını gözden geçirme
Aşağıdaki örnek, Cilium tarafından desteklenen Azure CNI kullanan bir kümede NAP tarafından oluşturulan NodePool adlı varsayılan yapılandırmayı göstermektedir:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
annotations:
kubernetes.io/description: "General purpose NodePool for generic workloads"
spec:
disruption:
consolidateAfter: 0s
budgets:
- nodes: "30%"
template:
metadata:
labels:
kubernetes.azure.com/mode: "user"
# Required for Karpenter to predict overhead from the Cilium DaemonSet.
kubernetes.azure.com/ebpf-dataplane: cilium
spec:
expireAfter: Never
# 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]
startupTaints:
# https://karpenter.sh/docs/concepts/nodepools/#cilium-startup-taint
- key: node.cilium.io/agent-not-ready
effect: NoExecute
value: "true"
nodeClassRef:
group: karpenter.azure.com
kind: AKSNodeClass
name: default
NAP ayrıca kritik sistem eklentileri için isteğe bağlı Linux AMD64 kapasitesi sağlayan bir system-surge düğüm havuzu oluşturur.
CriticalAddonsOnly=true:NoSchedule taint’ini tolere eden ve havuz gereksinimlerini karşılayan bekleyen bir pod olduğunda, NAP bu havuzdan bir düğüm oluşturabilir. Havuz tarafından oluşturulan düğümler etikete kubernetes.azure.com/mode: system sahiptir.
Varsayılan düğüm havuzlarını denetleme
Azure CLI kullanarak NAP ile etkinleştirilmiş yeni bir AKS kümesi oluşturduğunuzda, AKS'nin --node-provisioning-default-pools varsayılan NAP'yi NodePoolsoluşturup oluşturmadığını denetlemek için bayrağını ekleyin. Mevcut bir kümede NAP’i etkinleştirdiğinizde, bu bayrağı az aks update ile de kullanabilirsiniz.
--node-provisioning-default-pools bayrağı aşağıdaki değerleri kabul eder:
-
Auto(varsayılan): Hemen kullanmak için iki standartNodePoolsoluşturur. -
None: herhangi birNodePoolsoluşturmaz. Kendi tanımınızı yapmanız gerekir.
Uyarı
Auto'dan None'ye değişiklik: Ayarı mevcut bir kümede Auto'den None'e değiştirirseniz, varsayılan NodePools otomatik olarak silinmez. Bunları silmeden önce kritik sistem eklentileri için uygun değiştirme kapasitesi tanımlayın. Artık bunlara ihtiyacınız yoksa, varsayılan NodePools öğelerini manuel olarak silmeniz gerekir.
Yapılandırma seçenekleri düğüm havuzu
Aşağıdaki bölümlerde NAP için,
İyi bilinen etiketler ve SKU seçicileri
Kubernetes, Azure'ın uyguladığı iyi bilinen etiketleri tanımlar. Bu etiketleri API'nin spec.requirementsNodePool bölümünde tanımlayabilirsiniz. NAP, daha gelişmiş zamanlama için Azure özgü etiketleri de destekler.
Aşağıdaki tabloda, düğümleriniz için VM özelliklerini tanımlamak üzere API'nizin spec.requirementsNodePool bölümünde kullanabileceğiniz etiketler listelenir:
| Selector | Description | Example |
|---|---|---|
karpenter.sh/capacity-type |
VM ayırma türü (Spot / İsteğe bağlı) | Nokta |
karpenter.azure.com/sku-family |
VM SKU ailesi | D, F, L vb. |
karpenter.azure.com/sku-series |
VM SKU serisi | Dpls_v6 |
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.azure.com/sku-cpu |
VM'deki CPU sayısı | 16 |
karpenter.azure.com/sku-memory |
VM bellek miktarı (MiB olarak) | 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ığı | [doğru, yanlış] |
karpenter.azure.com/sku-storage-premium-capable |
VM'nin Premium IO depolamayı destekleyip desteklemediği | [doğru, yanlış] |
karpenter.azure.com/sku-storage-ephemeralos-maxsize |
GB cinsinden kısa ömürlü işletim sistemi (OS) diski için boyut sınırı | 92 |
kubernetes.azure.com/sku-cpu |
VM'deki CPU sayısı | 16 |
kubernetes.azure.com/sku-memory |
VM bellek miktarı (MiB olarak) | 131072 |
kubernetes.azure.com/cluster |
AKS kümesi adı | my-cluster |
kubernetes.azure.com/mode |
Düğüm havuzu modu | [sistem, kullanıcı] |
kubernetes.azure.com/priority |
Öncelik | [spot, düzenli] |
kubernetes.azure.com/os-sku |
İşletim sistemi SKU'su | [Ubuntu, AzureLinux] |
kubernetes.azure.com/fips_enabled |
FIPS'nin etkinleştirilip etkinleştirilmediği | doğru |
topology.kubernetes.io/zone |
Kullanılabilirlik alanları | [uksouth-1,uksouth-2,uksouth-3] |
kubernetes.io/os |
İşletim sistemi | Linux işletim sistemi |
kubernetes.io/arch |
CPU mimarisi (AMD64 veya ARM64) | [amd64, arm64] |
Bu tablodaki bellek seçici değerleri, NAP tarafından oluşturulan düğümlerde bildirilen MiB değerleridir. Seçici eklemeden önce, kümeniz tarafından kullanılan değeri onaylamak için düğümlerinizdeki etiketleri inceleyin.
SKU ailesi örnekleri
Seçici, karpenter.azure.com/sku-family belirli VM ailelerini hedeflemenizi sağlar.
| Aile | Description |
|---|---|
| D Serisi | Dengeli CPU-bellek oranına sahip genel amaçlı VM'ler |
| F serisi | Yüksek CPU-bellek oranına sahip hesaplama için optimize edilmiş sanal makineler |
| E serisi | Bellek yoğun uygulamalar için optimize edilmiş sanal makineler |
| L serisi | Yüksek disk aktarım hızına sahip depolama için iyileştirilmiş VM'ler |
| N serisi | yoğun işlem gücü kullanan iş yükleri için GPU özellikli VM'ler |
SKU ailesi kullanılarak örnek yapılandırma:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- D
- F
GPU SKU örneği
NAP ile NVIDIA GPU düğümleri sağlamak için GPU özellikli VM boyutlarını seçen bir NodePool oluşturun. Aşağıdaki örnek NAP'nin N serisi NVIDIA GPU SKU'larını seçmesine olanak tanır:
requirements:
- key: karpenter.azure.com/sku-family
operator: In
values:
- N
- key: karpenter.azure.com/sku-gpu-manufacturer
operator: In
values:
- nvidia
AKS'nin NVIDIA GPU sürücüsünü, cihaz eklentisini, Data Center GPU Manager (DCGM) metrik dışa aktarıcısını ve NAP ile sağlanan GPU düğümlerindeki GPU durum sinyallerini yüklemesini ve yönetmesini istiyorsanız, başvurulan AKSNodeClass içinde yönetilen GPU'yu yapılandırın. Daha fazla bilgi için bkz. AKS tarafından yönetilen GPU düğüm havuzu oluşturma.
SKU adı örnekleri
Seçici, karpenter.azure.com/sku-name tam VM örneği türünü belirtmenize olanak tanır.
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
SKU sürümü örnekleri
Seçici, karpenter.azure.com/sku-version VM SKU'larının belirli nesillerini hedefler.
requirements:
- key: karpenter.azure.com/sku-version
operator: In
values:
- "3" # v3 generation
- "5" # v5 generation
Kullanılabilirlik alanı örneği
Seçici, topology.kubernetes.io/zone düğümleriniz için kullanılabilirlik alanlarını belirtmenize olanak tanır.
requirements:
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
Uyarı
Bir bölgedeki kullanılabilirlik alanlarını destekleyen VM boyutlarını listelemek için komutunu parametrelerle birlikte --location <region> --zone --output table kullanınaz vm list-skus. Seçtiğiniz VM boyutunun gereksinimdeki bölgeleri desteklediğini NodePool onaylayın.
Mimari örneği
Seçici, kubernetes.io/arch düğümleriniz için CPU mimarisini belirtmenize olanak tanır. NAP hem amd64 hem de arm64 düğümlerini destekler.
requirements:
- key: kubernetes.io/arch
operator: In
values:
- amd64
- arm64
İşletim sistemi örneği
Seçici, kubernetes.io/os düğümleriniz için işletim sistemini belirtmenize olanak tanır.
requirements:
- key: kubernetes.io/os
operator: In
values:
- linux
Kapasite türü örneği
Seçici, karpenter.sh/capacity-type Spot veya İsteğe Bağlı örneklerin kullanılıp kullanılmayacağını belirtmenize olanak tanır.
Uyarı
NAP, hem Spot hem de İsteğe Bağlı belirtildiğinde Spot örneklere öncelik tanır.
requirements:
- key: karpenter.sh/capacity-type
operator: In
values:
- spot
- on-demand
Düğüm havuzu limitleri
Varsayılan olarak NAP, kullanılabilir Azure kotası içinde iş yüklerinizi zamanlamayı dener. Dinamik düğüm havuzu için, bu havuz tarafından sağlanan tüm düğümlerde toplam kaynak sınırları belirtebilirsiniz. Aşağıdaki örnekte havuzu cpu: "1000" 1.000 vCPU çekirdeğiyle ve memory: 1000Gi 1.000 gibibayt bellekle sınırlar:
spec:
# Resource limits constrain the total size of the node pool.
# Limits prevent Node Auto Provisioning 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, düğüm havuzu tanımlarınızdaki göreli ağırlığı tanımlayarak bir iş yükünün zamanlanacağı yer için bir tercih ayarlayabilirsiniz. alanı weight 1 ile 100 arasında bir tamsayı kabul eder ve daha yüksek değerler düğüm havuzuna daha yüksek öncelik verir.
weight öğesini atlarsanız, değeri fiilen 0’dır. Örneğin:
spec:
# 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
Statik düğüm havuzları
Sabit düğüm havuzları, pod talebinden bağımsız olarak replicas alanında belirtilen sabit NAP tarafından sağlanan düğüm sayısını korur. Düğüm sayısını değiştirmek için, örneğin kubectl scale ile NodePool kullanarak nodepool static-node-pool --replicas=7 öğesini açıkça ölçeklendirin. İsteğe bağlı limits.nodes değer, düğüm değiştirme sırasında oluşturulan açık ölçeklendirmeyi ve geçici kapasiteyi kısıtlar. Statik düğüm havuzları için altında nodes desteklenen tek alandır limits; CPU veya bellek sınırlarını ayarlayamazsınız.
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: static-node-pool
spec:
replicas: 5
template:
spec:
requirements:
- key: karpenter.azure.com/sku-name
operator: In
values:
- Standard_D4s_v3
- Standard_F8s_v2
- key: topology.kubernetes.io/zone
operator: In
values:
- eastus-1
- eastus-2
- eastus-3
limits:
nodes: 10
Uyarı
Statik düğüm havuzları için yalnızca nodes alanında limits ayarlayabilirsiniz. Kaynak sınırlarını veya weight ayarlayamazsınız ve kesinti konsolidasyonu geçerli değildir. oluşturduktan NodePoolsonra, alanı ekleyerek veya kaldırarak replicas statik ve dinamik modlar arasında geçiş yapamazsınız.
Sonraki Adımlar
AKS'de düğüm otomatik sağlama hakkında daha fazla bilgi için aşağıdaki makalelere bakın: