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.
Sıralı yükseltme stratejisi düğümleri birer birer (veya birkaç kez) yükselterek, düğüm havuzunun yükseltme işlemi boyunca kullanılabilir durumda kalmasını sağlarken iş yükü kesintisini en aza indirir. Bu makalede, AKS düğüm havuzları için dalgalanma ayarları, boşaltma zaman aşımı ve bekleme süresi gibi sıralı yükseltmelerin nasıl yapılandırılacağı açıklanmaktadır.
Başlamadan önce
- Kontrol düzleminizin hedef Kubernetes sürümüne zaten yükseltildiğinden emin olun. Düğüm havuzlarını denetim düzleminden daha yüksek bir sürüme yükseltemezsiniz. Daha fazla bilgi için bkz. AKS kümesi denetim düzlemini yükseltme.
- Azure CLI kullanıyorsanız, bu makale Azure CLI sürüm 2.34.1 veya üzeri gerektirir.
az --versionSürümü bulmak için komutunu kullanın. Yüklemeniz veya yükseltmeniz gerekiyorsa bkz. Azure CLI yükleme. - AKS düğüm havuzları için sıralı yükseltmeleri yapılandırmak için
Microsoft.ContainerService/managedClusters/agentPools/writeRBAC rolü iznine ihtiyacınız vardır.
Sıralı yükseltme davranışına genel bakış
Sıralı yükseltme sırasında AKS, düğüm havuzundaki her düğüm için aşağıdaki işlemleri gerçekleştirir:
-
Aşırı gerilim düğümleri ekleme: Yükseltme sırasında kapasiteyi korumak için maksimum dalgalanma (
--max-surge) ayarlarına göre yeni arabellek düğümleri ekleyin. - Kordon altına alma ve boşaltma düğümleri: Çalışan uygulamalarda kesintiyi en aza indirmek için eski düğümleri birer birer kordon altına alıp boşaltın. En yüksek dalgalanmayı kullanıyorsanız, belirtilen arabellek düğümü sayısı kadar çok sayıda düğümü aynı anda kordon altına alır ve boşaltır.
- Bekletme süresini bekleyin (isteğe bağlı): Yükseltmeye devam etmeden önce iş yüklerinin yeni düğümlerde kararlı hale gelmesi için yapılandırılmış bir bekletme süresi bekleyin.
- Eski düğümleri yeniden imajlama: Eski düğümler boşaltıldığında, yeni sürümü almak için yeniden imajlanır. Yeniden tasarlanan düğümler, yükseltilecek bir sonraki düğüm kümesinin arabellek düğümleri olur.
- Yinele: Düğüm havuzundaki tüm düğümler yükseltilene kadar işlem yinelenir.
- Dalgalanma düğümlerini kaldırma: Tüm düğümler yükseltildikten sonra, kalan tüm arabellek düğümleri kaldırılır ve özgün düğüm havuzu boyutu ve dengesi korunur.
Sıralı yükseltme ayarlarını yapılandırma
Düğüm dalgalanmalarını özelleştirme
Önemli
- Her yükseltme işlemi için istenen maksimum düğüm artış sayısı için abonelik kotası gereklidir. Örneğin, her biri dört düğüm sayısına sahip beş düğüm havuzu olan bir kümenin toplam 20 düğümü vardır. Her düğüm havuzu 50%maksimum artış değerine sahipse, yükseltmeyi tamamlamak için 10 düğümden (iki düğüm × beş havuz) ek işlem ve IP kotası gerekir.
- Düğüm havuzundaki maksimum artış ayarı kalıcıdır. Sonraki Kubernetes yükseltmeleri veya düğüm sürümü yükseltmeleri bu ayarı kullanır. Düğüm havuzlarınız için maksimum artış değerini istediğiniz zaman değiştirebilirsiniz. Üretim düğümü havuzları için 33%maksimum artış ayarı öneririz.
- Azure CNI kullanıyorsanız, Azure CNI'nin IP gereksinimlerini karşılamak için alt ağda kullanılabilir IP'ler olduğunu doğrulayın.
AKS, yükseltmeleri varsayılan olarak ek bir düğümle hızlandıracak şekilde yapılandırır. Maksimum dalgalanma ayarı için varsayılan değer olan bir değer, AKS'nin eski sürüme sahip bir düğümü değiştirmek için mevcut uygulamaların kordonunun/boşaltılmasından önce ek bir düğüm oluşturarak iş yükü kesintisini en aza indirmesini sağlar. Düğüm havuzu başına maksimum artış değerini özelleştirebilirsiniz. Maksimum dalgalanma değerini artırdığınızda yükseltme işlemi daha hızlı tamamlanır, ancak yükseltme işlemi sırasında daha fazla kesinti yaşayabilirsiniz.
Örneğin, en yüksek artış değeri 100% mümkün olan en hızlı yükseltme işlemini sağlar, ancak düğüm havuzundaki tüm düğümlerin aynı anda boşaltılmasına da neden olur. Test ortamları için bunun gibi daha yüksek bir değer kullanmak isteyebilirsiniz. Üretim düğümü havuzları için maksimum dalgalanma ayarını 33% öneriyoruz.
AKS, maksimum artış için hem tamsayı değerlerini hem de yüzde değerini kabul eder. Örneğin:
| Değer türü | Example | Description |
|---|---|---|
| Integer | 5 |
Artışı sağlamak için beş ek düğüm |
| Yüzde | 50% |
Havuzdaki geçerli düğüm sayısının yarısının dalgalanma değeri |
Maksimum artış bir tamsayıya veya yüzdeye ayarlanabilir. Yüzde değeri en yakın düğüm sayısına yuvarlanmış. Maksimum aşırı gerilim değeri yükseltilecek düğüm sayısından yüksekse, yükseltilecek düğüm sayısı en yüksek dalgalanma değeri için kullanılır.
Kota veya kapasite sınırlamaları nedeniyle en yüksek surge değerine ölçeklendirme mümkün değilse, Kubernetes sürümü >= 1.35 olan aracı havuzları için AKS, yedek olarak otomatik biçimde 1 değerinde bir surge denemesi yapar. 1 ek düğüm ekleme işlemi başarılı olursa yükseltme, 1 ek düğümle devam eder.
Maksimum dalgalanma değerini ayarlama
parametresiyle az aks nodepool add veya az aks nodepool update komutunu kullanarak --max-surge yeni veya mevcut düğüm havuzları için maksimum dalgalanma değerlerini ayarlayın. Örneğin:
# Set max surge for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33%
# Update max surge for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 5
Kullanılamayan düğümleri özelleştir
Önemli
- Maksimum kullanım dışı, yükseltme işlemi sırasında aşırı büyüme düğümleri oluşturmaz. Bunun yerine, AKS bir kerede n düğümü (maksimum kullanılmayan değer) kordonlar ve podları aracı havuzundaki diğer düğümlere taşır. Podlar zamanlanamazsa bu durum iş yükü kesintilerine neden olabilir.
- Podların zamanlanması için daha az kaynak olduğundan, maksimum kullanılmayan kaynak sınırı, Pod Kesinti Bütçelerinin (PDB) karşılanamaması nedeniyle daha fazla hataya yol açabilir. Daha fazla bilgi için bkz. Pod Kesintisi Bütçelerinde Sorun Giderme.
- Sistem düğümü havuzlarında "maksimum kullanılabilir olmayan" ayarı yapılamaz.
AKS ayrıca yükseltmeleri bir dalgalanma düğümü kullanmamak ve düğümleri yerinde yükseltmek için yapılandırabilir. Kullanılamayan maksimum değer, mevcut düğüm havuzu düğümlerinden aynı anda kaç düğümün eş zamanlı olarak bağlanıp boşaltılabileceğini belirler. Ek kota elde edilirken veya yükseltme artışı için kapasite mümkün olmadığında yerinde yükseltme için kullanılamayan üst sınırın kullanılması önerilir.
AKS, hem tamsayı değerlerini hem de maksimum kullanılamayan için yüzde değerini kabul eder. Örneğin:
| Değer türü | Example | Description |
|---|---|---|
| Integer | 5 |
Mevcut düğümlerden beş düğüm izole edildi. |
| Yüzde | 50% |
Havuzdaki mevcut düğüm sayısının yarısı kullanılamayacak |
maxUnavailable için varsayılan değer 0 değeridir.
maxUnavailable
0 olduğunda, AKS maxSurge değerinin 0 değerinden büyük olmasını gerektirir. Daha fazla ayrıntı için bkz. AgentPoolUpgradeSettings API başvurusu.
Maksimum kullanılamayan değeri ayarlama
parametresi ile az aks nodepool add, az aks nodepool update veya az aks nodepool upgrade komutunu kullanarak, yeni veya mevcut düğüm havuzları için en fazla kullanılamayan değerleri ayarlayın. Örneğin:
# Set max unavailable for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 0 \
--max-unavailable 5
# Update max unavailable for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 0 \
--max-unavailable 5
# Set max unavailable at upgrade time
az aks nodepool upgrade \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 0 \
--max-unavailable 5
MaxUnavailable yedek seçeneği (önizleme)
Önemli
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:
Hem maxSurge hem de maxUnavailable 0'dan büyükse, AKS yükseltmeler sırasında bir geri dönüş stratejisine başvurur:
-
Tam dalgalanma denemesi: AKS önce yapılandırılan
maxSurgedeğeri kullanarak dalgalanmayı dener. - 1 düğümlük artışa geri dönme: Kota veya kapasite sınırlamaları nedeniyle tam artış mümkün değilse, AKS bunun yerine 1 düğümlük bir artış denemesi yapar (Kubernetes sürümü >= 1.35 olan aracı havuzları için).
-
Yerinde yükseltmeye geri dönün: AKS bir dalgalanma düğümü alamazsa, yenilerini eklemeden mevcut düğümleri kordonlama ve boşaltma kullanarak
maxUnavailableyerinde yükseltmeye geri döner.
Bu geri dönüş yaklaşımı, kapasite kısıtlandığında bile yükseltmelerin devam etmesini sağlarken, kaynaklar kullanılabilir olduğunda daha az kesintiye neden olan aşırı gerilim tabanlı yaklaşımı tercih eder.
MaxUnavailable geri dönüşünü kullanmak için aks-preview Azure CLI uzantısı gereklidir.
maxSurge ve maxUnavailable geri dönüş davranışı için veya bireysel olarak birlikte kullanılabilir.
Hem maksimum dalgalanma hem de maksimum kullanılamayan değerleri ayarlama
# Configure fallback: try surge first, fall back to in-place upgrade if capacity is unavailable
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--max-unavailable 3
# Update an existing node pool with fallback configuration
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--max-unavailable 3
Düğüm boşaltma zaman aşımını özelleştirin
Belirli podlarda uzun süreli iş yüklerine sahip olabilirsiniz ve çalışma süresi sırasında bunları farklı bir düğüme aktaramayabilirsiniz. Örneğin, çalıştırmayı tamamlaması gereken yoğun bellek kullanan durum bilgisi olan bir iş yükü. Bu gibi durumlarda, AKS'nin yükseltme iş akışında dikkate alacak şekilde bir düğüm boşaltma zaman aşımı yapılandırabilirsiniz.
Varsayılan düğüm boşaltma zaman aşımı değeri 30 dakikadır. Düğüm boşaltma zaman aşımı değerleri en az 5 dakika ve en fazla 24 saat olabilir.
Boşaltma zaman aşımı süresi dolduğunda ancak podlar hâlâ çalışıyorsa, yükseltme işlemi durdurulur. Sonraki PUT işlemler durdurulan yükseltmeyi sürdürür.
İpucu
Uzun süre çalışan podlar için de pod belirtiminde terminationGracePeriodSeconds öğesini yapılandırmanız gerekir.
Düğüm boşaltma zaman aşımı değerini ayarla.
parametresiyle az aks nodepool add veya az aks nodepool update komutunu kullanarak --drain-timeout yeni veya mevcut düğüm havuzları için düğüm boşaltma zaman aşımını (dakika cinsinden) ayarlayın.
# Set drain timeout for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--drain-timeout 100
# Update drain timeout for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--drain-timeout 45
Düğüm bekletme süresini özelleştirme
Bir düğümü boşaltmak ve yeniden oluşturmak ve sonraki düğüme geçmek arasında belirtilen süre boyunca bekleme süresini etkinleştirmek için, bekletme süresini ayarlayabilirsiniz. Bu bekletme süresi, bir izleme panosundan uygulama durumunu denetleme gibi yükseltme işlemi sırasında başka görevler gerçekleştirme fırsatı sunar.
Varsayılan düğüm bekletme süresi 0 dakikadır. Düğüm bekletme süresi değerleri en az 0 dakika ve en fazla 30 dakika olabilir. ıslatma süresini mümkün olduğunca kısa tutmanızı öneririz. Daha yüksek düğüm bekletme süresi, toplam yükseltme süresini artırır ve sorunların bulunmasını geciktirir.
Düğüm bekletme süresi değerini ayarla
bayrağıyla az aks nodepool add , az aks nodepool updateveya az aks nodepool upgrade komutunu kullanarak --node-soak-durationyeni veya mevcut düğüm havuzları için düğüm bekletme süresini (dakika cinsinden) ayarlayın.
# Set node soak time for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--node-soak-duration 10
# Update node soak time for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--node-soak-duration 5
# Set node soak time when upgrading an existing node pool
az aks nodepool upgrade \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--node-soak-duration 20
AKS düğümü yükseltme olaylarını görüntüleme
Sıralı yükseltme ilerleme durumunu izlemek için kubectl get events komutunu kullanarak yükseltme olaylarını görüntüleyin.
kubectl get events --field-selector reason=Drain,reason=Surge,reason=Upgrade
Yükseltme olayı sırasında örnek çıkış:
default 2m1s Normal Drain node/aks-nodepool1-12345678-vmss000001 Draining node: [aks-nodepool1-12345678-vmss000001]
default 9m22s Normal Surge node/aks-nodepool1-12345678-vmss000002 Created a surge node [aks-nodepool1-12345678-vmss000002 nodepool1] for agentpool nodepool1
default 1m45s Normal Upgrade node/aks-nodepool1-12345678-vmss000001 Soak duration 5m0s after draining node: aks-nodepool1-12345678-vmss000001
Üretim iş yükleri için önerilen AKS düğüm havuzu yükseltme ayarları
Aşağıdaki tabloda üretim iş yükleri için önerilen düğüm havuzu yükseltme ayarları özetlenmiştir:
| Setting | Tavsiye |
|---|---|
| Maksimum dalgalanma | Üretim düğümü havuzları için 33% olarak ayarlayın |
| Drenaj zaman aşımı | En uzun süre çalışan podunuzun gereksinimlerine göre yapılandırma |
| Islatma süresi | El ile doğrulamaya ihtiyacınız yoksa kısa bir süre (0-5 dakika) kullanın |
| Pod Kesinti Bütçeleri | Pod çıkarmayı denetlemek için kritik iş yükleri için PDB'leri yapılandırma |
| Sipariş yükseltmesi | Yeni sürümü doğrulamak için önce üretim dışı düğüm havuzlarını yükseltin |