ProHoster > Blog > yönetim > Kubernetes kümelerini farklı veri merkezlerine bağlama
Kubernetes kümelerini farklı veri merkezlerine bağlama
Kubernetes Hızlı Başlangıç serimize hoş geldiniz. Bu, çevrimiçi ortamda ve eğitimlerimizde aldığımız en ilginç soruların yer aldığı düzenli bir sütundur. Kubernetes uzmanı yanıtları.
Bugünün uzmanı Daniel Polenchik (Daniele Polencic). Daniel, eğitmen ve yazılım geliştiricisi olarak çalışıyor Learnk8'ler.
Çoğu zaman altyapı, özellikle kontrollü ortamlarda, farklı bölgelere kopyalanır ve dağıtılır.
Bir bölgenin kullanılamaması durumunda, kesintileri önlemek için trafik başka bir bölgeye yönlendirilir.
Kubernetes ile benzer bir strateji kullanabilir ve iş yüklerini farklı bölgelere dağıtabilirsiniz.
Ekip, bölge, ortam veya bu öğelerin birleşimi başına bir veya daha fazla kümeniz olabilir.
Kümeleriniz farklı bulutlarda ve şirket içinde barındırılabilir.
Peki bu kadar coğrafi yayılma için altyapıyı nasıl planlıyorsunuz?
Tek bir ağ üzerinden birden fazla bulut ortamı için büyük bir küme oluşturmanız mı gerekiyor?
Veya çok sayıda küçük kümeniz var ve bunları kontrol edip senkronize etmenin bir yolunu mu arıyorsunuz?
Tek bir liderlik kümesi
Tek bir ağ üzerinden tek bir küme oluşturmak o kadar kolay değil.
Bir kaza geçirdiğinizi, küme bölümleri arasındaki bağlantının kesildiğini düşünün.
Bir ana sunucunuz varsa, kaynakların yarısı ana sunucuyla iletişim kuramayacağı için yeni komutlar alamayacaktır.
Ve aynı zamanda eski yönlendirme tablolarınız var (kube-proxy yenilerini indiremez) ve ek bölme yoktur (kubelet güncelleme talep edemez).
Daha da kötüsü, Kubernetes bir düğüm göremezse onu yetim olarak işaretler ve eksik bölmeleri mevcut düğümlere dağıtır.
Sonuç olarak, iki kat daha fazla kapsülünüz var.
Her bölge için bir ana sunucu yaparsanız,etcd veritabanındaki konsensüs algoritmasında sorunlar yaşanacaktır. (yaklaşık. ed. — Aslında, etcd veritabanının mutlaka ana sunucularda bulunması gerekmez. Aynı bölgedeki ayrı bir sunucu grubunda çalıştırılabilir. Doğru, aynı zamanda kümenin başarısızlık noktasına da ulaşıyoruz. Ama hızlıca.)
vbd kullanımları sal algoritmasıDeğeri diske yazmadan önce görüşmek için.
Yani, durumun etcd'ye yazılabilmesi için örneklerin çoğunluğunun fikir birliğine varması gerekir.
Farklı bölgelerdeki üç etcd örneğinde olduğu gibi, etcd örnekleri arasındaki gecikme önemli ölçüde artarsa, bir değer üzerinde anlaşmak ve onu diske yazmak uzun zaman alır.
Bu, Kubernetes denetleyicilerine de yansır.
Denetleyici yöneticisinin değişikliği öğrenmesi ve yanıtı veritabanına yazması için daha fazla zamana ihtiyacı vardır.
Ve tek bir kontrolör değil birden fazla kontrolör olduğundan, bir zincirleme reaksiyon ortaya çıkar ve tüm küme çok yavaş çalışmaya başlar.
Şu anda tek bir küme için büyük bir ağın iyi bir örneği yoktur.
Temel olarak, geliştirici topluluğu ve SIG kümesi grubu, Kubernetes'in konteynerleri düzenlediği gibi kümeleri de nasıl düzenleyeceğini bulmaya çalışıyor.
İlk defa bir küme koleksiyonunu kube federasyon aracını kullanarak tek bir nesne olarak yönetmeye çalıştık.
Başlangıç iyiydi ama sonunda kube federasyonu tüm kaynakları desteklemediği için hiçbir zaman popüler olamadı.
Örneğin, birleşik teslimatları ve hizmetleri destekledi, ancak StatefulSets'i desteklemedi.
Ayrıca federasyon konfigürasyonu ek açıklamalar şeklinde aktarıldı ve esnek değildi.
Yalnızca ek açıklamaları kullanarak bir federasyondaki her küme için çoğaltma bölümlemesini nasıl tanımlayabileceğinizi hayal edin.
Tam bir karmaşaydı.
SIG-cluster kubefed v1'den sonra birçok çalışma yaptı ve soruna farklı bir açıdan yaklaşmaya karar verdi.
Ek açıklamalar yerine kümelere kurulu bir denetleyiciyi piyasaya sürmeye karar verdiler. Özel Kaynak Tanımları (CRD'ler) kullanılarak özelleştirilebilir.
Federasyonun parçası olacak her kaynak için üç bölümden oluşan özel bir CRD tanımınız vardır:
bir kaynağın standart tanımı, örneğin dağıtım;
bölüm placementkaynağın federasyonda nasıl dağıtılacağını tanımladığınız yer;
bölüm override, burada belirli bir kaynak için ağırlığı ve parametreleri yerleşimden geçersiz kılabilirsiniz.
Yerleştirme ve geçersiz kılma bölümleriyle birleştirilmiş teslimatın bir örneğini burada bulabilirsiniz.
Gördüğünüz gibi tedarik iki kümeye dağıtılıyor: cluster1 и cluster2.
İlk küme üç kopya sağlar ve ikincisi 5'e ayarlanır.
Replika sayısı üzerinde daha fazla kontrole ihtiyacınız varsa kubefed2, replikaların ağırlıklandırılabileceği yeni bir ReplicaSchedulingPreference nesnesi sağlar:
Booking.com'un geliştiricileri kubefed v2 üzerinde çalışmadı, ancak çeşitli kümelerde, çeşitli bölgelerde ve çeşitli bulutlarda teslimat yapan bir operatör olan Shipper'ı buldular.
Ancak kümeyle etkileşim kurmanın ve kaynakları özel tanımlara sarmanın yeni bir yolunu bulmak yerine, çoklu küme zamanlayıcı, standart Kubernetes yaşam döngüsüne yerleştirilmiştir ve bölmeler oluşturan tüm çağrıları engeller.
Oluşturulan her kapsül hemen bir kukla ile değiştirilir.
Orijinal bölme, tüm federasyonun oylamasının ardından bir yerleştirme kararının verildiği başka bir planlama döngüsünden geçer.
Son olarak kapsül hedef kümeye teslim edilir.
Sonuç olarak, hiçbir şey yapmayan, yalnızca yer kaplayan fazladan bir bölmeye sahip olursunuz.
Bunun avantajı, malzemeleri birleştirmek için yeni kaynaklar yazmanıza gerek kalmamasıdır.
Kapsül oluşturan her kaynak otomatik olarak birleştirilmeye hazırdır.
Bu ilginç çünkü birdenbire birden fazla bölgeye dağıtılan malzemeler var ve farkına bile varmadınız. Ancak bu oldukça riskli çünkü burada her şey sihire dayanıyor.
Ancak Shipper çoğunlukla teslimatların etkisini azaltmaya çalışırken, çoklu küme planlayıcı daha genel görevleri üstleniyor ve belki de toplu işler için daha uygun.
Gelişmiş bir kademeli dağıtım mekanizması yoktur.
Çoklu küme zamanlayıcı hakkında daha fazla bilgiyi şu adreste bulabilirsiniz: resmi depo sayfası.
Çoklu küme zamanlayıcının işleyişi hakkında bilgi edinmek istiyorsanız Admiralty'nin Argo ile ilginç kullanım örneği — iş akışları, etkinlikler, CI ve CD Kubernetes.
Diğer araçlar ve çözümler
Birden fazla kümeyi birbirine bağlamak ve yönetmek karmaşık bir iştir ve evrensel bir çözüm yoktur.
Bu konuyu daha ayrıntılı incelemek isterseniz işte bazı kaynaklar:
Rancher'dan Denizaltı farklı Kubernetes kümelerinin yer paylaşımlı ağlarını birbirine bağlayan bir araçtır.
Bir konteyner ağ arayüzü eklentisi olan Cilium şunları sunar: küme ağ işlevibirkaç kümeyi birleştirmenize olanak tanır
Hepsi bugün için
Sonuna kadar okuduğunuz için teşekkürler!
Birden fazla kümeyi daha verimli bir şekilde nasıl bağlayacağınızı biliyorsanız, bize söyle.
Yönteminizi bağlantılara ekleyeceğiz.
Chris Nesbitt-Smith'e özel teşekkürler (Chris Nesbitt-Smith) ve Vincent de Sme (Vincent De Smet'in) (güvenilirlik mühendisi swatmobile.io) makaleyi okuduğunuz ve federasyonun nasıl çalıştığına dair faydalı bilgiler paylaştığınız için.