Co to jest Kubernetes? A jaka jest jego architektura?
Konteneralizacja zmniejszyła przewód między programistami a środowiskiem produkcyjnym. Nie w tym sensie, że wcale nie potrzebujesz systemu produkcyjnego, ale nie musisz się martwić o specyficzność środowiska produkcyjnego.
Aplikacje są teraz pakowane z potrzebnymi zależnościami, w lekkim pojemniku zamiast VM. To wspaniale! Nie zapewnia jednak odporności z awarii systemu, awarii sieci lub awarii dysku. Na przykład, jeśli centrum danych, w którym uruchomione są serwery, jest w konserwacji, Twoja aplikacja przejdzie w trybie offline.
Kubernetes pojawia się na zdjęciu, aby rozwiązać te problemy. Podejmuje pomysł kontenerów i rozszerza go do pracy w wielu węzłach obliczeniowych (które mogą być hostowane w chmurze maszyna wirtualna lub serwerów bolego metalowego). Chodzi o to, aby mieć system rozproszony dla aplikacji kontenerowych do uruchomienia.
Dlaczego Kubernetes?
Dlaczego miałbyś przede wszystkim mieć rozproszone środowisko?
Z wielu powodów przede wszystkim jest wysoka dostępność. Chcesz, aby Twoja witryna e-commerce pozostała w Internecie 24 godziny na dobę, 7 dni w tygodniu, albo stracisz działalność, użyj do tego Kubernetes. Drugi to skalowalność, w której chcesz skalować „wyjść”. Skalowanie tutaj polega na dodaniu większej liczby węzł.
Projektowanie i architektura
Jak każdy system rozproszony, klaster Kubernetes ma węzeł główny, a następnie wiele węzłów pracowniczy. Master jest odpowiedzialny za planowanie zadań, zarządzanie obciążeniami i bezpieczne dodawanie nowych węzłów do klastra.
Teraz oczywiście sam węzeł główny może się nie udać i zabrać ze sobą cały klaster, więc Kubernetes faktycznie pozwala mieć wiele głównych węzłów.
Widok ptaka typowego wdrożenia Kubernetes
Kubernetes Master
Kubernetes Master to to, z czym zespół DevOps wchodzi w interakcje i używa do udostępniania nowych węzłów, wdrażania nowych aplikacji i monitorowania i zarządzania zasobami. Najbardziej podstawowym zadaniem węzła głównego jest harmonogram Obciążenie pracą wydajnie wśród wszystkich węzłów pracowników, aby zmaksymalizować wykorzystanie zasobów, poprawić wydajność i postępować zgodnie z różnymi zasadami wybranymi przez zespół DevOps w celu uzyskania konkretnego obciążenia pracą.
Kolejnym ważnym elementem jest itp który jest demonem, który śledzi węzły robotnicze i utrzymuje bazę danych przechowywania całego stanu klastra. Jest to sklep z kluczową wartością, który może również działać w rozproszonym środowisku w wielu węzłach głównych. Treść ETCD podaje wszystkie istotne dane dotyczące całego klastra. Węzeł roboczy.
Kontroler jest jednostką, która przyjmowałaby instrukcje z serwera API (które omówimy później) i wykonywał niezbędne działania, takie jak tworzenie, usuwanie i aktualizowanie aplikacji i pakietów.
Serwer API Ujawnia interfejs API Kubernetes, który wykorzystuje ładunki JSON przez HTTPS, do komunikowania się z interfejsem użytkownika, z którymi zespoły deweloperów lub personel DevOps ostatecznie w końcu interakcja będzie w interakcji. Zarówno interfejs internetowy, jak i CLI zużywają ten interakcję API do interakcji z klastrem Kubernetes.
Serwer API jest również odpowiedzialny za komunikację między węzłami pracowniczymi a różnymi komponentami węzłów głównych, takich jak ETCD.
Węzeł główny nigdy nie jest narażony na użytkownika końcowego, ponieważ ryzykuje bezpieczeństwo całego klastra.
Węzły Kubernetes
Maszyna (fizyczna lub wirtualna) potrzebowałaby kilku ważnych komponentów, które po zainstalowaniu i skonfigurowaniu mogą następnie przekształcić ten serwer w członka klastra Kubernetes.
Pierwszą rzeczą, której będziesz potrzebować, jest kontener wykonawczy, taki jak Docker, zainstalowany i uruchamiany. Oczywiście będzie odpowiedzialny za kręcenie i zarządzanie kontenerami.
Wraz z Docker Runtime potrzebujemy również Kubelet Demon. Komunikuje się z węzłami głównymi za pośrednictwem serwera API i pyta ETCD, a także oddaje informacje o zdrowiu i użytkowaniu na temat zasad działających na tym węźle.
Jednak kontenery są same w sobie dość ograniczone, więc Kubernetes ma wyższą abstrakcję zbudowaną na kolekcji pojemników, znanych jako Strąki.
Dlaczego warto wymyślić kapsuły?
Docker ma zasady uruchamiania jednej aplikacji na kontener. Często opisywane jako „Jeden proces na pojemnik” polityka. Oznacza to, że jeśli potrzebujesz witryny WordPress, zachęca się do posiadania dwóch kontenerów do uruchomienia bazy danych, a drugi do uruchomienia serwera WWW. Pakowanie takich powiązanych komponentów aplikacji w POD zapewnia, że za każdym razem, gdy się skalujesz, dwa wzajemne pojemniki zawsze współistnieją w tym samym węźle, a tym samym rozmawiają ze sobą szybko i łatwo rozmawiają.
Podss są podstawową jednostką wdrażania w Kubernetes. Po skalowaniu dodajesz więcej kapsuł do klastra. Każdy kapsułek otrzymuje własny unikalny adres IP w wewnętrznej sieci klastra.
Powrót do węzła Kubernetes
Teraz węzeł może uruchomić wiele kapsułów i może być wiele takich węzłów. To wszystko w porządku, dopóki nie pomyślisz o próbie komunikowania się ze światem zewnętrznym. Jeśli masz prostą usługę internetową, jak skierowałbyś nazwę domeny na tę kolekcję PODS z wieloma adresami IP?
Nie możesz i nie musisz! Kube-proxy jest ostatnim elementem układanki, która umożliwia operatorom ujawnienie niektórych strąków do Internetu. Na przykład Twój front może być dostępny publicznie, a Kube-Proxy rozpowszechniałby ruch między wszystkimi różnymi kapsułami odpowiedzialnymi za hosting front. Twoja baza danych nie musi być upubliczniona, a Kube-Proxy pozwoliłaby jedynie na komunikację wewnętrzną dla takich obciążeń związanych z zapleczem.
Czy potrzebujesz tego wszystkiego?
Jeśli dopiero zaczynasz jako hobbysta lub uczeń, używanie Kubernetes do prostej aplikacji byłoby nieefektywne. Cała Rigmarole pochłonąłaby więcej zasobów niż faktyczna aplikacja i dodałaby więcej zamieszania dla jednej osoby.
Jeśli jednak zamierzasz pracować z dużym zespołem i wdrożyć swoje aplikacje do poważnego użytku komercyjnego, Kubernetes jest warty kosztu dodatkowego. Możesz powstrzymać się przed chaotycznym. Zrób miejsce na konserwację bez żadnych przestojów. Skonfiguruj Nifty A/B Warunki testowania i skalowanie stopniowo bez wydawania zbyt wiele na infrastrukturę z góry.