Kubernetes w wieku 10 lat: Długa droga do opanowania trwałego przechowywania danych

cyberfeed.pl 2 miesięcy temu


Kubernetes ma 10 lat! W połowie 2024 roku przypadają 10. urodziny wiodąca na rynku platforma do orkiestracji kontenerów.

Jan Safranek, główny inżynier systemu w Red Hat, był obecny podczas gorączki wydarzeń, która doprowadziła do gwałtownego wzrostu popularności Dockera i Kubernetesa, a firmy i deweloperzy zmagali się z problemem zapewnienia im trwałego miejsca do przechowywania danych.

Safranek był obecny, gdy pojawiły się Pets Sets i StatefulSets, i pomógł rozwiązać ten problem, zarządzając wdrażaniem i skalowaniem kontenerów. Następnie Safranek był zaangażowany w rozwój Sterowniki CSI (Container Storage Interface) i operatorzy dostarczający rozszerzenia systemu umożliwiające zarządzanie aplikacjami i ich komponentami.

Obchodzimy pierwszą dekadę Kubernetesa serią wywiadów z inżynierami, którzy pomogli w opracowaniu Kubernetesa i zajęli się wyzwania w zakresie przechowywania i ochrony danych – w tym wykorzystanie operatorów Kubernetes – ponieważ z niecierpliwością oczekujemy przyszłości charakteryzującej się sztuczna inteligencja (AI) obciążenia.

Jak wyglądał rynek, gdy Kubernetes po raz pierwszy wystartował?

Jan Safranek:Świat zdominowany był przez gołe metalowe lub ciężkie maszyny wirtualne. Kontenery Dockera bardzo gwałtownie zyskały popularność, ale nikt nie wiedział, jak nimi zarządzać, ponieważ nie było żadnych narzędzi. Kubernetes wprowadził zupełnie nową koncepcję uruchamiania aplikacji w lekkich i odizolowanych blokach.

Jak zaczęła się Twoja przygoda z pracą nad infrastrukturą danych opartą na Kubernetesie?

Szafranek: Dla mnie było łatwo. Pracowałem nad narzędziami do zarządzania pamięcią masową Linux tutaj w Red Hat i zobaczyłem, iż powstaje nowy zespół, który ma pomóc w Kubernetes. Nic o tym nie wiedziałem, ale wyglądało fajnie, więc złożyłem tam podanie.

Jak zorientowałeś się, iż Kubernetes jest liderem na rynku?

Szafranek:To było na pierwszym KubeConie, w którym uczestniczyłem w Seattle w 2016 roku. Wcześniej poznałem kolegów inżynierów, którzy robili interesujące rzeczy. Ale tam poznałem prawdziwe firmy, które prowadziły ważne części swojej działalności. infrastruktura na Kubernetes.

Kiedy przyglądałeś się Kubernetesowi, jakie było Twoje podejście do danych i przechowywania danych?

Szafranek:Kiedy dołączyłem do Kubernetes, ludzie już zdali sobie sprawę, iż choćby jeżeli kontenery są ulotne z natury, w szerszej perspektywie musi być coś trwałego. Podstawowe interfejsy API [application programming interfaces] były już tam, choćby z pierwszymi wtyczkami woluminów, ale nikt tak naprawdę nie wiedział, jak ich używać. Pojawiły się PetSets, a później zostały zmienione na StatefulSets, ale choćby z tym przez cały czas może być trudno uruchomić ciężkie aplikacje oparte na danych na Kubernetes.

Jakie pierwsze problemy związane z danymi i przechowywaniem danych w Kubernetesie wystąpiły u Ciebie?

Szafranek: Zacząłem grzebać w tym, co już istniało w Kubernetes i jak tego używać. Dodałem kilka przykładów i testów end-to-end, aby zapoznać się z kodem i całym procesem. W tamtym czasie było to takie proste. Pamiętam, iż rozwijało się to tak szybko, iż bardzo trudno było aktualizować moje żądania ściągnięcia.

Pierwszymi prawdziwymi problemami, które musieliśmy rozwiązać, było to, jak uruchomić aplikację stanową, co zostało rozwiązane przez PetSets/StatefulSets, i jak konsumować dane z systemów pamięci masowej spoza Kubernetes. Najpierw zaczęliśmy od kodu in-tree dla pamięci masowej w chmurze i kilku ogólnych wtyczek dla tradycyjnej pamięci masowej, takiej jak NFS i iSCSI.

Co musiało się zmienić?

Szafranek:Wraz z większą adopcją gwałtownie zdaliśmy sobie sprawę, iż potrzebujemy bardziej solidnego kodu. Nasze początkowe kontrolery były bardzo delikatne, więc musieliśmy wszystko przepisać, aby zapewnić stabilne i spójne zachowanie. przez cały czas jest jednak miejsce na ulepszenia, ponieważ wszystkie z nich przetrwały lata z jedynie drobnymi poprawkami błędów.

Ponadto, ponieważ coraz więcej dostawców pamięci masowej chciało zintegrować swoje zaplecze pamięci masowej z Kubernetes, dowiedzieliśmy się, iż potrzebujemy ogólnego interfejsu rozszerzeń dla wtyczek woluminów. Najpierw wymyśliliśmy FlexVolumes, które były bardzo uciążliwe w użyciu, ale nauczyliśmy się i stworzyliśmy CSI, który jest w tej chwili głównym interfejsem pamięci masowej Kubernetes. Stał się on niezwykle udany i istnieje co najmniej 130 sterowników, które dobrowolnie się wymienili i kto wie, o ilu jeszcze nie wiemy.

A gdy Kubernetes został przyjęty i zaczął obsługiwać krytyczną infrastrukturę, musieliśmy się upewnić, iż jej nie zepsujemy. Teraz znacznie trudniej jest wprowadzić nową funkcję lub zmienić istniejącą, ponieważ potrzeba niezliczonych przeglądów i zatwierdzeń, aby zapewnić stabilność naszych wydań.

Jak zaczęła się Twoja przygoda z Kubernetes Operators?

Szafranek:Red Hat był jednym z pierwszych użytkowników Operatorów. Początki były dość ożywione. Osobiście zaczynałem od kilku złych, ale gwałtownie nauczyłem się pisać dobre Operatory. Wszystko przychodzi z praktyką, jak w przypadku wszystkiego w rozwoju oprogramowania. Ponadto, w tej chwili jest więcej dokumentacji niż kiedykolwiek wcześniej.

Co wydarzyło się w firmie Operators, iż odniosła ona sukces w zakresie gromadzenia i przechowywania danych?

Szafranek: Mam tutaj mieszane doświadczenia. Wielu operatorów nie jest lepszych od wykresów Helm [which describe a related set of Kubernetes resources]. Jednak te dobre pomogły firmom złagodzić ból związany z aplikacjami, które potrzebują trwałych danych. przez cały czas trudno jest poprawnie uruchomić aplikację stanową, uwzględniając wszystkie skrajne przypadki.

W jaki sposób wspierało to więcej podejść chmurowych? Jakie były konsekwencje?

Szafranek:Jak wspomniałem, dla deweloperów łatwiej jest polegać na zewnętrznym operatorze, który zajmie się obsługą bazy danych lub innego obciążenia stanowego, podczas gdy oni sami będą mogli skupić się na łączeniu tych elementów w doskonałą aplikację, która będzie wspierać ich działalność.

Kubernetes ma już 10 lat. Co o tym myślisz dzisiaj?

Szafranek: Cóż, to była jazda. Od początków, kiedy każdy mógł przepisać cokolwiek na stabilne oprogramowanie, które utrzymuje ten świat w ruchu lub przynajmniej niektóre jego bardzo ważne części, do momentu, kiedy stało się nudnym elementem infrastruktury.

Jakie problemy przez cały czas występują w kontekście Kubernetesa w kontekście danych i przechowywania danych?

Szafranek: Wszystkie kontenery są ulotne i mogą być krótkotrwałe. Kubernetes może próbować je uruchamiać przez długi czas, ale gdy będzie musiał je usunąć, zrobi to. Kubernetes oferuje pewne interfejsy API, takie jak PodDisruptionBudget, aby utrzymać absolutnie niezbędną liczbę uruchomionych kontenerów, ale wszystkie aplikacje stanowe muszą liczyć się z pewnymi zakłóceniami. To nowa koncepcja i przez cały czas trudno jest sobie z nią poprawnie poradzić.

Czy masz jeszcze jakieś anegdoty lub informacje, którymi chciałbyś się podzielić?

Szafranek:Najlepsze w pracy nad Kubernetesem jest to, iż poznałem bardzo mądrych ludzi, wiele się nauczyłem i ciągle się uczę.



Source link

Idź do oryginalnego materiału