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'te (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.
NAP'de düğüm havuzlarına genel bakış
NAP, bekleyen iş yükleri için en iyi VM'lere karar vermek için sanal makine (VM) SKU gereksinimlerini kullanır. Yapılandırabilirsiniz:
- SKU aileleri ve belirli örnek türleri.
- Kaynak sınırları ve öncelikleri.
- Spot veya İsteğe Bağlı örnekler.
- Mimari ve yetenek gereksinimleri.
Kaynak, NAP tarafından NodePool oluşturulan düğümler ve bu düğümlerde çalışan podlar üzerinde kısıtlamalar belirler. NAP'yi ilk yüklediğinizde, varsayılan NodePool bir nesne oluşturur. Bu düğüm havuzunu değiştirebilir veya iş yükü gereksinimlerinize uygun ek düğüm havuzları oluşturabilirsiniz.
NAP'te NodePools'nin ana davranışları
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, birbirini dışlayan
NodePoolsile en iyi şekilde çalışır. Birden çokNodePoolseşleşme olduğunda, en yüksek ağırlığa sahip olanı kullanır.
Varsayılan düğüm havuzu yapılandırmasını gözden geçirme
NAP tarafından oluşturulan varsayılan NodePool yapılandırması aşağıdaki gibidir:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
spec:
disruption:
consolidationPolicy: WhenEmptyOrUnderutilized
template:
spec:
nodeClassRef:
name: default
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
Ayrıca sistem havuzu düğümlerini otomatik ölçeklendirmeye yardımcı olan bir system-surge düğüm havuzu oluşturur.
Küme oluşturma sırasında varsayılan düğüm havuzunun yapılandırmasını denetleme
Azure CLI kullanarak NAP ile etkinleştirilmiş yeni bir AKS kümesi oluşturduğunuzda, varsayılan NAP'nin --node-provisioning-default-poolsyapılandırmasını denetlemek için bayrağını ekleyebilirsinizNodePool.
bayrağı varsayılan --node-provisioning-default-pools NAP NodePool yapılandırmasını denetler ve 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. Artık ihtiyacınız yoksa bunları el ile 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'a özgü etiketleri de destekler.
karpenter.azure.com SKU seçicileri
Aşağıdaki tabloda, düğümleriniz için VM özelliklerini tanımlamak üzere API'nizin karpenter.azure.comspec.requirements bölümünde kullanabileceğiniz SKU seçicileri listelenirNodePool:
| Selector | Description | Example |
|---|---|---|
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ı) | Leke |
karpenter.azure.com/sku-cpu |
VM'deki CPU sayısı | 16 |
karpenter.azure.com/sku-memory |
VM bellek miktarı (MiB olarak) | 131072 |
kubernetes.azure.com/sku-cpu |
VM'deki CPU sayısı | 16 |
kubernetes.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 |
Kısa ömürlü işletim sistemi (OS) diskinin Gb cinsinden boyut sınırı | 92 |
kubernetes.io iyi bilinen etiketler
Aşağıdaki tabloda, düğümlerinizin düğüm özelliklerini tanımlamak için API'nizin kubernetes.iospec.requirements bölümünde kullanabileceğiniz iyi bilinen etiketler listelenirNodePool:
| Etiket | Description | Example |
|---|---|---|
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] |
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
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ı
Azure CLI komutunu kullanarak az account list-locations --output table bölgeniz için kullanılabilir bölgeleri bulabilirsiniz.
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. Düğüm havuzu belirtimi içinde sınırlar belirterek düğüm havuzunun kullandığı kaynakların üst sınırını da belirtebilirsiniz. Mesela:
spec:
# Resource limits constrain the total size of the cluster.
# 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 zamanlanması gereken yeri tercih edebilirsiniz. Ö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
Sonraki Adımlar
AKS'de düğüm otomatik sağlama hakkında daha fazla bilgi için aşağıdaki makalelere bakın: