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.
Düğüm Sağlamlaştırma, iş yükleri düğümleri CPU, bellek veya disk baskısı altına soktuğunda düğüm kararlılığını koruyan Linux düğüm havuzları için isteğe bağlı bir özelliktir. Kümede Düğüm Sağlamlaştırma'yı etkinleştirdiğinizde AKS, her düğümün Kubernetes bileşenleri ve konak hizmetleri için kaynakları ayırma ve kaynak sınırlarını uygulama şeklini ve kaynaklar az olduğunda kubelet'in podları nasıl çıkardığını değiştirir.
Bu makale, Düğüm Sağlamlaştırma'nın neleri değiştirdiğini açıklar, sağlamlaştırılmış varsayılanları standart AKS varsayılanlarıyla karşılaştırır ve özelliğin nasıl etkinleştirileceğini, doğrulanacağını, özelleştirileceğini ve devre dışı bırakılacağını gösterir.
Important
AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "mevcut olduğu şekilde" sağlanmakta olup, hizmet seviyesi anlaşmalarına ve sınırlı garantilere dahil edilmemektedir. AKS önizlemeleri, müşteri desteği ekibi tarafından maksimum çaba gösterilerek kısmen ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:
Düğüm Sağlamlaştırmanın Avantajları
İş yükleri meşgul veya ani yük artışlarının olduğu düğümlerde kubelet, kapsayıcı çalışma zamanı ve konak hizmetlerinin ihtiyaç duyduğu kaynakları kullanabilir. Bu durumda düğümler yanıt vermemeye başlayabilir, NotReady durumu bildirebilir veya podları aniden sonlandırabilir. Düğüm Sağlamlaştırma bu riskleri aşağıdaki yollarla azaltır:
-
Zorunlu rezervasyonlar: Varsayılan olarak AKS, yalnızca zamanlayıcının podlara ayırabileceği kapasiteyi hesaplamak için kube-reserved değerlerini kullanır. Node Hardening'i kullanarak kubelet, Linux denetim grupları (cgroups) aracılığıyla kube-reserved ve sistem tarafından ayrılmış kapasiteyi de zorunlu kılmaktadır. Kubelet ve containerd, ayrılmış bir
kubereserved.slicecgroup içinde çalıştığından, podlar düğüm kaynaklarını tamamen kullansa bile ayrılmış CPU payını ve belleği korur. -
Konak hizmetleri için ayrılmış kapasite: Node Hardening,
system.sliceiçinde çalışan konak işletim sistemi hizmetleri için sistem tarafından ayrılmış bir tahsis ekler. - Daha fazla bellek payı: Kullanılabilir bellek için katı tahliye eşiği düğüm belleğiyle ölçeklendirilir, bu nedenle kubelet düğümün belleği kritik düzeyde azalmadan önce podları tahliye eder.
- Zarif tahliye: Yumuşak tahliye eşikleri, kubelet'in bellek veya disk alanı az olduğunda podları sonlandırma için tanınan süreyle zarif bir şekilde tahliye etmesine olanak sağlar. Podları hemen sonlandıran hard eviction, son çare olarak devreye girer.
- Pod yoğunluğuyla ölçeklenen rezervasyonlar: kube-reserved bellek hesaplaması, düğüm başına maksimum pod sayısıyla artar ve bu da daha fazla pod çalıştırmanın kubelet ve containerd ek yükünü hesaba katar.
Düğüm Sağlamlaştırma'yı etkinleştirdiğinizde ne değişir?
Aşağıdaki tablolarda Kubernetes 1.29 veya üzerini çalıştıran Linux düğümleri için standart varsayılan değerler, Düğüm Sağlamlaştırma etkinleştirildiğinde AKS'nin uyguladığı varsayılan değerlerle karşılaştırılır.
Kaynak rezervasyonları
| Setting | Node sağlamlaştırması olmadan | Düğüm Sağlamlaştırma |
|---|---|---|
| Kube için ayrılmış CPU | CPU çekirdeği sayısına göre. Daha fazla bilgi için bkz. CPU ayırmaları. | Değişmemiş |
| Kube için ayrılmış bellek |
min(20 × maxPods + 50, 25% of node memory) MiB |
min(35 × maxPods + max(250, 2% of node memory), 25% of node memory) MiB |
| Kube için ayrılmış işlem kimlikleri (PID) | 1000 |
Rezerve edilmedi |
| Sistem tarafından ayrılmış CPU | None | 100m |
| Sistem tarafından ayrılmış bellek | None | 200 MiB, artı her tam 32 GiB düğüm belleği için 100 MiB, artı Azure CNI kullanan kümeler için 100 MiB |
| Sistem için ayrılmış geçici depolama | None | 1Gi |
Tahliye eşikleri
| Setting | Node Hardening olmadan | Node Hardening ile |
|---|---|---|
Zorla çıkarma: memory.available |
100Mi |
250Mi 8 GiB veya daha az belleğe sahip düğümler için, 375Mi 8 GiB'den fazla ve 32 GiB'den az olan düğümler için ve 512Mi 32 GiB veya daha fazla olan düğümler için |
Zorunlu tahliye: nodefs.available ve nodefs.inodesFree |
10% ve 5% |
Değişmemiş |
Zorla çıkarma: pid.available |
2000 |
Ayarlanmadı |
Yumuşak tahliye: memory.available |
None |
500Mi, 750Mi, veya 1Gi, zorunlu tahliye ile aynı düğüm bellek katmanlarını kullanarak, 30 saniyelik ek süreyle |
Geçici çıkarma: nodefs.available ve nodefs.inodesFree |
None |
12% ve 7%, her birinin 2 dakikalık ek süresi vardır |
| Yumuşak tahliye sırasında maksimum pod sonlandırma ek süresi | Ayarlanmadı | 60 saniye |
Cgroup uygulanması
| Setting | Node Sağlamlaştırması olmadan | Node Sağlamlaştırma ile |
|---|---|---|
| Zorunlu düğüm atanabilirliği | pods |
pods, kube-reserved ve system-reserved |
| Kubelet ve containerd cgroup |
system.slice, sınır olmadan |
kubereserved.slice, belleği kube-reserved bellek miktarıyla sınırlı ve CPU payı kube-reserved CPU ile orantılı |
| Ana bilgisayar hizmetleri cgroup |
system.slice, sınırlama olmadan |
system.slice, sistem için ayrılmış bellekle sınırlı olacak şekilde ve sistem için ayrılmış CPU ile orantılı bir CPU paylaşımıyla |
Düğüm Sağlamlaştırma daha fazla kapasite ayırdığından, düğümler podlar için daha az allocatable kapasitesi bildirir. Örneğin, Azure CNI kullanan 4 vCPU ve 16 GiB belleğe sahip bir düğümde Düğüm Sağlamlaştırma'nın etkinleştirilmesi aşağıdaki gibi atanabilir kapasiteyi azaltır:
- Düğüm başına varsayılan en fazla 250 pod ile, yaklaşık 570 MiB bellek, 100 milicore CPU ve 1 GiB kısa ömürlü depolama artar.
- Düğüm başına en fazla 30 pod olacak şekilde, yaklaşık 1,3 GiB bellek, 100 milicore CPU ve 1 GiB kısa ömürlü depolama kadar azalarak.
Yumuşak tahliye eşikleri, allocatable kapasitesini azaltmaz. Bunlar yalnızca kubelet podları tahliye etmeye başladığında değişir.
Considerations
Düğüm Sağlamlaştırma'yı etkinleştirmeden önce aşağıdaki noktaları göz önünde bulundurun:
- Düğüm Sağlamlaştırma'yı küme düzeyinde etkinleştirirsiniz ve kümedeki tüm Linux düğüm havuzları için geçerlidir. Tek tek düğüm havuzları için bunu etkinleştiremezsiniz ve Windows düğüm havuzlarını etkilemez.
- Düğümler daha az allocatable kapasitesi rapor eder, dolayısıyla Düğüm Sağlamlaştırma'yı etkinleştirmeden önce düğüme sığan podlar daha sonra sığmayabilir. Pod kaynak isteklerinizi ve düğüm havuzu boyutlarını gözden geçirin.
-
system.sliceiçindeki konak hizmetleri, sistem tarafından ayrılmış belleğe eşit bir sabit bellek sınırı paylaşır. Düğümlerde güvenlik, izleme veya günlük iletme ajanları gibi systemd hizmetleri olarak kendi ajanlarınızı çalıştırırsanız, bu ajanlar bu sınıra dahil edilir. Üretimde Node Hardening'i kullanmadan önce bellek kullanımını ve kararlılığını doğrulayın. - Düğüm havuzunun özel kubelet yapılandırmasında ayarladığınız değerler, karşılık gelen Node Hardening varsayılanlarını geçersiz kılar. Daha fazla bilgi için bkz. Düğüm Sağlamlaştırma ayarlarını özelleştirme.
- Düğüm Sağlamlaştırma'yı daha sonra devre dışı bırakırsanız, mevcut düğüm havuzları, düğümleri yeniden görüntülense bile sağlamlaştırılmış yumuşak çıkarma ayarlarını tutar. Bu ayarları kaldırmak için yeni düğüm havuzları oluşturmanız gerekir. Daha fazla bilgi için bkz. Düğüm Sağlamlaştırmayı Devre Dışı Bırakma.
- Özellik önizleme aşamasındayken varsayılan değerler değişebilir. Üretim dışı bir kümeyle başlayın ve iş yüklerinizi gerçekçi düğüm baskısı koşulları altında doğrulayın.
Prerequisites
- Azure aboneliği. Hesabınız yoksa ücretsiz hesap oluşturun.
- Linux düğüm havuzlarına sahip bir AKS kümesi veya bir AKS kümesi oluşturma izinleri.
- Aşağıdaki bölümlerde açıklandığı gibi,
aks-previewAzure CLI uzantısı veCustomNodeConfigPreviewözellik bayrağı.
aks-preview Azure CLI uzantısını yükleme
aks-previewuzantısınıaz extension addkomutunu kullanarak yükleyin.az extension add --name aks-previewkomutunu kullanarak uzantının en son sürümüne güncelleştirin
az extension update.az extension update --name aks-preview
Özellik bayrağını CustomNodeConfigPreview kaydetme
CustomNodeConfigPreviewkomutunu kullanarakaz feature registerözellik bayrağını kaydedin.az feature register --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.
komutunu kullanarak
az feature showkayıt durumunu doğrulayın.az feature show --namespace "Microsoft.ContainerService" --name "CustomNodeConfigPreview"Durum Kayıtlı olarak gösterildiğinde, komutunu kullanarak
az provider registerkaynak sağlayıcısının kaydını yenileyin.az provider register --namespace "Microsoft.ContainerService"
Düğüm Sertleştirmesini Etkinleştir
Önizleme sırasında Düğüm Sağlamlaştırma varsayılan olarak etkin değildir.
Yeni bir kümede Düğüm Güçlendirme'yi etkinleştirme
az aks create parametresiyle --enable-node-hardening komutunu kullanarak Düğüm Sağlamlaştırma etkin bir küme oluşturun.
Bu komut için CustomNodeConfigPreview uzantısı ve aks-preview özellik bayrağı gerekir. Daha fazla bilgi için bkz. Önkoşullar.
az aks create \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-node-hardening \
--generate-ssh-keys
Değişikliği onaylamak için bkz. Düğüm Sağlamlaştırma ayarlarını doğrulama.
Mevcut bir kümede Düğüm Sağlamlaştırma'yı etkinleştirme
Mevcut bir kümede Düğüm Sağlamlaştırma'yı etkinleştirmek için az aks update komutunu --enable-node-hardening parametresiyle kullanın.
Bu komut için CustomNodeConfigPreview uzantısı ve aks-preview özellik bayrağı gerekir. Daha fazla bilgi için bkz. Önkoşullar.
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--enable-node-hardening
Değişikliği onaylamak için bkz. Düğüm Sağlamlaştırma ayarlarını doğrulama.
Düğüm Güçlendirme ayarlarını doğrulayın
az aks get-credentialskomutunu kullanarak kümenizin kimlik bilgilerini alın.az aks get-credentials --resource-group <resource-group-name> --name <cluster-name>Kubelet yapılandırma uç noktasını sorgulayarak düğümdeki etkili kubelet ayırma ve tahliye ayarlarını gözden geçirin.
kubectl get --raw "/api/v1/nodes/<node-name>/proxy/configz" | jq '.kubeletconfig | {kubeReserved, systemReserved, evictionHard, evictionSoft, evictionSoftGracePeriod, evictionMaxPodGracePeriod, enforceNodeAllocatable}'Sağlamlaştırılmış bir düğümde,
systemReservedvekube-reserveddeğerler içerir vesystem-reserved,enforceNodeAllocatableveevictionSoftiçerir.Düğümün kapasitesini ayrılabilir kaynaklarıyla karşılaştırın.
kubectl get node <node-name> -o jsonpath='{.status.capacity}{"\n"}{.status.allocatable}{"\n"}'Sağlamlaştırılmış bir düğümde ayrılabilir CPU, bellek ve kısa ömürlü depolama, kapasiteden daha düşüktür. Fark, Kaynak rezervasyonları içindeki kube-reserved ve system-reserved değerlerine, Tahliye eşikleri içindeki sabit tahliye eşikleri eklenince elde edilen değere eşittir. Örneğin, Azure CNI kullanan 4 vCPU ve 16 GiB belleğe sahip bir düğümde, allocatable CPU kapasiteden 240 milicore daha düşüktür: kube için ayrılmış 140 milicore CPU ve sistem için ayrılmış 100 milicore CPU.
Düğüm Sağlamlaştırma ayarlarını özelleştirin
Özel bir kubelet yapılandırması kullanarak Linux düğüm havuzu için kube-reserved ve tahliye varsayılanlarını geçersiz kılabilirsiniz. Bu ayarlar için CustomNodeConfigPreview özellik bayrağı gerekir. Düğüm Sağlamlaştırma'nın kümede etkinleştirilip etkinleştirilmediği fark etmese de bunları kullanabilirsiniz. AKS, sistem tarafından ayrılmış değerleri ve cgroup zorlamalarını yönetir ve bunları özelleştirmenize izin vermez.
Her ayar , Kaynak rezervasyonları veya Çıkarma eşikleri tablolarındaki bir satırı geçersiz kılar. Kube için ayrılan satırlar, kubeReserved ayarlarına karşılık gelir. Zorunlu tahliye satırları hardEvictionThreshold ayarlarına karşılık gelir. Geçici çıkarma satırları, softEvictionGracePeriod ve softEvictionThreshold ayarlarına karşılık gelir. Maksimum pod sonlandırma için tanınan ek süre evictionMaxPodGracePeriodInSeconds karşılık gelir.
Aşağıdaki ayarları yapılandırabilirsiniz:
| Setting | Overrides | Description |
|---|---|---|
kubeReserved.cpuMillicores |
Kube için ayrılmış CPU | Kubernetes sistem daemon'ları için ayrılmış CPU,milicore cinsinden. |
kubeReserved.memoryMB |
Kube için ayrılmış bellek | MiB'de Kubernetes sistem daemon'ları için ayrılmış bellek. |
hardEvictionThreshold.memoryAvailable |
Zorla çıkarma: memory.available |
Kullanılabilir bellek için katı tahliye eşiği. |
hardEvictionThreshold.nodeFsAvailable |
Zorla çıkarma: nodefs.available |
Kullanılabilir düğüm dosya sistemi alanı için sabit tahliye eşiği. |
hardEvictionThreshold.nodeFsInodesFree |
Zorunlu tahliye: nodefs.inodesFree |
Boş düğüm dosya sistemi inode'ları için zorunlu tahliye eşiği. |
softEvictionThreshold.memoryAvailable |
Yumuşak tahliye: memory.available |
Kullanılabilir bellek için yumuşak tahliye eşiği. |
softEvictionThreshold.nodeFsAvailable |
Yumuşak tahliye: nodefs.available |
Kullanılabilir düğüm dosya sistemi alanı için esnek tahliye eşiği. |
softEvictionThreshold.nodeFsInodesFree |
Yumuşak tahliye: nodefs.inodesFree |
Boş düğüm dosya sistemi inode’ları için yumuşak tahliye eşiği. |
softEvictionGracePeriod.memoryAvailable |
Geçici çıkarma: memory.available ek süre |
Kubelet podları çıkarmadan önce kullanılabilir belleğin yumuşak eşiğinin altında kalması gereken süre. |
softEvictionGracePeriod.nodeFsAvailable |
Yumuşak çıkarma: nodefs.available ek süre |
Kubelet podları tahliye etmeden önce kullanılabilir düğüm dosya sistemi alanının yumuşak eşiğinin altında kalması gereken süre. |
softEvictionGracePeriod.nodeFsInodesFree |
Yumuşak tahliye: nodefs.inodesFree ek süre |
Kubelet podları çıkarmadan önce boş düğüm dosya sistemi inodlarının yumuşak eşiklerinin altında kalması gereken süre. |
evictionMaxPodGracePeriodInSeconds |
Yumuşak tahliye sırasında maksimum pod sonlandırma için ek süre | Kubelet'in soft eviction sırasında podların sonlandırılmasına izin verdiği en fazla saniye sayısı. |
- Her ayar için izin verilen değerler, minimum değerler ve doğrulama kuralları için bkz. AKS için özel düğüm yapılandırma parametreleri.
- Her çıkarma sinyali için hem yumuşak çıkarma eşiğini hem de eşleşen tolerans süresini ayarlayın ve her bir yumuşak çıkarma eşiğinin aynı sinyal için katı çıkarma eşiğinden büyük olduğundan emin olun.
Özelleştirmek istediğiniz ayarlarla,
nodehardening-kubelet.jsongibi bir kubelet yapılandırma dosyası oluşturun. Aşağıdaki örnek, yapılandırılabilir her değeri ayarlar. Kube-reserved değerini 200 milicore CPU ve 1.024 MiB belleğe ayarlar. Kullanılabilir belleğin512Mi, kullanılabilir dosya sistemi alanının10%ve boş inodların5%sabit tahliye eşiklerini ayarlar.7%,12%ve1Giyumuşak tahliye eşiklerini 30 saniye, 2 dakika ve 2 dakikalık tolerans süreleriyle ayarlar. Ayrıca en fazla 60 saniyelik pod sonlandırma bekleme süresini ayarlar.{ "kubeReserved": { "cpuMillicores": 200, "memoryMB": 1024 }, "hardEvictionThreshold": { "memoryAvailable": "512Mi", "nodeFsAvailable": "10%", "nodeFsInodesFree": "5%" }, "softEvictionThreshold": { "memoryAvailable": "1Gi", "nodeFsAvailable": "12%", "nodeFsInodesFree": "7%" }, "softEvictionGracePeriod": { "memoryAvailable": "30s", "nodeFsAvailable": "2m", "nodeFsInodesFree": "2m" }, "evictionMaxPodGracePeriodInSeconds": 60 }az aks nodepool addparametresiyle--kubelet-configkomutunu kullanarak yapılandırma dosyasını kullanan bir Linux düğüm havuzu oluşturun.az aks nodepool add \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --kubelet-config ./nodehardening-kubelet.jsonYapılandırmayı kümenin ilk düğüm havuzuna uygulamak için
az aks createkomutuyla birlikte--kubelet-configparametresini de kullanabilirsiniz.
Düğüm Sağlamlaştırmayı Devre Dışı Bırak
Düğüm Sağlamlaştırmayı, --disable-node-hardening parametresiyle az aks update komutunu kullanarak devre dışı bırakın.
Bu komut için CustomNodeConfigPreview uzantısı ve aks-preview özellik bayrağı gerekir. Daha fazla bilgi için bkz. Önkoşullar.
az aks update \
--resource-group <resource-group-name> \
--name <cluster-name> \
--disable-node-hardening
Düğüm Sağlamlaştırma'nın devre dışı bırakılması, küme düzeyi ayarı kapatır, ancak mevcut düğümleri hemen değiştirmez. Mevcut düğümler, örneğin bir düğüm görüntüsü yükseltmesi sırasında yeniden görüntülendirilene kadar tüm sağlamlaştırılmış ayarları tutar. Bir düğüm yeniden imajlandıktan sonra aşağıdaki değişiklikler geçerli olur:
- Standart AKS varsayılanlarına geri döndürüldü: Kube için ayrılmış ve sistem için ayrılmış kaynaklar, katı tahliye eşikleri ve cgroup zorlaması. Düğümün ayrılabilir kapasitesi buna göre artar.
- Saklanan: Yumuşak tahliye eşikleri, yumuşak tahliye için tanınan süreler ve yumuşak tahliye sırasında pod sonlandırma için tanınan azami süre.
Özel kubelet yapılandırmasını yalnızca bir küme veya düğüm havuzu oluşturduğunuzda ayarlayabilirsiniz, bu nedenle mevcut bir düğüm havuzundan korunan soft tahliye ayarlarını kaldıramazsınız. Bunları kaldırmak için, bunların ayarını açıkça kaldıran yeni bir düğüm havuzu oluşturun, iş yüklerinizi yeni düğüm havuzuna taşıyın ve ardından eski düğüm havuzunu silin.
remove-soft-eviction.jsongibi bir kubelet yapılandırma dosyası oluşturun. Aşağıdaki örnek, her yumuşak çıkarma eşiğini ve tolerans süresini boş bir dizeye ayarlar ve bu da bu sinyal için yumuşak çıkarma işlemini kapatır. Ayrıca, standart AKS varsayılanı olan pod sonlandırma için ek süre üst sınırını0olarak ayarlar.{ "softEvictionThreshold": { "memoryAvailable": "", "nodeFsAvailable": "", "nodeFsInodesFree": "" }, "softEvictionGracePeriod": { "memoryAvailable": "", "nodeFsAvailable": "", "nodeFsInodesFree": "" }, "evictionMaxPodGracePeriodInSeconds": 0 }az aks nodepool addparametresiyle--kubelet-configkomutunu kullanarak yapılandırma dosyasını kullanan bir Linux düğüm havuzu oluşturun.az aks nodepool add \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --kubelet-config ./remove-soft-eviction.jsonİş yüklerinizi yeni düğüm havuzuna taşıyın ve ardından eski düğüm havuzunu silin. Daha fazla bilgi için bkz. AKS'de düğüm havuzlarını yeniden boyutlandırma.
Düğümdeki ayarları onaylamak için bkz. Düğüm Sağlamlaştırma ayarlarını doğrulama. Yeni düğüm havuzundaki düğümlerde evictionSoft boştur.