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, Karpenter kullanarak Azure Kubernetes Service'teki (AKS) düğüm otomatik sağlama (NAP) için Azure'a özgü ayarları tanımlamak üzere AKSNodeClass kaynakların nasıl yapılandırılacağını açıklar.
AKSNodeClass Sanal makine (VM) görüntüsü, işletim sistemi (OS) disk boyutu, düğüm başına maksimum pod sayısı ve kubelet yapılandırmaları gibi Karpenter'ın sağladığı düğümlerin çeşitli yönlerini özelleştirmenize olanak tanır.
Önemli
30 Kasım 2025 itibarıyla Azure Kubernetes Service (AKS) artık Azure Linux 2.0 için güvenlik güncelleştirmelerini desteklememektedir veya sağlamamaktadır. Azure Linux 2.0 düğüm görüntüsü 202512.06.0 sürümünde dondurulur. 31 Mart 2026'dan itibaren düğüm görüntüleri kaldırılacak ve düğüm havuzlarınızı ölçeklendiremeyeceksiniz. Düğüm havuzlarınızı desteklenen bir Kubernetes sürümüne yükselterek veya osSku AzureLinux3'e geçerek desteklenen bir Azure Linux sürümüne geçin. Daha fazla bilgi için bkz. [Kullanımdan kaldırma] AKS üzerinde Azure Linux 2.0 düğüm havuzları.
AKSNodeClass kaynaklarına genel bakış
AKSNodeClass kaynakları NAP için Azure'a özgü ayarları yapılandırmanızı sağlar. Her NodePool kaynak bir AKSNodeClass referans spec.template.spec.nodeClassRef kullanmalıdır. Ortak Azure yapılandırmalarını farklı düğüm havuzlarında paylaşmanıza olanak sağlayan, aynı NodePoolsöğesine işaret eden birden çok AKSNodeClass seçeneğiniz olabilir.
Görüntü ailesi yapılandırması
imageFamily alanı, AKSNodeClass aracılığıyla sağlanan nodlar için varsayılan VM imajını ve başlangıç mantığını belirler. Bir görüntü ailesi belirtmezseniz, varsayılan değer olur Ubuntu2204. GPU'lar uyumlu VM boyutlarında her iki görüntü ailesinde de desteklenir.
Desteklenen görüntü aileleri
-
Ubuntu: Ubuntu 22.04 Uzun Vadeli Destek (LTS), AKS düğümleri için varsayılan Linux dağıtımıdır. -
AzureLinux: Azure Linux, Aks iş yükleri için Microsoft'un alternatif Linux dağıtımıdır. Daha fazla bilgi için Bkz. Azure Linux belgeleri
Örnek görüntü ailesi yapılandırması
AKSNodeClass'ü AzureLinux görüntü ailesini kullanacak şekilde yapılandıran aşağıdaki örneği inceleyin:
spec:
imageFamily: AzureLinux
FIPS uyumlu düğüm görüntü yapılandırması
Federal Information Process Standard (FIPS) uyumlu düğüm görüntülerini de etkinleştirebilirsiniz. AKS'de FIPS hakkında daha fazla bilgi için FIPS belgelerimizi ziyaret edin
Alan fipsMode varsayılan olarak Devre Dışı olarak ayarlanır ve aşağıdaki seçeneklere ayarlanabilir:
- FIPS - FIPS uyumlu düğüm görüntülerini seçin
- Devre dışı - FIPS uyumlu düğüm görüntülerini kullanmayın
Aşağıdaki örnek, 'AKSNodeClass' öğesini fipsMode FIPS uyumlu düğüm görüntülerini seçecek şekilde ayarlayarak FIPS yapılandırıyor.
spec:
fipsMode: FIPS
Sanal ağ (VNet) alt ağ yapılandırması
alanı, vnetSubnetID düğüm ağ arabirimlerini sağlamak için hangi Azure VNet alt ağının kullanılacağını belirtir. Bu alan isteğe bağlıdır. Alt ağ belirtmezseniz NAP, Karpenter yüklemesi sırasında yapılandırılan varsayılan alt ağı kullanır. Daha fazla bilgi için bkz . NAP için alt ağ yapılandırmaları.
Örnek alt ağ yapılandırması
Alt ağ kimliği, aşağıdaki örnekte gösterildiği gibi tam Azure Resource Manager (ARM) biçiminde olmalıdır:
spec:
vnetSubnetID: "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Network/virtualNetworks/{vnet-name}/subnets/{subnet-name}"
İşletim sistemi disk boyutu yapılandırması
alanı işletim osDiskSizeGB sistemi diskinin boyutunu gigabayt cinsinden belirtir. Varsayılan değer 128 GB, en düşük değer ise 30 GB'tır.
aşağıdaki iş yükleri için daha büyük işletim sistemi disk boyutlarını göz önünde bulundurun:
- Önemli verileri yerel olarak depolayın.
- Kapsayıcı görüntüleri için fazladan alan gerekmektedir.
- Yüksek düzeyde disk G/Ç gereksinimlerine sahiptir.
Örnek işletim sistemi disk boyutu yapılandırması
spec:
osDiskSizeGB: 256 # 256 GB OS disk
Kısa ömürlü işletim sistemi disk yapılandırması
NAP, mevcut ve istenen disk boyutuna uygun olduğunda geçici işletim sistemi disklerini otomatik olarak kullanır. Kısa ömürlü işletim sistemi diskleri, yönetilen disklere kıyasla daha iyi performans ve daha düşük maliyet sağlar.
Kısa ömürlü disk seçim ölçütleri
Sistem aşağıdaki senaryolarda kısa ömürlü diskleri otomatik olarak seçer:
- VM örnek türü Kısa ömürlü işletim sistemi disklerini destekler.
- Kısa ömürlü disk kapasitesi, istenenden
osDiskSizeGBbüyük veya buna eşittir. - VM yeterli kısa süreli depolama kapasitesine sahiptir.
Bu koşullar karşılanmazsa sistem yönetilen diskleri kullanmaya geri döner.
Kısa ömürlü disk türleri ve öncelik belirleme
Azure VM'lerinin farklı türlerde kısa ömürlü depolaması olabilir. Sistem aşağıdaki öncelik sırasını kullanır:
- NVMe diskleri (en yüksek performans)
- Önbellek diskleri (dengeli performans)
- Kaynak diskleri (temel performans)
Kısa ömürlü disk yapılandırması örneği
Aşağıdaki örnekte gösterildiği gibi düğümlerin yeterli kısa ömürlü disk kapasitesine sahip olduğundan emin olmak için düğüm havuzu gereksinimlerini kullanabilirsiniz:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: ephemeral-disk-pool
spec:
template:
spec:
requirements:
- key: karpenter.azure.com/sku-storage-ephemeralos-maxsize
operator: Gt
values: ["128"] # Require ephemeral disk larger than 128 GB
nodeClassRef:
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
name: my-node-class
---
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: my-node-class
spec:
osDiskSizeGB: 128 # This will use ephemeral disk if available and large enough
Bu yapılandırma yalnızca 128 GB'tan büyük kısa ömürlü disklere sahip VM örneği türlerinin seçilmesini sağlar ve belirtilen işletim sistemi disk boyutu için kısa ömürlü disk kullanımını garanti eder.
En fazla pod yapılandırması
alanı, maxPods bir düğümde zamanlanacak en fazla pod sayısını belirtir. Bu ayar hem küme yoğunluğu hem de ağ yapılandırmasını etkiler.
için maxPods en düşük değer 10, maksimum değer ise 250'dir.
için varsayılan davranış maxPods
için maxPods varsayılan davranış, ağ eklentisi yapılandırmasına bağlıdır. Aşağıdaki tabloda varsayılanlar özetlemektedir:
| Ağ eklentisi yapılandırması | Varsayılan düğüm başına maxPods |
|---|---|
| Standart ağ ile Azure CNI (v1 veya NodeSubnet) | 30 |
| Yer paylaşımlı ağ ile Azure CNI | 250 |
| Hiçbiri (ağ eklentisi yok) | 250 |
| Diğer yapılandırmalar | 110 (standart Kubernetes varsayılan) |
Örnek maksimum pod yapılandırması
spec:
maxPods: 50 # Allow up to 50 pods per node
LocalDNS yapılandırması
LocalDNS, DNS sorgularını iş yüklerine daha yakın bir şekilde çözümleyerek sorgu gecikme süresini azaltan ve geçici DNS kesintileri sırasında dayanıklılığı geliştiren bir düğüm düzeyinde DNS ara sunucusu dağıtır. Daha fazla bilgi için LocalDNS belgelerine bakın. Varsayılan olarak, LocalDNS Devre Dışı olarak ayarlanır ve aşağıdaki seçeneklere göre yapılandırılabilir:
-
Disabled(varsayılan) - LocalDNS özelliğini devre dışı bırakır. DNS sorguları düğümde yerel olarak çözümlenmez. -
Preferred- AKS, düğüm havuzunun Kubernetes sürümünü temel alarak LocalDNS etkinleştirmesini yönetir. Yapılandırma her zaman doğrulanır ve eklenir, ancak doğru Kubernetes sürümü kullanılmadığı sürece LocalDNS etkinleştirilmez. -
Required- Tüm önkoşullar karşılanırsa düğüm havuzunda LocalDNS uygulanır. Gereksinimler karşılanmazsa dağıtım başarısız olur.
Örnek LocalDNS yapılandırması
ve vnetDNSOverridesgibi kubeDNSOverrides LocalDNS yapılandırmalarını özelleştirebilirsiniz. Desteklenen eklentiler hakkında daha fazla bilgi için bkz. LocalDNS'yi Özelleştirme.
spec:
LocalDNS:
mode: Required
vnetDNSOverrides:
- zone: "."
cacheDuration: "30s"
forwardDestination: VnetDNS
forwardPolicy: Random
maxConcurrent: 80
protocol: ForceTCP
queryLogging: Log
serveStale: Immediate
serveStaleDuration: "100s"
- zone: "cluster.local"
cacheDuration: "40s"
forwardDestination: VnetDNS
forwardPolicy: Sequential
maxConcurrent: 70
protocol: PreferUDP
queryLogging: Error
serveStale: Disable
serveStaleDuration: "30s"
kubeDNSOverrides:
- zone: "."
cacheDuration: "30s"
forwardDestination: ClusterCoreDNS
forwardPolicy: RoundRobin
maxConcurrent: 100
protocol: PreferUDP
queryLogging: Log
serveStale: Immediate
serveStaleDuration: "60s"
- zone: "cluster.local"
cacheDuration: "10s"
forwardDestination: ClusterCoreDNS
forwardPolicy: Sequential
maxConcurrent: 50
protocol: PreferUDP
queryLogging: Error
serveStale: Disable
serveStaleDuration: "30s"
Kubelet yapılandırması
kubelet bölümü, düğüm davranışını etkileyen çeşitli kubelet parametrelerini yapılandırmanıza olanak tanır. Bu parametreler, tipik kubelet argümanlarıdır, bu nedenle Azure sağlayıcısı onları düğümdeki kubelet'e doğrudan iletir.
Önemli
Kubelet ayarlarını dikkatle yapılandırın ve önce üretim dışı ortamlardaki değişiklikleri test edin.
CPU yönetimi
Aşağıdaki ayarlar kubelet için CPU yönetimi davranışını denetler:
spec:
kubelet:
cpuManagerPolicy: "static" # or "none"
cpuCFSQuota: true
cpuCFSQuotaPeriod: "100ms"
-
cpuManagerPolicy: Kubelet'in CPU kaynaklarını nasıl ayıranı denetler. Gecikme süresine duyarlı iş yüklerinde CPU sabitleme için"static"olarak ayarla. -
cpuCFSQuota: CPU sınırlarını belirten kapsayıcılar (container'lar) için CPU Tam Adil Zamanlayıcı (CFS) kota zorlamasını etkinleştirir. -
cpuCFSQuotaPeriod: CPU CFS kota süresini ayarlar.
Görüntü çöp toplama
Aşağıdaki ayarlar kubelet için görüntü çöp toplama davranışını denetler:
spec:
kubelet:
imageGCHighThresholdPercent: 85
imageGCLowThresholdPercent: 80
Bu ayarlar kubelet'in kapsayıcı görüntülerinin atık toplama işlemini ne zaman gerçekleştireceklerini denetler:
-
imageGCHighThresholdPercent: Görüntü çöp toplamayı tetikleyen disk kullanım yüzdesi. -
imageGCLowThresholdPercent: Çöp toplamadan sonra hedef disk kullanım yüzdesi.
Topoloji yönetimi
Aşağıdaki ayar kubelet için topoloji yöneticisi ilkesini denetler:
spec:
kubelet:
topologyManagerPolicy: "best-effort" # none, restricted, best-effort, single-numa-node
Topoloji yöneticisi, CPU ve cihaz (GPU gibi) kaynakları arasında gecikmeye duyarlı iş yükleri için kaynak ayırmayı koordine etme konusunda yardımcı olur.
Sistem yapılandırması
Aşağıdaki ayarlar kubelet için ek sistem parametreleri yapılandırmanıza olanak sağlar:
spec:
kubelet:
allowedUnsafeSysctls:
- "kernel.msg*"
- "net.ipv4.route.min_pmtu"
containerLogMaxSize: "50Mi"
containerLogMaxFiles: 5
podPidsLimit: 4096
-
allowedUnsafeSysctls: Podların kullanabileceği izin verilen güvenli olmayan sysctls listesi. -
containerLogMaxSize: Kapsayıcı günlük dosyalarının döndürülmeden önceki maksimum boyutu. -
containerLogMaxFiles: Saklanacak kapsayıcı günlük dosyalarının maksimum sayısı. -
podPidsLimit: Herhangi bir podda izin verilen işlem sayısı üst sınırı.
Azure kaynak etiketleri yapılandırması
Belirli AKSNodeClass bir kaynak kullanılarak oluşturulan tüm VM örnekleri için geçerli olan Azure kaynak etiketlerini belirtebilirsiniz. Etiketler maliyet izleme, kaynak düzenleme ve uyumluluk gereksinimleri için kullanışlıdır.
Etiket sınırlamaları
- Azure kaynak etiketlerinin kaynak başına 50 etiket sınırı vardır.
- Etiket adları büyük/küçük harfe duyarlı değildir ancak etiket değerleri büyük/küçük harfe duyarlıdır.
- Azure, kullanılamayabilecek bazı etiket adlarını ayırır. Daha fazla bilgi için bkz. Etiket kılavuzu ve sınırları.
Örnek etiketler yapılandırması
spec:
tags:
Environment: "production"
Team: "platform"
Application: "web-service"
CostCenter: "engineering"
Kapsamlı AKSNodeClass yapılandırma örneği
Aşağıdaki örnekte, bu makalede açıklanan tüm ayarları içeren kapsamlı AKSNodeClass bir yapılandırma gösterilmektedir:
apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
name: default
spec:
template:
spec:
nodeClassRef:
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
name: comprehensive-example
---
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: comprehensive-example
spec:
# Image family configuration
# Default: Ubuntu
# Valid values: Ubuntu, AzureLinux
imageFamily: Ubuntu
# FIPS compliant mode - allows support for FIPS-compliant node images
# Default: Disabled
# Valid values: FIPS, Disabled
fipsMode: Disabled
# LocalDNS mode - allows use of LocalDNS feature
# Default: Disabled
# Valid values: Preferred, Required, Disabled
LocalDNS:
mode: Disabled
# additional details on vnetDNSOverrides and kubeDNSOverrides can be added here
# Virtual network subnet configuration (optional)
# If not specified, uses the default --vnet-subnet-id from Karpenter installation
vnetSubnetID: "/subscriptions/12345678-1234-1234-1234-123456789012/resourceGroups/my-rg/providers/Microsoft.Network/virtualNetworks/my-vnet/subnets/my-subnet"
# OS disk size configuration
# Default: 128 GB
# Minimum: 30 GB
osDiskSizeGB: 128
# Maximum pods per node configuration
# Default behavior depends on network plugin:
# - Azure CNI with standard networking: 30 pods
# - Azure CNI with overlay networking: 250 pods
# - Other configurations: 110 pods
# Range: 10-250
maxPods: 30
# Azure resource tags (optional)
# Applied to all VM instances created with this AKSNodeClass
tags:
Environment: "production"
Team: "platform-team"
Application: "web-service"
CostCenter: "engineering"
# Kubelet configuration (optional)
# All fields are optional with sensible defaults
kubelet:
# CPU management policy
# Default: "none"
# Valid values: none, static
cpuManagerPolicy: "static"
# CPU CFS quota enforcement
# Default: true
cpuCFSQuota: true
# CPU CFS quota period
# Default: "100ms"
cpuCFSQuotaPeriod: "100ms"
# Image garbage collection thresholds
# imageGCHighThresholdPercent must be greater than imageGCLowThresholdPercent
# Range: 0-100
imageGCHighThresholdPercent: 85
imageGCLowThresholdPercent: 80
# Topology manager policy
# Default: "none"
# Valid values: none, restricted, best-effort, single-numa-node
topologyManagerPolicy: "best-effort"
# Allowed unsafe sysctls (optional)
# Comma-separated list of unsafe sysctls or patterns
allowedUnsafeSysctls:
- "kernel.msg*"
- "net.ipv4.route.min_pmtu"
# Container log configuration
# containerLogMaxSize default: "50Mi"
containerLogMaxSize: "50Mi"
# containerLogMaxFiles default: 5, minimum: 2
containerLogMaxFiles: 5
# Pod process limits
# Default: -1 (unlimited)
podPidsLimit: 4096
Sonraki Adımlar
AKS'de düğüm otomatik sağlama hakkında daha fazla bilgi için aşağıdaki makalelere bakın: