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 dondurulmuştur.
31 Ekim 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.
Önemli
Mevcut AKSNodeClass üzerindeki bir ayarın değiştirilmesi, çalışan düğümleri yerinde yeniden yapılandırmaz. NAP, önceki yapılandırmadan sağlanan düğümleri sapmış olarak işaretler ve bunlara başvuru yapan NodePool kaynaklardaki kesinti denetimlerine tabi olarak bunları değiştirir.
tags alanı tek istisnadır, çünkü etiket değişiklikleri düğümü değiştirmeden mevcut Azure kaynaklarına uygulanır. Daha fazla bilgi edinmek için bkz. Drift ve Kesinti bütçeleri. Üretim iş yüklerinin kullandığı bir AKSNodeClass öğeyi değiştirmeden önce bu kılavuzu gözden geçirin.
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.
Ö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 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
Artifakt akışı
Artifact Streaming, kapsayıcı görüntülerini Azure Container Registry’den (ACR) Azure Kubernetes Service’e (AKS) akış olarak aktarabilmenizi sağlar. AKS, yalnızca podun ilk başlatılması için gerekli katmanları çeker ve iş yüklerinizi dağıtma süresini kısaltır.
Prerequisites
- Artifact Streaming, AKS kümenizle tümleşik Premium katmanlı bir ACR’ye sahip olmanızı gerektirir.
- Artifact Streaming, ACR'de etkinleştirilmelidir.
ACR'de Yapıt Akışını etkinleştirme yönergeleri için Yapıt Akışı belgelerine bakın.
NAP kümelerinde artefakt akışını etkinleştirin
Düğüm Otomatik Sağlama (NAP) etkinleştirilmiş kümeler, spec.artifactStreaming.enabled'sinin alanını kullanarak artefakt akışını etkinleştirebilir. Bu alanı, bu AKSNodeClass CRD’siyle ilişkili yeni veya mevcut NAP tarafından yönetilen düğümler için artifact akışını etkinleştirmek üzere true olarak ayarlayın.
apiVersion: karpenter.azure.com/v1beta1
kind: AKSNodeClass
metadata:
name: my-node-class
spec:
# Enables artifact streaming; To use this feature container images must also enable artifact streaming on ACR
# Valid values: true, false; defaults to false if not specified
artifactStreaming:
enabled:
true
Note
AKS NAP yönetilen düğümlerinde yapıt akışını kullanmak için Azure Container Registry (ACR) içinde yapıt akışını da etkinleştirmeniz gerekir. ACR'de bu seçeneği ayarlamazsanız, alan varsayılan olarak false olur.
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:
group: karpenter.azure.com
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"
Mevcut bir AKSNodeClass üzerinde LocalDNS yapılandırmasını güncelleştirme
localDNS ayarı, diğer AKSNodeClass ayarlar gibi kayma algılamasına katılır. Mevcut düğümlerin zaten başvurduğu bir spec.localDNS üzerinde AKSNodeClass değişikliği yaptığınızda NAP, değişikliği standart Drift mekanizması aracılığıyla uygular. NAP mevcut düğümleri yeniden imajlamaz.
Aşağıdaki davranış, LocalDNS modunu veya geçersiz kılmaları değiştirdiğinizde, örneğin Disabled değerini Required yerine mode olarak değiştirdiğinizde, geçerlidir:
-
Yeni düğümler:
AKSNodeClassöğesini güncelledikten sonra NAP tarafından sağlanan her düğüm, yeni LocalDNS yapılandırmasını kullanır. -
Mevcut düğümler: NAP, kaydedilen yapılandırmaları artık ile eşleşmediğinden
AKSNodeClassmevcutNodeClaimnesneleri kaymış olarak işaretler. NAP, yeni LocalDNS yapılandırmasını kullanan yeni bir düğüm başlatır, ardından kordonlar, boşaltır ve sürüklenen düğümü kaldırır. - Yeniden imaj oluşturma yok: AKS yönetilen düğüm havuzunda LocalDNS'nin etkinleştirilmesi havuzdaki tüm düğümleri yeniden imajlar. NAP bunun yerine düğümün yerini alır. Her iki durumda da, etkilenen düğümlerdeki podlar tahliye edilir ve yeniden planlanır, bu nedenle aynı iş yükü etkisini planlayın.
Önemli
mode ayarını Preferred veya Disabled olarak ayarlamak, çözümlenen AKSNodeClass yapılandırmasını da değiştirir ve mevcut düğümlerin kaymasına neden olur.
kubeDNSOverrides bölümündeki, localDNS ve vnetDNSOverrides değerleri de dahil olmak üzere, herhangi bir değişiklik düğümün değiştirilmesine neden olur.
Değiştirme başladığında
Kayma değerlendirmesi ve değiştirme işlemi, güncelleştirilen AKSNodeClass uyguladığınız anda başlar. Değiştirme, standart NAP kesinti yaşam döngüsünü izler; bu nedenle oran ve zamanlama, AKSNodeClass öğesine başvuran NodePool kaynaklarda yapılandırdığınız kesinti denetimlerine bağlıdır.
NAP değiştirme işlemini nasıl koordine eder?
LocalDNS değişikliğinin neden olduğu kayma, aşağıdaki tabloda açıklanan standart NAP kesintisi denetimlerine tabidir:
| Denetim | LocalDNS kaynaklı değiştirme işlemi üzerindeki etkisi |
|---|---|
Kesinti bütçeleri (spec.disruption.budgets) |
Oran, NAP'nin aynı anda değiştirebileceği düğüm sayısını sınırlar. Bütçe tanımlamazsanız NAP varsayılan olarak tek bir nodes: 10% bütçesi kullanır ve düğüm havuzunun düğümlerinin en fazla yüzde 10'unu eşzamanlı olarak kesintiye uğratır. |
Bütçe schedule ve duration |
Değiştirme işlemini bakım aralığıyla sınırlar. Değiştirme işlemini engellemek için nodes: "0" öğesini pencerenin dışına yerleştirin. |
| Pod kesinti bütçeleri (PDB) | Düğüm boşaltma sırasında uygulayın. NAP, PDB'yi ihlal eden podları çıkarmak yerine bekler. |
karpenter.sh/do-not-disrupt açıklama |
Annotasyonlu podları ve düğümleri, sürüklenme de dahil olmak üzere gönüllü kesintinin dışında tutar. |
terminationGracePeriod |
Caps boşaltma süresi. Bu ayar, süre dolduğunda PDB'leri ve karpenter.sh/do-not-disrupt ek açıklamayı devre dışı bırakır. |
Değiştirme işlemi ne tam seri ne de tam paraleldir. NAP, sürüklenen bir düğümü kaldırmadan önce değiştirme kapasitesi sağlar, ancak kesinti bütçelerinizin ayarlandığı sınıra kadar aynı anda aynı AKSNodeClass öğesine başvuran birden çok düğümün yerini alabilir.
Warning
Düğüm havuzlarınızda kesinti bütçeleri tanımlamaz ve iş yükleriniz için pod kesintisi bütçeleri tanımlamazsanız, yoğun bir localDNS üzerinde AKSNodeClass değiştirmek, uygulama düzeyinde hiçbir koruma olmadan düğümlerinizin aynı anda yüzde 10'una kadarını kesintiye uğratabilir ve bu da iş yükü kesintisine neden olabilir. Kritik iş yükleri için PDB'leri tanımlayın ve üretim kümesinde localDNS değiştirmeden önce konservatif bir kesinti bütçesi ayarlayın.
LocalDNS'yi etkinleştirdiğinizde kullanılabilirlik riskini azaltın
Özel DNS sunucularınızın düğüm alt ağından hem UDP hem de TCP bağlantı noktası 53 üzerinden sorguları yanıtladığını onaylayın. Daha fazla bilgi için bkz. LocalDNS'yi etkinleştirmeden önce özel DNS'yi doğrulama.
Her kritik iş yükü için pod kesintisi bütçeleri tanımlayın.
Aşağıdaki örnekte gösterildiği gibi,
NodePooldeğerini değiştirmeden önce etkilenenAKSNodeClasskaynaklarda muhafazakâr bir kesinti bütçesi ayarlayın:apiVersion: karpenter.sh/v1 kind: NodePool metadata: name: default spec: disruption: budgets: - nodes: "1" # Replace one node at a timelocalDNSDeğişikliği önce üretim dışı bir ortamdaAKSNodeClassuygulayın. Alternatif olarak, LocalDNS'nin etkinleştirildiği birAKSNodeClassoluşturun ve iş yüklerini ona referans veren birNodePoolöğesine geçirin.Düğüm claim'lerini listeleyerek değiştirme ilerleme durumunu izleyin. Hiçbir node claim
Drifteddurum koşulunu bildirmediğinde değiştirme tamamlanır.# List node claims and watch replacements appear as drifted nodes are removed kubectl get nodeclaims # Inspect the status conditions on a specific node claim kubectl describe nodeclaim <nodeclaim-name>LocalDNS'nin değiştirme düğümlerinde etkin olduğunu onaylayın. Daha fazla bilgi için bkz. LocalDNS işlemini doğrulama.
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 ve dikkat edilmesi gerekenler hakkında daha fazla bilgi için bkz. özel düğüm yapılandırma parametreleri başvurusu.
Ö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ı
NVIDIA GPU Operatörü gibi özel GPU sürücüsü yüklemesini etkinleştirmek için aşağıdaki alanı kullanın.
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
Güvenlik ayarları
Sunucuda şifreleme
Aşağıdaki alan, sağlanan düğümler için konak düzeyinde şifrelemenin etkinleştirilip etkinleştirilmediğini belirtir. Bu alanı true olarak ayarladığınızda, NAP yalnızca ana bilgisayarda şifrelemeyi destekleyen örnek seçeneklerini içerir.
spec:
security:
encryptionatHost:
# acceptable values: [true, false] default(or if not specified): false
false
Ana makine tabanlı şifreleme hakkında daha fazla bilgi için Ana Makinede Şifreleme belgelerine bakın.
Özel yönetilen anahtarlar ve disk şifreleme kümeleri
NAP, müşteri tarafından yönetilen anahtarları ve disk şifreleme kümelerini kullanan kümeleri destekler. Bu seçenekleri küme düzeyinde etkinleştirin. Ayarlamanız gereken alanlar yoktur AKSNodeClass . Küme kimliğinizin uygun rol tabanlı erişim denetimine (RBAC) sahip olduğundan emin olun:
- Küme kimliğinin Disk Şifreleme Kümesine erişimi vardır
Reader. - Disk Şifreleme Kümesi kaynağının
Key Vault Crypto Service Encryption UserAzure Key Vault'a erişimi vardır.
Müşteri tarafından yönetilen anahtarlar ve küme oluşturma sırasında etkinleştirilen disk şifreleme kümeleri hakkında bilgi için Customer-Managed Anahtarları belgelerine bakın.
NAP kümelerinde güvenilir başlatmayı etkinleştirin
Düğüm Otomatik Sağlama (NAP) etkin olan kümeler, spec.security.trustedLaunch'sinin alanını kullanarak güvenilir başlatmayı etkinleştirebilir.
secureBoot ve vTPM alanlarını, bu AKSNodeClass CRD ile ilişkili yeni veya mevcut NAP ile yönetilen düğümler için güvenilir başlatmayı etkinleştirmek üzere true olarak ayarlayın.
spec:
security:
# Enables trusted lunch
# Valid values: true, false; defaults to false if not specified
trustedLaunch:
secureBoot: true
vTPM: true
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:
group: karpenter.azure.com
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
# Artifact Streaming- allows use of artifact streaming feature; To use this feature container images must also enable artifact streaming on ACR
# Valid values: true, false; defaults to false if not specified
artifactStreaming:
enabled: true
# LocalDNS mode - allows use of LocalDNS feature
# Default: Disabled
# Valid values: Preferred, Required, Disabled
# vnetDNSOverrides and kubeDNSOverrides are both required, even when mode is Disabled
# Each list must include the "." and "cluster.local" zones, and each zone must set all nine fields
localDNS:
mode: Disabled
# vnetDNSOverrides apply to DNS traffic from pods with dnsPolicy:default and from kubelet
vnetDNSOverrides:
- zone: "."
cacheDuration: "3600s"
forwardDestination: VnetDNS # the "." zone can't forward to ClusterCoreDNS in vnetDNSOverrides
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: PreferUDP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
- zone: "cluster.local"
cacheDuration: "3600s"
forwardDestination: ClusterCoreDNS # cluster.local can't forward to VnetDNS
forwardPolicy: Sequential
maxConcurrent: 1000
protocol: ForceTCP
queryLogging: Error
serveStale: Immediate
serveStaleDuration: "3600s"
# kubeDNSOverrides apply to DNS traffic from pods with dnsPolicy:ClusterFirst
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"
# 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
security:
# Enables trusted lunch
# Valid values: true, false; default(or if not specified): false
trustedLaunch:
secureBoot: true
vTPM: true
# Encryption at host
encryptionatHost:
# acceptable values: [true, false] default(or if not specified): false
false
Sonraki Adımlar
AKS'de düğüm otomatik sağlama hakkında daha fazla bilgi için aşağıdaki makalelere bakın: