
Czym jest marketing sieciowy?
9 września 2019
SMART ENERGY. Nowe technologie w sektorze energetycznym.
23 września 2019
Wszystkie firmy poszukują nowych sposobów na przyspieszenie innowacji i funkcjonalności operacji. Z tego powodu stale zmienia się sposób projektowania, adaptacji, skalowania i zarządzania aplikacjami, aby zapewnić nowe metody poprawy wydajności oraz zwiększenia innowacyjności. Kubernetes (K8S) został powszechnie zaakceptowany przez niemal wszystkie zainteresowane strony dążące do radykalnego przyspieszenia dostarczania aplikacji dzięki obciążeniom kontenerowym i natywnym dla chmury.
Czym jest Kubernetes?
Kubernetes to system open source do zarządzania klastrami kontenerów i usługami, który upraszcza konfigurację i automatyzację. W tym celu dostarcza narzędzia do wdrażania aplikacji, skalowania aplikacji w zależności od potrzeb, zarządzania zmianami w istniejących aplikacjach kontenerowych oraz pomaga optymalizować wykorzystanie sprzętu pod kontenerami. Kubernetes został zaprojektowany tak, aby był rozszerzalny i odporny na uszkodzenia, umożliwiając ponowne uruchamianie komponentów aplikacji i przenoszenie aplikacji, jeśli to konieczne.
Czym jest orkiestracja kontenerów?
Organizacja kontenerów opiera się na zarządzaniu cyklem życia kontenerów, zwłaszcza w dużych, dynamicznych środowiskach. Orkiestracja kontenerów służy do kontrolowania i automatyzowania wielu zadań, takich jak:
- Dostarczanie i wdrażanie kontenerów
- Redundancja i dostępność kontenerów
- Skalowanie lub usuwanie kontenerów w celu rozłożenia obciążenia aplikacji na infrastrukturę hosta
- Przenoszenie kontenerów z jednego hosta na inny, jeśli na hoście brakuje zasobów
- Alokacja zasobów między kontenerami
- Zewnętrzne udostępnianie usług działających w kontenerze światu zewnętrznemu
- Równoważenie obciążenia odkrywania usług między kontenerami
- Monitorowanie stanu kontenerów i hostów
- Konfiguracja aplikacji w odniesieniu do działających kontenerów
Jak działa platforma Kubernetes?
Platforma Kubernetes zapewnia otwarty interfejs API, który umożliwia kontrolowanie sposobu i miejsca uruchamiania kontenerów. Co więcej, można zorganizować klaster maszyn wirtualnych i rozmieścić uruchamianie kontenerów na tych maszynach wirtualnych w oparciu o ich dostępne zasoby obliczeniowe i wymagania dotyczące zasobów poszczególnych kontenerów.
K8S ułatwia zarządzanie odkrywaniem usług, umożliwiając równoważenie obciążenia, śledzenie alokacji zasobów, skalowanie w oparciu o wykorzystanie zasobów obliczeniowych, sprawdzanie kondycji poszczególnych zasobów oraz umożliwiając samodzielne działanie aplikacji poprzez automatyczne ponowne uruchamianie lub replikowanie kontenerów.
Oto podstawowe elementy Kubernetes:
Klastry Kubernetes
Klaster, najwyższy poziom abstrakcji Kubernetes, odnosi się do grupy komputerów uruchamiających K8S (jest to sama aplikacja klastrowa) i zarządzanych przez niego kontenerów. Klaster Kubernetes musi posiadać układ, system, który zarządza i kontroluje wszystkie inne maszyny K8S w klastrze. Klaster Kubernetes o wysokiej dostępności replikuje urządzenia nadrzędne (master) na wielu komputerach. Ale tylko jeden master zarządza harmonogramem zadań i menedżerem kontrolera w danym momencie.
Węzły Kubernetes (nodes)
Węzły są zawarte w klastrach. Mogą to być maszyny fizyczne lub wirtualne. Niezależnie od tego, w jakiej aplikacji działa, Kubernetes wspiera wdrażanie na tej podstawie. Kubernetes pozwala nawet na zapewnienie, że niektóre kontenery działają tylko na maszynach wirtualnych.
Kubernetes Pod (pody)
Węzły uruchamiają kontenery, najbardziej podstawowe obiekty Kubernetes, które można tworzyć lub nimi zarządzać. Każdy pod (ang. pod) reprezentuje pojedynczą instancję aplikacji lub uruchomionego procesu w Kubernetes i składa się z jednego lub więcej kontenerów. Kontenery przyciągają uwagę użytkownika do aplikacji. Szczegółowe informacje o konfiguracji Kubernetes są przechowywane w Etcd, rozproszonym magazynie kluczy i wartości.
Pody są tworzone i niszczone w węzłach w zależności od potrzeb, aby dostosować się do pożądanego stanu określonego przez użytkownika w definicji podów. Kubernetes zapewnia abstrakcję zwaną kontrolerem. Kontrolery są dostępne w kilku różnych wersjach, w zależności od typu zarządzanej aplikacji, i zajmują się zarządzaniem rozwojem.
Usługi Kubernetes
Usługa Kubernetes opisuje sposób, w jaki można uzyskać dostęp do grupy kontenerów (lub innych obiektów Kubernetes) za pośrednictwem sieci. Jak ujęto w dokumentacji Kubernetes, pody mogą się zmieniać, ale interfejs nie powinien o tym wiedzieć ani ich śledzić. Usługi to umożliwiają.
Obraz dopełnia kilka innych wewnętrznych elementów Kubernetes. Harmonogram (scheduler) dystrybuuje obciążenia do węzłów, dzięki czemu są one zbalansowane między zasobami, a wdrożenia spełniają wymagania definicji aplikacji. Menedżer kontrolerów (controller manager) zapewnia, że stan systemu – aplikacji, obciążeń itp. – odpowiada pożądanemu stanowi zdefiniowanemu w ustawieniach konfiguracji.
Należy pamiętać, że Kubernetes nie zastępuje żadnego z niskopoziomowych mechanizmów używanych przez kontenery, takich jak Docker. Zamiast tego, Kubernetes dostarcza szerszy zestaw abstrakcji do wykorzystania tych mechanizmów w celu utrzymania działania aplikacji na dużą skalę.
Atrybuty Kubernetes
Automatyczne rozmieszczanie
Problem pakowania (problem pakowania kontenerów) został rozwiązany, a Kubernetes automatycznie rozmieszcza kontenery w oparciu o wymagania, aby zoptymalizować posiadane zasoby. Maksymalizuje wykorzystanie i jednocześnie zapewnia, że krytyczne obciążenie nie zostanie przekroczone. To zwiększa wykorzystanie i oszczędza zasoby.
Samonaprawa
Kubernetes ponownie uruchamia uszkodzone kontenery; zastępuje kontenery, gdy węzły uległy awarii; zabija kontenery, które nie odpowiadają na sprawdzenia statusu i nie udostępnia ich klientom, dopóki nie będą gotowe do świadczenia usług.
Skalowanie horyzontalne
Skaluj aplikację, zwiększając lub zmniejszając zasoby w chmurze za pomocą prostych poleceń, interfejsu użytkownika lub automatycznie w oparciu o obciążenie procesora.
Odkrywanie usług i równoważenie obciążenia
Nie musisz modyfikować aplikacji, aby korzystać z mechanizmu odkrywania usług. Kubernetes zapewnia kontenerom własne adresy IP i pojedynczą nazwę DNS dla zestawu kontenerów, a także może równoważyć obciążenie między nimi.
Automatyzacja wdrożeń i wycofywania
Kubernetes stopniowo wprowadza zmiany w aplikacji lub konfiguracji, monitorując ich status, aby nie naruszyć wszystkich instancji jednocześnie. Jeśli coś pójdzie nie tak, Kubernetes wycofuje zmianę.
Zarządzanie poufnymi danymi i konfiguracją
Wdrażaj i aktualizuj poufne informacje, takie jak hasła czy konfiguracja aplikacji, bez przebudowy obrazu i bez ujawniania tych poufnych informacji w konfiguracji.
Orkiestracja pamięci masowej
Automatycznie montuje zewnętrzne pamięci wybrane przez użytkownika z zasobów lokalnych, z chmury publicznej, takiej jak GCP i AWS, lub nośników sieciowych, takich jak NFS, iSCSI, Gluster, Ceph, Cinder lub Flocker.
Przetwarzanie wsadowe
Kubernetes może zarządzać przetwarzaniem wsadowym, zastępując kontenery, które przestały działać.
Zalety Kubernetes
- Open source i darmowe oprogramowanie
- Wysoce skalowalny
- Współpracuje z różnymi systemami PaaS, w tym GCE (Google Compute Engine), Microsoft Azure, Rackspace i vSphere, a także z systemami operacyjnymi, takimi jak Red Hat Atomic i CoreOS
- Opiera się na wieloletnim doświadczeniu Google z kontenerami w produkcji
- Ciągłe aktualizacje mikroserwisów
- Ułatwia grupowanie zadań dzięki etykietom, które pomagają identyfikować obiekty według różnych cech
Kubernetes zarządza za Ciebie zdrowiem aplikacji, replikacją, równoważeniem obciążenia i alokacją zasobów sprzętowych. System został zaprojektowany od podstaw tak, aby był odporny na uszkodzenia i radził sobie w przypadku awarii komponentów, co jest szczególnie przydatne dla firm korzystających z klastrów.
Wady Kubernetes
- Pewien stopień reorganizacji jest potrzebny podczas używania Kubernetes z istniejącą aplikacją
- Kontenery czasami muszą być ręcznie uruchamiane lub ponownie uruchamiane, zanim zaczną działać zgodnie ze specyfikacją. Może się to zdarzyć w niektórych sytuacjach, na przykład przy niemal pełnym wykorzystaniu zasobów
- Wykorzystuje inną konfigurację, definicję YAML i API
Alternatywy dla Kubernetes
Istnieje kilka innych narzędzi, które również oferują opcje aranżacji kontenerów. Dwoma największymi graczami konkurującymi z Kubernetes są Docker Swarm i Mesosphere DC/OS. Docker Swarm jest opcją łatwiejszą w użyciu, co stanowi problem dla Kubernetes, ponieważ jest krytykowany za bycie bardzo skomplikowanym we wdrożeniu i zarządzaniu.
Mesosphere DC/OS to system do orkiestracji kontenerów, zaprojektowany dla dużych zbiorów danych. Został stworzony do konfiguracji kontenerów wraz z innymi obciążeniami, takimi jak uczenie maszynowe i duże zbiory danych, i oferuje integrację z powiązanymi narzędziami, takimi jak Apache Spark.
Ogólnie rzecz biorąc, Kubernetes jest obecnie najszerzej akceptowanym i najbardziej dojrzałym narzędziem do orkiestracji kontenerów, o czym świadczy liczba współtwórców społeczności i liczba adaptacji przez przedsiębiorstwa. Kluczem do sukcesu K8S była zdolność do dostarczania nie tylko komponentów do uruchamiania i monitorowania kontenerów, ale także wysiłki w tworzeniu różnych zestawów przypadków użycia kontenerów na swojej platformie, aby radzić sobie z różnymi rodzajami zaawansowanych obciążeń. Na przykład, w Kubernetes możemy znaleźć natywne obiekty, natywne jednostki w systemie, które pozwalają nam na uruchomienie kontenera lub bazy danych. W przypadku innych rozwiązań nie ma rozróżnienia między kontenerami, które zawierają coś, co może zostać zniszczone w dowolnym momencie.
Świetlana przyszłość dla Kubernetes
Rozwój Kubernetes w zeszłym roku odbywał się w tempie błyskawicznym, a społeczność stała się prawdziwą siłą K8S. Przyszłość Kubernetes jest ściśle związana z przyszłością kontenerów i mikroserwisów. Chociaż możliwe jest przejście na mikroserwisy bez kontenerów, korzyści nie są tak wyraźne. Kontenery oferują bardziej precyzyjne środowiska wykonawcze, lepsze wykorzystanie serwerów i lepszą reakcję na mniej przewidywalne obciążenia, choć solidna orkiestracja kontenerów jest potrzebna, aby w pełni wykorzystać te korzyści. Kubernetes ułatwia adaptację kontenerów, zapewniając solidną organizację do uruchamiania wdrożeń z tysiącami kontenerów w produkcji, co jest kluczowe dla architektury mikroserwisów.
Kontenery szybko przejmują świat tworzenia oprogramowania, a dynamika Kubernetes przyspiesza. Stał się głównym orkiestratorem kontenerów dzięki swojej głębokiej wiedzy specjalistycznej, przyjęciu przez firmy i niezawodnemu ekosystemowi. Dzięki rosnącej liczbie współpracowników i dostawców usług, Kubernetes będzie nadal ulepszać i rozszerzać swoją funkcjonalność, typy wspieranych aplikacji i integrację z nadrzędnym ekosystemem. Połączenie tych czynników dodatkowo przyspieszy i usprawni wykorzystanie kontenerów i mikroserwisów, aby fundamentalnie zmienić sposób, w jaki oprogramowanie jest rozwijane, wdrażane i ulepszane. Ponadto, wraz z dojrzałością orkiestracji kontenerów i mikroserwisów, otworzą one drzwi do przyjęcia nowych standardów implementacji, praktyk programistycznych i modeli biznesowych.


