Aracılığıyla paylaş


Azure Operatör Nexus Kubernetes'te kaynak yerleştirme

Operatör Nexus örnekleri müşteri şirket içinde dağıtılır. Her örnek bir veya daha fazla çıplak sunucu rafı içerir.

Bir kullanıcı Nexus Kubernetes Kümesi (NKS) oluşturduğunda, Kubernetes Denetim Düzlemi'ni ve bir veya daha fazla Aracı Havuzunu oluşturan sanal makineler (VM) için bir sayım ve stok tutma birimi (SKU) belirtir. Aracı Havuzları, müşterinin kapsayıcılı ağ işlevlerinin çalıştığı Çalışan Düğümleri kümesidir.

Nexus platformu, her NKS VM'sinin başlatıldığı çıplak sunucuya karar vermekten sorumludur.

Nexus platformu bir Nexus Kubernetes Kümesi VM'sini nasıl zamanlar?

Nexus ilk olarak NKS VM SKU'sunun tüm kaynak gereksinimlerini karşılayan olası çıplak sunucu kümesini tanımlar. Örneğin, kullanıcı aracı havuzu için bir NC_G48_224_v1 VM SKU'su belirttiyse, Nexus 48 vCPU, 224Gi RAM vb. kapasiteye sahip çıplak sunucuları toplar.

Ardından Nexus, zamanlanan Aracı Havuzu veya Denetim Düzlemi alanını inceler AvailabilityZones . Bu alan boş değilse, Nexus olası çıplak sunucu listesini yalnızca belirtilen kullanılabilirlik alanlarındaki (raflar) sunuculara filtreler. Bu davranış, zor bir zamanlama kısıtlamasıdır. Filtrelenen listede çıplak sunucu yoksa, Nexus NKS VM'sini zamanlamaz ve küme sağlayamaz.

Nexus, NKS VM'sinin yerleştirildiği olası çıplak sunucuların listesini belirledikten sonra, Nexus aşağıdaki sıralama kurallarını uyguladıktan sonra çıplak sunuculardan birini seçer:

  1. Bu NKS Kümesinden NKS VM'leri olmayan kullanılabilirlik alanlarında (raflarda) çıplak sunucuları tercih edin. Başka bir deyişle, bir NKS Kümesi için NKS VM'lerini kullanılabilirlik alanlarına yayın.

  2. Aynı NKS Kümesindeki diğer NKS VM'lerine sahip olmayan tek bir kullanılabilirlik alanı (raf) içinde çıplak sunucuları tercih edin. Başka bir deyişle, bir NKS Kümesi için NKS VM'lerini kullanılabilirlik alanı içindeki çıplak sunuculara yayın.

  3. NKS VM SKU'su NC_G48_224_v1 veya NC_P46_224_v1ise, diğer NKS Kümelerindeki NKS VM'lerini barındıran NC_G48_224_v1 NC_P46_224_v1 çıplak sunucuları tercih edin. Başka bir deyişle, farklı NKS Kümelerindeki fazladan büyük VM'leri aynı çıplak sunucularda gruplandırın. Bu kural, kullanılabilir işlem kaynaklarının parçalanma oranını azaltmak için fazladan büyük VM'leri "bin" olarak paketler.

Örnek yerleştirme senaryoları

Aşağıdaki bölümlerde, Bir İşleç Nexus ortamında NKS Kümeleri oluştururken Nexus kullanıcılarının beklemesi gereken davranış vurgulanır.

İpucu: NKS KubernetesCluster kaynağının özelliğini inceleyerek nodes.bareMetalMachineId veya Azure Portal'ın Kubernetes Küme Düğümleri görüntüsündeki "Konak" sütununu görüntüleyerek NKS VM'lerinizin hangi çıplak sunucuya zamanlandığını görebilirsiniz.

NKS VM'leri için çıplak sunucuyu gösteren ekran görüntüsü.

İşleç Nexus ortamında şu belirtimler vardır:

  • 16 çıplak sunucudan oluşan sekiz raf
  • Her çıplak sunucu iki Tekdüzen Olmayan Bellek Erişimi (NUMA) hücresi içerir
  • Her NUMA hücresi 48 CPU ve 224Gi RAM sağlar

Boş ortam

Verilen kapasiteye sahip boş bir Operatör Nexus ortamı göz önünde bulundurulduğunda, üç farklı boyutta Nexus Kubernetes Kümesi oluştururuz.

NKS Kümeleri bu belirtimlere sahiptir ve bu alıştırmanın amaçları doğrultusunda kullanıcının üç Kümeyi aşağıdaki sırayla oluşturduğunu varsayarız:

Küme A

  • Kontrol düzlemi, NC_G12_56_v1 SKU, üç sayı
  • Aracı havuzu #1, NC_P46_224_v1 SKU, 24 sayı
  • Aracı havuzu #2, NC_G6_28_v1 SKU, altı sayı

Küme B

  • Kontrol düzlemi, NC_G24_112_v1 SKU, beş sayı
  • Aracı havuzu #1, NC_P46_224_v1 SKU, 48 sayı
  • Aracı havuzu #2, NC_P22_112_v1 SKU, 24 sayı

Küme C

  • Kontrol düzlemi, NC_G12_56_v1 SKU, üç sayı
  • Aracı havuzu #1, NC_P46_224_v1 SKU, 12 sayı, AvailabilityZones = [1,4]

Boş bir İşleç Nexus ortamında A, B ve C Kümelerini başlattıktan sonra kullanıcının görmesi gerekenleri özetleyen bir tablo aşağıdadır.

Küme Havuz SKU Toplam Sayı Beklenen # Raflar Gerçek # Raflar Raf başına beklenen # VM'ler Raf başına gerçek # VM'ler
A Kontrol Düzlemi NC_G12_56_v1 3 3 3 1 1
A Aracı Havuzu #1 NC_P46_224_v1 24 8 8 3 3
A Aracı Havuzu #2 NC_G6_28_v1 6 6 6 1 1
K Kontrol Düzlemi NC_G24_112_v1 5 5 5 1 1
K Aracı Havuzu #1 NC_P46_224_v1 48 8 8 6 6
K Aracı Havuzu #2 NC_P22_112_v1 24 8 8 3 3
C Kontrol Düzlemi NC_G12_56_v1 3 3 3 1 1
C Aracı Havuzu #1 NC_P46_224_v1 12 2 2 6 6

Her havuz için VM'lerin sekize kadar rafa yayılması için sekiz raf vardır. Sekizden fazla VM'ye sahip havuzlar, farklı çıplak sunuculara yayılmış raf başına birden çok VM gerektirir.

Küme C Aracı Havuzu #1'de AvailabilityZones [1, 4] ile kısıtlanmış 12 VM vardır, bu nedenle 12 çıplak sunucuda 12 VM vardır ve her biri 1 ve 4 raflarında altı tanedir.

Farklı kümelerden gelen çok büyük VM'ler (NC_P46_224_v1SKU), aynı çıplak sunuculara yerleştirilir (bkz. Nexus platformunun Nexus Kubernetes Küme VM'sini zamanlama konusunda 3. kural).

Aşağıda, kullanıcının A, B ve C Kümelerini boş bir ortama dağıtdıktan sonra görebileceği bir düzenin görselleştirmesi yer alır.

İlk dağıtımdan sonra vm'lerin olası düzenini gösteren diyagram.

Yarı dolu ortam

Şimdi hedef ortam yarı dolu olduğunda başka bir NKS Kümesi başlatma örneğini inceleyeceğiz. A, B ve C Kümeleri hedef ortama dağıtıldıktan sonra hedef ortam yarı dolu olur.

Küme D aşağıdaki belirtimlere sahiptir:

  • Kontrol düzlemi, NC_G24_112_v1 SKU, beş sayı
  • Aracı havuzu #1, NC_P46_224_v1 SKU, 24 sayı, AvailabilityZones = [7,8]
  • Aracı havuzu #2, NC_P22_112_v1 SKU, 24 sayı

Aşağıda, A, B ve C Kümelerini başlattıktan sonra var olan yarı dolu Operatör Nexus ortamında Küme D'yi başlattıktan sonra kullanıcının görmesi gerekenleri özetleyen bir tablo yer alır.

Küme Havuz SKU Toplam Sayı Beklenen # Raflar Gerçek # Raflar Raf başına beklenen # VM'ler Raf başına gerçek # VM'ler
D Kontrol Düzlemi NC_G12_56_v1 5 5 5 1 1
D Aracı Havuzu #1 NC_P46_224_v1 24 2 2 12 12
D Aracı Havuzu #2 NC_P22_112_v1 24 8 8 3 3

Küme D Aracı Havuzu #1'de AvailabilityZones [7, 8] ile kısıtlanmış 12 VM vardır, bu nedenle 7 ve 8 rafların her birinde altı tane olmak üzere 12 çıplak sunucuda 12 VM'ye sahiptir. Bu VM'ler, farklı kümelerden gelen fazla büyük VM'leri aynı çıplak sunuculara gruplandıran sıralama kuralı nedeniyle diğer kümelerden fazladan büyük VM'leri de barındıran çıplak sunuculara iner.

Bir Küme D denetim düzlemi VM'sinin raf 7 veya 8'e inmiş olması, büyük olasılıkla bir Küme D Aracı Havuzu #1 VM'sinin küme D denetim düzlemi VM'sinin aynı çıplak sunucuya inmiş olmasıdır. Bu davranış, Aracı Havuzu #1'in 7 ve 8 raflarına "sabitlenmiş" olmasından kaynaklanır. Bu raflardaki kapasite kısıtlamaları zamanlayıcının aynı NKS Kümesinden bir denetim düzlemi VM'sini ve Aracı Havuzu #1 VM'sini birlikte kullanmasına neden olur.

Küme D'nin Aracı Havuzu #2, sekiz rafın her birinde farklı çıplak sunucularda üç VM'ye sahiptir. Kapasite kısıtlamaları, Küme D'nin Aracı Havuzu #1'in 7 ve 8 raflarına sabitlenmesinden kaynaklanır. Bu nedenle, Küme D'nin Aracı Havuzu #1 ve Aracı Havuzu #2'deki VM'ler, 7 ve 8 raflarındaki aynı çıplak sunucularda birlikte bulunur.

Aşağıda, hedef ortama Küme D dağıtıldıktan sonra kullanıcının görebileceği bir düzenin görselleştirmesi yer alır.

İkinci dağıtımdan sonra vm'lerin olası düzenini gösteren diyagram.

Neredeyse tam ortam

Örnek hedef ortamımızda sekiz rafın dördü kapasiteye yakındır. Şimdi başka bir NKS Kümesi başlatmayı deneyelim.

Küme E aşağıdaki belirtimlere sahiptir:

  • Kontrol düzlemi, NC_G24_112_v1 SKU, beş sayı
  • Aracı havuzu #1, NC_P46_224_v1 SKU, 32 sayı

Aşağıda, hedef ortamda Küme E'yi başlattıktan sonra kullanıcının görmesi gerekenleri özetleyen bir tablo yer alır.

Küme Havuz SKU Toplam Sayı Beklenen # Raflar Gerçek # Raflar Raf başına beklenen # VM'ler Raf başına gerçek # VM'ler
E Kontrol Düzlemi NC_G24_112_v1 5 5 5 1 1
E Aracı Havuzu #1 NC_P46_224_v1 32 8 8 4 3, 4 veya 5

Küme E'nin Aracı Havuzu #1 sekiz rafa eşit olmayan şekilde yayılır. 7 ve 8 raflarında Beklenen dört NKS VM yerine Aracı Havuzu #1'den üç NKS VM'sine sahip olur çünkü Küme A ile D arasında zamanlandıktan sonra bu raflardaki fazla büyük SKU VM'leri için artık kapasite yoktur. 7 ve 8 rafları, Aracı Havuzu #1'deki dördüncü fazla büyük SKU için kapasiteye sahip olmadığından, en az kullanılan iki rafa beş NKS VM inecektir. Örneğimizde bu en az kullanılan raflar 3 ve 6 raflarıydı.

Aşağıda, hedef ortama E Kümesi dağıtıldıktan sonra kullanıcının görebileceği bir düzenin görselleştirmesi yer alır.

Üçüncü dağıtımdan sonra vm'lerin olası düzenini gösteren diyagram.

Çalışma zamanı yükseltmesi sırasında yerleştirme

Nisan 2024 itibarıyla (Ağ Bulutu 2304.1 sürümü), çalışma zamanı yükseltmeleri rafa göre bir strateji kullanılarak gerçekleştirilir. Raf 1'deki çıplak sunucuların tümü aynı anda yeniden oluşturulur. Tüm çıplak sunucular başarıyla yeniden başlatılana kadar yükseltme işlemi duraklatılır ve Nexus'a iş yüklerini almaya hazır olduklarını söyler.

Not

Operatör Nexus'a bir raftaki çıplak sunucuların yalnızca bir kısmını aynı anda yeniden oluşturmasını bildirmek mümkündür, ancak varsayılan olarak bir raftaki tüm çıplak sunucuları paralel olarak yeniden oluşturmaktır.

Tek bir çıplak sunucu yeniden yapılandırıldığında, tüm NKS VM'leri de dahil olmak üzere bu çıplak sunucuda çalışan tüm iş yükleri güç ve bağlantı kaybına neden olur. NKS VM'lerinde çalışan iş yükü kapsayıcıları da güç ve bağlantı kaybına neden olur. Bir dakika sonra bu iş yükü kapsayıcılarına ulaşılamadıktan sonra NKS Kümesinin Kubernetes Denetim Düzlemi ilgili Podları iyi durumda değil olarak işaretler. Podlar bir Dağıtımın veya StatefulSet'in üyesiyse, NKS Kümesinin Kubernetes Denetim Düzlemi, Dağıtım veya StatefulSet'in gözlemlenen çoğaltma sayısını istenen çoğaltma sayısına geri getirmek için yeni Podları başlatmaya çalışır.

Yeni Podlar yalnızca kalan iyi durumdaki NKS VM'lerinde Pod için kullanılabilir kapasite varsa başlatılır. Nisan 2024 itibarıyla (Ağ Bulutu 2304.1 sürümü), yeniden tasarlanan çıplak sunucuda bulunan NKS VM'lerinin yerini alacak yeni NKS VM'leri oluşturulmaz.

Çıplak sunucu başarıyla yeniden yapılandırıldıktan ve yeni NKS VM'lerini kabul edebildikten sonra, başlangıçta aynı çıplak sunucuda bulunan NKS VM'leri yeni yeniden tasarlanan çıplak sunucuda yeniden başlatır. İş yükü kapsayıcıları bu NKS VM'lerine zamanlanabilir ve çıplak sunucuda bulunan NKS VM'lerinde Pod'ları olan Dağıtımları veya StatefulSet'leri geri yükleme olasılığı vardır.

Not

Bu davranış, kullanıcıya NKS VM'leri çıplak sunucudan "taşınmamış" gibi görünebilir. Aslında, yeniden oluşturmadan önce olduğu gibi aynı çıplak sunucu adını koruyan yeni yeniden tasarlanan çıplak sunucuda aynı NKS VM'sinin yeni bir örneği başlatılmış olabilir.

En iyi yöntemler

Operatör Nexus ile çalışırken aşağıdaki en iyi yöntemleri göz önünde bulundurun.

  • Aracı Havuzu belirtmekten AvailabilityZones kaçının.
  • Daha küçük olanlardan önce daha büyük NKS Kümeleri başlatın.
  • VM SKU boyutunu küçültmeden önce Aracı Havuzunun Sayısını azaltın.

Aracı Havuzu için AvailabilityZones belirtmekten kaçının

Yukarıdaki yerleştirme senaryolarından da anlayabileceğiniz gibi, aracı havuzu belirtmek AvailabilityZones , aynı NKS Kümesindeki NKS VM'lerinin aynı çıplak sunucuda sonlandırılmasının birincil nedenidir. belirterek AvailabilityZonesAracı Havuzunu bir raf alt kümesine "sabitler" ve bu nedenle aynı NKS Kümesindeki diğer NKS Kümeleri ve diğer Aracı Havuzu VM'leri için bu raf kümesindeki olası çıplak sunucu sayısını sınırlarsınız.

Bu nedenle, ilk en iyi uygulamamız bir Aracı Havuzu belirtmekten AvailabilityZones kaçınmaktır. Bir Aracı Havuzunu bir Kullanılabilirlik Alanları kümesine sabitlemeniz gerekiyorsa, oluşabilecek dengesizliği en aza indirmek için bu kümeyi mümkün olduğunca büyük yapın.

Bu en iyi uygulamanın tek istisnası, bir aracı havuzunda yalnızca iki veya üç VM içeren bir senaryonuz olmasıdır. Bu aracı havuzunun [1,3,5,7] [0,2,4,6] çalışma zamanı yükseltmeleri sırasında kullanılabilirliği artırmak için veya olarak ayarlamayı AvailabilityZones düşünebilirsiniz.

Daha küçük kümelerden önce daha büyük NKS Kümelerini başlatma

Nisan 2024 ve Ağ Bulutu 2403.1 sürümü itibarıyla NKS Kümeleri oluşturuldukları sırayla zamanlanır. Hedef ortamınızı en verimli şekilde paketlemek için, daha küçük olanlardan önce daha büyük NKS Kümeleri oluşturmanızı öneririz. Benzer şekilde, daha küçük olanlardan önce daha büyük Aracı Havuzları zamanlamanızı öneririz.

Bu öneri, fazla büyük NC_G48_224_v1 veya NC_P46_224_v1 SKU kullanan Aracı Havuzları için önemlidir. Bu fazla büyük SKU VM'lerinin en büyük sayısıyla Aracı Havuzlarını zamanlamak, diğer NKS Kümelerindeki Aracı Havuzlarından gelen diğer fazla büyük SKU VM'lerinin üzerinde birleşebileceği daha büyük bir çıplak sunucu kümesi oluşturur.

VM SKU boyutunu küçültmeden önce Aracı Havuzunun sayısını azaltın

NKS Kümesi veya Aracı Havuzu başlatırken kapasite kısıtlamalarıyla karşılaşırsanız VM SKU boyutunu ayarlamadan önce Aracı Havuzu Sayısını azaltın. Örneğin, VM SKU boyutu NC_P46_224_v1 ve Sayısı 24 olan aracı havuzuna sahip bir NKS Kümesi oluşturmayı dener ve yetersiz kaynak nedeniyle NKS Kümesini sağlama hatasını geri alırsanız, VM SKU Boyutu'nu NC_P36_168_v1 kullanmak ve 24 Sayısı ile devam etmek isteyebilirsiniz. Ancak, iş yükü VM'lerinin çıplak sunucudaki tek bir NUMA hücresine hizalanması gereksinimleri nedeniyle, aynı isteğin benzer yetersiz kaynak hatalarıyla sonuçlanması olasıdır. VM SKU boyutunu küçültmek yerine Aracı Havuzu Sayısını 20'ye düşürmeyi göz önünde bulundurun. İsteğinizin hedef ortamın kaynak kapasitesine sığma olasılığı daha yüksektir ve genel dağıtımınızda VM SKU'sunu küçültüp küçültmediğinize göre daha fazla CPU çekirdeği vardır.

Bellek için iyileştirilmiş VM SKU'ları

NC_E94_448_v1 fiziksel makinenin tüm müşteri tarafından sağlanan kaynaklarını kullanır. NC_E70_336_v1 müşteri tarafından sağlanan kaynakların %75'ini tüketir, ancak bunun tam olarak bir dolu ve bir buçuk NUMA hücresi olacağı garanti değildir. Bu, NC_G24_112_v1, NC_E70_336_v1 VM'sinin NUMA hücreleri arasında nasıl zamanlandığına bağlı olarak NC_E70_336_v1 çalıştıran bir makinede zamanlayamayabilir veya zamanlayamayabilir.