Kubernetes 10 yaşında: Kalıcı depolamada ustalaşmanın uzun yolu


Kubernetes 10 yaşında! Pazar lideri konteyner orkestrasyon platformunun 10. doğum günü 2024’ün ortalarında kutlanıyor.

Red Hat’in baş yazılım mühendisi Jan Safranek, Docker ve ardından Kubernetes’in sahneye çıkışı ve şirketler ile geliştiricilerin buna kalıcı depolama sağlamanın yollarını aramasıyla başlayan yoğun faaliyet sırasında oradaydı.

Safranek, Pets Sets ve StatefulSets ortaya çıktığında oradaydı ve dağıtım ve konteyner pod’larını ölçeklendirerek bu sorunu ele almaya yardımcı oldu. Daha sonra Safranek, uygulamaları ve bileşenlerini yönetmek için yazılım uzantıları sağlayan CSI (Konteyner Depolama Arayüzü) sürücülerinin ve Operatörlerinin geliştirilmesinde yer aldı.

Kubernetes’in ilk on yılını, Kubernetes’i geliştirmeye yardımcı olan ve Kubernetes Operatörlerinin kullanımı da dahil olmak üzere depolama ve veri korumasındaki zorlukların üstesinden gelmeye çalışan mühendislerle yaptığımız bir dizi röportajla kutluyoruz; yapay zeka (AI) iş yüklerinin karakterize ettiği bir geleceğe doğru ilerliyoruz.

Kubernetes ilk piyasaya sürüldüğünde pazar nasıldı?

Jan Safranek: Dünya çıplak metal veya ağır sanal makineler tarafından yönetiliyordu. Docker konteynerleri çok hızlı bir şekilde popüler oldu, ancak etrafta hiçbir araç olmadığı için kimse onları nasıl yöneteceğini bilmiyordu. Kubernetes, uygulamaları hafif ve izole parçalar halinde çalıştırma konusunda yepyeni bir konsept getirdi.

Kubernetes etrafındaki veri altyapısı üzerindeki çalışmalara nasıl dahil oldunuz?

Safranek: Benim için kolaydı. Red Hat’te Linux depolama yönetimi araçları üzerinde çalışıyordum ve Kubernetes’e yardımcı olmak için yeni bir ekibin kurulduğunu gördüm. Bunun hakkında hiçbir şey bilmiyordum ama havalı görünüyordu, bu yüzden oraya başvurdum.

Kubernetes’in pazarda lider konumda olduğunu nasıl fark ettiniz?

Safranek: 2016’da Seattle’da katıldığım ilk KubeCon’du. Ondan önce ilginç şeyler yapan mühendis arkadaşlarımla tanıştım. Ama orada altyapılarının önemli bölümlerini Kubernetes üzerinde çalıştıran gerçek işletmelerle tanıştım.

Kubernetes’e baktığınızda veri ve depolamaya nasıl yaklaştınız?

Safranek: Kubernetes’e katıldığımda, insanlar konteynerlerin doğası gereği geçici olsa bile, daha büyük resimde kalıcı bir şeyin olması gerektiğini fark ettiler. Temel API’ler [application programming interfaces] ilk volume eklentileriyle bile zaten oradaydı, ancak kimse onları nasıl kullanacağını gerçekten bilmiyordu. PetSets geldi ve daha sonra StatefulSets’e dönüştü, ancak buna rağmen Kubernetes’te yoğun veri odaklı uygulamaları çalıştırmak hala zor olabilir.

Kubernetes ile veri ve depolama konusunda ilk olarak hangi sorunlar ortaya çıktı?

Safranek: Kubernetes’te halihazırda var olan şeyleri ve nasıl kullanılacağını araştırmaya başladım. Kod ve genel süreçle tanışmak için birkaç örnek ve uçtan uca test ekledim. O zamanlar çok kolaydı. O kadar hızlı ilerlediğini hatırlıyorum ki çekme isteklerimi güncel tutmak çok zordu.

Çözmemiz gereken ilk gerçek sorunlar, PetSets/StatefulSets tarafından çözülen durumlu bir uygulamanın nasıl çalıştırılacağı ve Kubernetes dışındaki depolama sistemlerinden verilerin nasıl tüketileceğiydi. İlk olarak bulut tabanlı depolama için ağaç içi kodla ve NFS ve iSCSI gibi geleneksel depolama için birkaç genel eklentiyle başladık.

Ne değişmeliydi?

Safranek: Daha fazla benimsenmeyle birlikte, daha sağlam kodlara ihtiyacımız olduğunu hemen fark ettik. İlk denetleyicilerimiz çok kırılgan olduğundan, istikrarlı ve tutarlı davranış sağlamak için her şeyi yeniden yazmak zorunda kaldık. Ancak, hepsi yalnızca küçük hata düzeltmeleriyle yıllarca hayatta kaldığı için orada hala iyileştirmeler için yer var.

Ayrıca, giderek daha fazla depolama satıcısı depolama arka uçlarını Kubernetes ile entegre etmek istedikçe, birim eklentileri için genel bir uzantı arayüzüne ihtiyacımız olduğunu öğrendik. İlk olarak, kullanımı çok zahmetli olan FlexVolumes’u geliştirdik, ancak bugün Kubernetes’in ana depolama arayüzü olan CSI’ı öğrendik ve oluşturduk. Son derece başarılı oldu ve gönüllü olarak kendilerini listeleyen en az 130 sürücü ve bilmediğimiz daha kaç tane sürücü var.

Ve Kubernetes benimsenip kritik altyapıyı çalıştırmaya başladığında, onu bozmadığımızdan emin olmamız gerekiyordu. Şimdi yeni bir özellik sunmak veya mevcut olanı değiştirmek çok daha zor, çünkü sürümlerimizin istikrarını sağlamak için sayısız inceleme ve onay gerekiyor.

Kubernetes Operatörleri dünyasına nasıl dahil oldunuz?

Safranek: Red Hat, Operatörlerin ilk benimseyenlerinden biriydi. Başlangıçlar oldukça hareketliydi. Ben şahsen birkaç kötü Operatörle başladım, ancak kısa sürede iyi Operatörler yazmayı öğrendim. Yazılım geliştirmedeki her şeyde olduğu gibi, her şey pratikle gelir. Ayrıca, bugün her zamankinden daha fazla dokümantasyon var.

Operatörlerin veri ve depolama konusunda başarılı olmasını sağlayan neler yaşandı?

Safranek: Burada karışık deneyimlerim var. Birçok Operatör Helm grafiklerinden daha iyi değil [which describe a related set of Kubernetes resources]. Ancak iyi olanlar, işletmelerin kalıcı veriye ihtiyaç duyan uygulamalarla ilgili sıkıntılarını hafifletmelerine yardımcı oldu. Tüm köşe durumları kapsandığında, durumlu bir uygulamayı doğru şekilde çalıştırmak hala zordur.

Bu, daha fazla bulut yerel yaklaşımını nasıl destekledi? Sonuçları nelerdi?

Safranek: Bahsettiğim gibi, DevOps’un işlerini yürütecek harika bir uygulamaya odaklanırken, veritabanını veya diğer durumlu iş yüklerini çalıştırmak için üçüncü taraf bir Operatöre güvenmesi daha kolaydır.

Kubernetes artık 10 yaşında. Siz bugün bunu nasıl değerlendiriyorsunuz?

Safranek: Eh, bir yolculuktu. Herkesin her şeyi bu dünyayı veya en azından bazı çok önemli parçalarını çalışır durumda tutan kaya gibi kararlı bir yazılıma yeniden yazabildiği başlangıçlardan, sıkıcı bir altyapı parçasına dönüştüğü noktaya.

Veri ve depolama söz konusu olduğunda Kubernetes’te hala hangi sorunlar yaşanıyor?

Safranek: Tüm konteynerler doğası gereği geçicidir ve kısa ömürlü olabilir. Kubernetes bunları uzun süre çalıştırmayı deneyebilir, ancak bunları silmeye ihtiyaç duyduğunda siler. Kubernetes, mutlak gerekli konteyner miktarını çalışır durumda tutmak için PodDisruptionBudget gibi bazı API’ler sunar, ancak tüm durum bilgisi uygulamaları bir miktar kesintiye güvenmelidir. Bu yeni bir kavramdır ve bunu doğru şekilde ele almak hâlâ zordur.

Paylaşacağınız başka anekdotlar veya bilgiler var mı?

Safranek: Kubernetes üzerinde çalışmanın en güzel yanı çok zeki insanlarla tanışmam, çok şey öğrenmem ve hâlâ öğrenmeye devam etmem oldu.



Source link