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 (AKS) düğüm otomatik sağlama (NAP) için Azure özgü ayarları tanımlamak üzere AKSNodeClass kaynaklarını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
November 30, 2025 tarihinden itibaren Azure Kubernetes Service (AKS) artık Azure Linux 2.0 için güvenlik güncelleştirmelerini desteklemez veya sağlamaz. 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 ile desteklenen bir Azure Linux sürümüne geçin. Daha fazla bilgi için Emeklilik GitHub sorunu ve Azure Güncelleştirmeleri kullanımdan kaldırma duyurusu'na bakınız. Duyurular ve güncelleştirmeler hakkında bilgi sahibi olmak için AKS sürüm notlarını izleyin.
AKSNodeClass kaynaklarına genel bakış
AKSNodeClass kaynakları NAP için Azure özgü ayarları yapılandırmanıza olanak tanır. Her NodePool kaynak bir AKSNodeClass referans spec.template.spec.nodeClassRef kullanmalıdır. Birden fazla NodePools, aynı AKSNodeClass işaret edebilir ve bu, ortak Azure yapılandırmalarını farklı düğüm havuzlarında paylaşmanıza olanak sağlar.
Görüntü ailesi yapılandırması
imageFamily alanı, AKSNodeClass aracılığıyla sağlanan düğümler için varsayılan VM görüntüsünü ve önyükleme mantığını belirler. Görüntü ailesi belirtmezseniz Kubernetes sürümünüze göre varsayılan işletim sistemi sürümü kullanılır. GPU'lar uyumlu VM boyutlarında her iki görüntü ailesinde de desteklenir. Kubernetes sürümü başına varsayılan işletim sistemi sürümü hakkında daha fazla bilgi için AKS İşletim Sistemi Sürümü belgelerine bakın.
Desteklenen görüntü aileleri
-
Ubuntu: Ubuntu, AKS düğümleri için varsayılan Linux dağıtımıdır.- İşletim sistemi sürümü varsayılanları Kubernetes sürümünüz temelinde değişir. Ubuntu 22.04, Kubernetes sürüm 1.25 ile 1.33 arasında varsayılandır. Ubuntu 24.04, Kubernetes sürüm 1.34 ve üzeri için varsayılandır.
-
AzureLinux: Azure Linux, AKS iş yükleri için Microsoft alternatif Linux dağıtımıdır. Daha fazla bilgi için Azure Linux belgelerine bakın -
AzureContainerLinux: Azure Container Linux, AKS iş yükleri için Microsoft’un değiştirilemez, kapsayıcılar için iyileştirilmiş işletim sistemidir. Daha fazla bilgi için Azure Container Linux belgelerine bakın.
Ö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
AKSNodeClass'ü AzureContainerLinux görüntü ailesini kullanacak şekilde yapılandıran aşağıdaki örneği inceleyin:
spec:
imageFamily: AzureContainerLinux
FIPS uyumlu düğüm görüntü yapılandırması
Federal Bilgi İşleme Standartları (FIPS) uyumlu düğüm görüntülerini de etkinleştirebilirsiniz. AKS'deki FIPS hakkında daha fazla bilgi için FIPS belgelerine bakın.
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ı
vnetSubnetID alanı, düğüm ağ arabirimlerini sağlamak için hangi Azure sanal ağ 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
Geçici 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'ler farklı kısa ömürlü depolama türlerine sahip 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 sayısı yapılandırması
maxPods alanı, bir düğümde zamanlanabilecek 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 |
|---|---|
| Azure CNI ile Standart Ağ (v1 veya NodeSubnet) | 30 |
| Yer paylaşımlı ağ ile CNI Azure | 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: "3600s"
forwardDestination: VnetDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: PreferUDP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
- zone: "cluster.local"
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: ForceTCP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
kubeDNSOverrides:
- zone: "."
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: PreferUDP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
- zone: "cluster.local"
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: ForceTCP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
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 bağımsız değişkenleridir, bu nedenle Azure sağlayıcı bunları doğrudan düğümdeki kubelet'e 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ı tahsis etmesini nasıl denetlediğini kontrol eder. 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ı.
Linux özel işletim sistemi yapılandırma ayarları
LinuxOSConfig bölümü, düğüm davranışını etkileyen çeşitli kubelet parametrelerini yapılandırmanıza olanak tanır. Bu parametreler tipik özel işletim sistemi bağımsız değişkenleridir, bu nedenle NAP bunları düğümdeki kubelet'e geçirir.
Özel Linux işletim sistemi yapılandırma ayarları, varsayılan değerler hakkında tüm ayrıntılar ve dikkat edilmesi gerekenler hakkında daha fazla bilgi için özel düğüm yapılandırma belgelerimize bakın.
Önemli
Linux işletim sistemi ayarlarını dikkatle yapılandırın ve önce üretim dışı ortamlardaki değişiklikleri test edin.
Linux dosya işleme sınırları ayarları
Dosya sistemi ayarlarını ayarlamak için aşağıdaki ayarları kullanın.
spec:
linuxOSConfig:
# Sysctl Settings
sysctls:
# File System Settings
fsFileMax: 2000000 # Range: 8192-12000500 Default: Max of available range
fsInotifyMaxUserWatches: 1000000 # Range: 781250-2097152 Default: 1048576
fsAioMaxNr: 1000000 # Range: 65536-6553500 Default: 65536
fsNrOpen: 1000000 # Range: 8192-20000500 Default: 1048576
Linux yuva ve ağ ayarlama ayarları
TCP ve ağ ayarını ayarlamak için aşağıdaki ayarları kullanın.
spec:
linuxOSConfig:
# Network Settings
netCoreSomaxconn: 65535 # Range: 4096-3240000 Default: 16384
netCoreNetdevMaxBacklog: 5000 # Range: 1000-3240000 Default: 1000
netCoreRmemMax: 134217728 # Range: 212992-134217728 Default: 1048576
netCoreOptmemMax: 102400 # Range: 20480-4194304 Default: 131072
netCoreWmemMax: 134217728 # Range: 212992-134217728 Default: 212992
netCoreRmemDefault: 212992 # Range: 212992-134217728
netCoreWmemDefault: 212992 # Range: 212992-134217728
netIPv4IPLocalPortRange: "1024 65535" # Format: "first last", first: 1024-60999, last: 32768-65535
# Neighbor Table GC Thresholds
netIPv4NeighDefaultGcThresh1: 1024 # Range: 128-80000 Default: 4096
netIPv4NeighDefaultGcThresh2: 2048 # Range: 512-80000 Default: 8192
netIPv4NeighDefaultGcThresh3: 4096 # Range: 1024-80000 Default: 16384
# Note: thresh1 <= thresh2 <= thresh3
# Connection Tracking
netNetfilterNfConntrackBuckets: 131072 # Range: 65536-524288 Default: dynamically calculated
netNetfilterNfConntrackMax: 262144 # Range: 131072-2097152 Default: dynamically calculated
Linux çalışan sınırı ayarları
Çekirdek ayarını ayarlamak için aşağıdaki ayarları kullanın.
spec:
linuxOSConfig:
# Kernel Settings
kernelThreadsMax: 100000 # Range: 20-513785 Default: Dynamically calculated
Linux sanal bellek ayarları
Linux çekirdeğinin sanal bellek alt sisteminin çalışmasını ve kirli verilerin diske yazılmasını ayarlamak için aşağıdaki seçenekleri kullanın.
spec:
linuxOSConfig:
# Memory Management
vmMaxMapCount: 262144 # Range: 65530-262144 Default: Max of available range
vmVfsCachePressure: 100 # Range: 0-100 Default: 100
vmSwappiness: 60 # Range: 0-100 Default: 60
# Swap File Configuration
swapFileSize: "2Gi" # Default: (not set) | Pattern: quantity with units Note: Requires kubelet.failSwapOn: false
# Transparent Huge Pages
transparentHugePageEnabled: "madvise" # Values: [always, madvise, never] Default: always
transparentHugePageDefrag: "defer+madvise" # Values: [always, defer, defer+madvise, madvise, never] Default: madvise
GPU ayarları
Aşağıdaki alan, kullanıcının NVIDIA GPU Operatörü gibi özel GPU sürücüsü yüklemesine izin vermesine olanak tanır.
spec:
gpu:
mode:
# acceptable values: [driver, none] default(or if not specified): driver
# none skips gpu driver installation, driver has NAP manage the GPU driver installation
none
Azure kaynak etiketleri yapılandırması
Belirli bir AKSNodeClass kaynağı kullanılarak oluşturulan tüm VM örnekleri için geçerli Azure kaynak etiketleri 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, AzureContainerLinux
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
# GPU driver installation (optional)
# Default: driver - NAP manages gpu driver installation
# none skips gpu driver installation
# Valid values: driver, none
gpu:
mode:
driver
# 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: