Kubernetes macerası Dailymotion: bulutlarda ve şirket içinde altyapı oluşturma

Kubernetes macerası Dailymotion: bulutlarda ve şirket içinde altyapı oluşturma

Not. tercüme: Dailymotion dünyanın en büyük video barındırma hizmetlerinden biridir ve bu nedenle önemli bir Kubernetes kullanıcısıdır. Bu materyalde sistem mimarı David Donchez, şirketin K8'leri temel alan üretim platformunu oluşturmanın sonuçlarını paylaşıyor; bu süreç, GKE'de bulut kurulumuyla başladı ve hibrit bir çözüm olarak sona erdi; bu, daha iyi yanıt süreleri ve altyapı maliyetlerinden tasarruf sağladı.

Çekirdek API'yi Yeniden Oluşturmaya Karar Verme Dailymotion üç yıl önce uygulamaları barındırmanın daha etkili bir yolunu geliştirmek ve bunu kolaylaştırmak istedik geliştirme ve üretim süreçleri. Bu amaçla konteyner orkestrasyon platformu kullanmaya karar verdik ve doğal olarak Kubernetes'i seçtik.

Kubernetes'e dayalı olarak kendi platformunuzu oluşturmaya neden değer?

Google Cloud'u kullanarak çok kısa sürede üretim düzeyinde API

'2016 yazı

Üç yıl önce Dailymotion tarafından satın alındıktan hemen sonra Vivendiolarak mühendislik ekiplerimiz tek bir küresel hedefe odaklanmıştır: tamamen yeni bir Dailymotion ürünü yaratmak.

Konteyner analizlerimize, düzenleme çözümlerimize ve geçmiş deneyimlerimize dayanarak Kubernetes'in doğru seçim olduğuna inanıyoruz. Bazı geliştiricilerin temel kavramları zaten anlaması ve bunu nasıl kullanacaklarını bilmesi altyapı dönüşümü için büyük bir avantajdı.

Altyapı açısından bakıldığında, yeni tür bulutta yerel uygulamaları barındırmak için güçlü ve esnek bir sistem gerekiyordu. Mümkün olan en sağlam şirket içi platformu gönül rahatlığıyla oluşturabilmek için yolculuğumuzun başında bulutta kalmayı seçtik. Er ya da geç kendi veri merkezlerimize taşınıp hibrit bir strateji uygulayacağımızı bilmemize rağmen uygulamalarımızı Google Kubernetes Engine kullanarak dağıtmaya karar verdik.

Neden GKE'yi seçtiniz?

Bu seçimi esas olarak teknik nedenlerden dolayı yaptık. Ayrıca şirketin iş ihtiyaçlarını karşılayan altyapının hızlı bir şekilde sağlanması gerekiyordu. Uygulama barındırma konusunda coğrafi dağılım, ölçeklenebilirlik, hata toleransı gibi bazı gereksinimlerimiz vardı.

Kubernetes macerası Dailymotion: bulutlarda ve şirket içinde altyapı oluşturma
Dailymotion'daki GKE kümeleri

Dailymotion dünya çapında kullanılabilen bir video platformu olduğundan, bekleme süresini azaltarak hizmetin kalitesini gerçekten artırmak istedik. (Gecikme). Daha erken API'miz yalnızca Paris'te mevcuttu ve bu da optimalin altındaydı. Sadece Avrupa'da değil, Asya ve ABD'de de uygulamalara ev sahipliği yapabilmek istedim.

Gecikmeye karşı bu hassasiyet, platformun ağ mimarisi üzerinde ciddi çalışmaların yapılması gerektiği anlamına geliyordu. Çoğu bulut hizmeti, sizi her bölgede kendi ağınızı oluşturmaya ve ardından bunları bir VPN veya bir tür yönetilen hizmet aracılığıyla bağlamaya zorlarken, Google Cloud, tüm Google bölgelerini kapsayan tamamen yönlendirilebilir tek bir ağ oluşturmanıza olanak tanıdı. Bu da sistemin işleyişi ve verimliliği açısından büyük bir artıdır.

Ayrıca Google Cloud'un ağ hizmetleri ve yük dengeleyicileri mükemmel bir iş çıkarıyor. Bunlar yalnızca her bölgeden isteğe bağlı genel IP adreslerini kullanmanıza izin verir ve harika BGP protokolü gerisini halleder (yani kullanıcıları en yakın kümeye yönlendirmek). Açıkçası herhangi bir arıza durumunda trafik hiçbir insan müdahalesine gerek kalmadan otomatik olarak başka bir bölgeye gidecek.

Kubernetes macerası Dailymotion: bulutlarda ve şirket içinde altyapı oluşturma
Google Yük Dengelemeyi İzleme

Platformumuz aynı zamanda GPU'ları da yoğun şekilde kullanıyor. Google Cloud, bunları doğrudan Kubernetes kümelerinde çok etkili bir şekilde kullanmanıza olanak tanır.

O zamanlar altyapı ekibi öncelikle fiziksel sunuculara dağıtılan eski yığına odaklanıyordu. Bu nedenle, yönetilen bir hizmetin (Kubernetes ana sunucuları dahil) kullanılması gereksinimlerimizi karşıladı ve ekipleri yerel kümelerle çalışacak şekilde eğitmemize olanak sağladı.

Bunun sonucunda işe başladıktan sadece 6 ay sonra Google Cloud altyapısı üzerinden üretim trafiğini almaya başlayabildik.

Ancak bir takım avantajlara rağmen, bir bulut sağlayıcıyla çalışmak, yüke bağlı olarak artabilen belirli maliyetlerle ilişkilidir. Bu nedenle, gelecekte şirket içinde uygulamayı umarak kullandığımız her yönetilen hizmeti dikkatle analiz ettik. Aslında yerel kümelenmelerin uygulanmasına 2016 yılı sonunda başlandı ve aynı zamanda hibrit stratejisi de başlatıldı.

Yerel konteyner düzenleme platformu Dailymotion'un lansmanı

Sonbahar 2016

Tüm yığının üretime hazır olduğu ve API üzerinde çalıştığı koşullarda devam ettiArtık bölgesel kümelenmelere odaklanmanın zamanı gelmişti.

O dönemde kullanıcılar her ay 3 milyardan fazla video izliyordu. Elbette uzun yıllardır kendi kapsamlı İçerik Dağıtım Ağımıza sahibiz. Biz de bu durumdan faydalanıp Kubernetes kümelerini mevcut veri merkezlerine dağıtmak istedik.

Dailymotion'un altyapısı altı veri merkezinde 2,5 binin üzerinde sunucudan oluşuyordu. Hepsi Saltstack kullanılarak yapılandırılmıştır. Master ve işçi düğümlerinin yanı sıra bir vb kümesi oluşturmak için gerekli tüm tarifleri hazırlamaya başladık.

Kubernetes macerası Dailymotion: bulutlarda ve şirket içinde altyapı oluşturma

Ağ kısmı

Ağımız tamamen yönlendirildi. Her sunucu, Exabgp'yi kullanarak IP'sini ağda duyurur. Birkaç ağ eklentisini karşılaştırdık ve tüm ihtiyaçları karşılayan tek eklenti (kullanılan L3 yaklaşımı nedeniyle) patiska. Mevcut ağ altyapısı modeline mükemmel uyum sağlar.

Mevcut tüm altyapı unsurlarını kullanmak istediğimiz için yapmamız gereken ilk şey, kendi bünyemizde oluşturduğumuz ağ yardımcı programını (tüm sunucularda kullanılır) bulmaktı: bunu, Kubernetes düğümleriyle ağdaki IP adresi aralıklarının reklamını yapmak için kullanmak. Calico'nun bölmelere IP adresleri atamasına izin verdik, ancak bunu ağ ekipmanındaki BGP oturumları için kullanmadık ve hâlâ da kullanmıyoruz. Aslında yönlendirme, Calico tarafından kullanılan alt ağların tanıtımını yapan Exabgp tarafından gerçekleştirilir. Bu, dahili ağdan (ve özellikle yük dengeleyicilerden) herhangi bir bölmeye erişmemizi sağlar.

Giriş trafiğini nasıl yönetiriz?

Gelen isteklerin istenilen hizmete yönlendirilmesi için Kubernetes ingress kaynakları ile entegrasyonu nedeniyle Ingress Controller kullanılmasına karar verildi.

Üç yıl önce, nginx-ingress-controller en olgun denetleyiciydi: Nginx uzun süredir ortalıktaydı ve kararlılığı ve performansıyla biliniyordu.

Sistemimizde denetleyicileri özel 10 Gigabit blade sunuculara yerleştirmeye karar verdik. Her denetleyici, ilgili kümenin kube-apserver uç noktasına bağlandı. Bu sunucular ayrıca genel veya özel IP adreslerinin reklamını yapmak için Exabgp'yi kullandı. Ağ topolojimiz, NodePort gibi bir hizmet kullanmadan tüm trafiği doğrudan bölmelere yönlendirmek için bu denetleyicilerden gelen BGP'yi kullanmamıza olanak tanır. Bu yaklaşım, düğümler arasındaki yatay trafiğin önlenmesine yardımcı olur ve verimliliği artırır.

Kubernetes macerası Dailymotion: bulutlarda ve şirket içinde altyapı oluşturma
İnternetten kapsüllere trafik hareketi

Artık hibrit platformumuzu anladığımıza göre trafik taşıma sürecini daha derinlemesine inceleyebiliriz.

Trafiğin Google Cloud'dan Dailymotion altyapısına taşınması

Sonbahar 2018

Yaklaşık iki yıl süren oluşturma, test etme ve ayarlamalardan sonra nihayet trafiğin bir kısmını kabul etmeye hazır tam bir Kubernetes yığınına sahibiz.

Kubernetes macerası Dailymotion: bulutlarda ve şirket içinde altyapı oluşturma

Mevcut yönlendirme stratejisi oldukça basittir ancak ihtiyaçlara uygundur. Genel IP'lere (Google Cloud ve Dailymotion'da) ek olarak AWS Route 53, politikaları belirlemek ve kullanıcıları tercih ettiğimiz kümeye yönlendirmek için kullanılır.

Kubernetes macerası Dailymotion: bulutlarda ve şirket içinde altyapı oluşturma
Route 53'ü kullanan örnek yönlendirme politikası

Google Cloud ile tüm kümelerde tek bir IP paylaştığımız ve kullanıcı en yakın GKE kümesine yönlendirildiği için bu kolaydır. Kümelerimizin IP'leri farklı olduğundan teknoloji de farklıdır.

Geçiş sırasında bölgesel talepleri uygun kümelere yönlendirmeye çalıştık ve bu yaklaşımın faydalarını değerlendirdik.

GKE kümelerimiz Özel Metrikler kullanılarak otomatik ölçeklendirme yapacak şekilde yapılandırıldığından, ölçekleri gelen trafiğe göre artırılır/azaltılır.

Normal modda tüm bölgesel trafik yerel kümeye yönlendirilir ve GKE, sorun yaşanması durumunda yedek görevi görür (sağlık kontrolleri Route 53 üzerinden gerçekleştirilir).

...

Gelecekte, kullanıcılar için erişilebilirliği sürekli geliştiren özerk bir hibrit stratejiye ulaşmak için yönlendirme politikalarını tamamen otomatikleştirmek istiyoruz. Artı tarafta, bulut maliyetleri önemli ölçüde azaldı ve API yanıt süreleri bile kısaltıldı. Ortaya çıkan bulut platformuna güveniyoruz ve gerekirse daha fazla trafiği ona yönlendirmeye hazırız.

çevirmenden PS

Ayrıca Kubernetes hakkında yeni bir Dailymotion gönderisi de ilginizi çekebilir. Birçok Kubernetes kümesinde Helm ile uygulamaların dağıtımına adanmıştır ve yayınlandı yaklaşık bir ay önce.

Blogumuzda da okuyun:

Kaynak: habr.com

Yorum ekle