Kompletny przewodnik
“>
Kubernetes to platforma do orkiestracji kontenerów typu open source, która automatyzuje wiele ręcznych zadań wymaganych przy wdrażaniu, zarządzaniu i skalowaniu aplikacji kontenerowych.
Jak działa Kubernetes?
- Kiedy programiści tworzą aplikację wielokontenerową, planują, jak wszystkie elementy będą pasować i działać razem, ile każdego komponentu będzie działać i ogólnie, co się stanie, gdy pojawią się przeszkody (takie jak kilka osób logujących się jednocześnie) napotkane.
- Zapisują swoje skonteneryzowane komponenty aplikacji w rejestrze kontenerów (lokalnym lub zdalnym) i zapisują swoje przemyślenia w jednym lub większej liczbie plików tekstowych, łącznie z konfiguracją. „Zastosowują” ustawienia do Kubernetesa, aby uruchomić aplikację.
- Rolą Kubernetes jest analizowanie, wdrażanie i utrzymywanie tej konfiguracji, chyba że zostanie poinformowany inaczej. To:
- Analizuje konfigurację, upewniając się, że jej potrzeby są spójne z wszystkimi innymi konfiguracjami aplikacji działających w systemie.
- Znajduje zasoby odpowiednie do obsługi nowych kontenerów (na przykład niektóre kontenery mogą wymagać zasobów, takich jak procesory graficzne, które są niedostępne na wszystkich hostach).
- Pobiera obrazy kontenerów z rejestru, uruchamia nowe kontenery i pomaga im w łączeniu się ze sobą oraz z zasobami systemowymi (np. pamięcią trwałą), dzięki czemu aplikacja może funkcjonować jako całość.
- Następnie Kubernetes wszystkiego obserwuje, a gdy rzeczywiste zdarzenia odbiegają od pożądanych stanów, Kubernetes stara się korygować i dostosowywać. Jeśli na przykład kontener ulegnie awarii, Kubernetes uruchomi go ponownie. Kiedy podstawowy serwer ulegnie awarii, Kubernetes szuka zasobów do obsługi kontenerów, które węzeł hostował gdzie indziej. Jeśli ruch w aplikacji nieoczekiwanie wzrośnie, Kubernetes może skalować kontenery w celu zarządzania dodatkowym zapotrzebowaniem, zgodnie z regułami i ograniczeniami określonymi w konfiguracji.
Do czego można wykorzystać Kubernetes?
Podstawową zaletą korzystania z Kubernetes w środowisku, szczególnie jeśli optymalizujesz tworzenie aplikacji dla chmury, jest to, że zapewnia on strukturę do planowania i uruchamiania kontenerów w klastrach komputerów fizycznych lub wirtualnych (VM).
Ogólnie rzecz biorąc, umożliwia pełną instalację infrastruktury kontenerowej i poleganie na niej w sytuacjach produkcyjnych. A ponieważ Kubernetes polega przede wszystkim na automatyzacji działań operacyjnych, możesz wykonywać dla swoich kontenerów wiele tych samych czynności, na które pozwalają inne platformy aplikacji lub systemy zarządzania.
Programiści mogą również używać wzorców Kubernetes do tworzenia aplikacji natywnych w chmurze z Kubernetesem jako platformą uruchomieniową. Wzorce to narzędzia wymagane przez programistę Kubernetes do tworzenia aplikacji i usług opartych na kontenerach.
Kubernetesa możesz używać do:
- Kontenery mogą być zorganizowane na kilku hostach.
- Popraw wykorzystanie sprzętu, aby zmaksymalizować zasoby wymagane do obsługi aplikacji korporacyjnych.
- kontrolować i automatyzować wdrażanie i aktualizację aplikacji.
- Aby uruchamiać programy stanowe, zamontuj i dodaj pamięć.
- Skalowanie na bieżąco konteneryzowanych aplikacji i ich zasobów
- Deklaratywnie zarządzaj usługami, aby mieć pewność, że wdrożone aplikacje zawsze będą działać zgodnie z oczekiwaniami.
- Dzięki automatycznemu umieszczaniu, automatycznemu uruchamianiu, automatycznej replikacji i automatycznemu skalowaniu możesz samodzielnie diagnozować i naprawiać swoje aplikacje.
Z drugiej strony Kubernetes jest zależny od innych projektów, aby prawidłowo dostarczać te skoordynowane usługi. Jego pełny potencjał można wykorzystać poprzez integrację dodatkowych projektów open source. Wśród tych wymaganych komponentów znajdują się (między innymi):
- Rejestr, taki jak Rejestr Dockera.
- Sieć, taka jak OpenvSwitch i inteligentny routing brzegowy.
- Kibana, Hawkular i Elastic to przykłady projektów korzystających z telemetrii.
- Bezpieczeństwo zapewniają projekty takie jak LDAP, SELinux, RBAC i OAuth z warstwami wielodostępnymi.
- Automatyzacja z dołączonymi podręcznikami Ansible do zarządzania instalacją i cyklem życia klastra.
- Usługi za pośrednictwem kompleksowego portfolio popularnych szablonów aplikacji.
Gdzie mogę zainstalować Kubernetes?
Może pracować praktycznie w dowolnym miejscu na różnych systemach operacyjnych Linux (węzły robocze mogą także działać na Windows Server). Klaster Kubernetes może obejmować setki serwerów typu bare-metal lub wirtualnych w centrum danych, chmurze prywatnej lub chmurze publicznej. Może być również obsługiwany na stacjach roboczych dla programistów, serwerach brzegowych, mikroserwerach, takich jak Raspberry Pis, oraz na ultramałych urządzeniach mobilnych i IoT.
Kubernetes może nawet zapewnić funkcjonalnie jednolitą platformę dla wszystkich tych infrastruktur przy wystarczającym planowaniu (oraz prawidłowych decyzjach dotyczących produktów i architektury). Oznacza to, że aplikacje i ustawienia utworzone i przetestowane na komputerze stacjonarnym Kubernetes można z łatwością przenieść do bardziej formalnych testów, produkcji na dużą skalę, instalacji brzegowych lub IoT. Oznacza to, że aplikacje i ustawienia utworzone i przetestowane na komputerze stacjonarnym Kubernetes można z łatwością przenieść do bardziej formalnych testów, produkcji na dużą skalę, instalacji brzegowych lub IoT. Teoretycznie oznacza to, że firmy i organizacje mogą tworzyć „hybrydowe” i „wielochmury” na różnych platformach, szybko i niedrogo rozwiązując problemy z wydajnością bez konieczności blokowania się.
Czym dokładnie jest klaster Kubernetes?
Architektura K8 jest prosta. Nigdy nie łączysz się bezpośrednio z węzłami, na których znajduje się Twoja aplikacja; zamiast tego współpracujesz z płaszczyzną kontroli, która zapewnia interfejs API i odpowiada za planowanie i replikację grup kontenerów zwanych podami. Kubectl to interfejs wiersza poleceń, który umożliwia połączenie się z API w celu udostępnienia pożądanego stanu aplikacji lub uzyskania rozbudowanych informacji o aktualnym stanie infrastruktury.
Przyjrzyjmy się różnym częściom.
Węzły
Każdy węzeł hostujący komponent aplikacji rozproszonej korzysta z platformy Docker lub porównywalnej technologii kontenerowej, takiej jak Rocket z CoreOS. Ponadto na węzłach uruchamiane są dwa programy: kube-proxy, które zapewnia dostęp do uruchomionej aplikacji, oraz kubelet, który akceptuje polecenia z płaszczyzny sterującej K8s. Flanela, tkanina sieciowa oparta na itp. dla kontenerów, może być również obsługiwana w węzłach.
Gospodarz
Płaszczyzna kontroli obsługuje serwer API (kube-apiserver), program planujący (kube-scheduler), menedżer kontrolera (kube-controller-manager) i itp., wysoce dostępny magazyn klucz-wartość do współdzielonej konfiguracji i wykrywania usług, który wykorzystuje Raft algorytm konsensusu.
Z czym dokładnie wiąże się infrastruktura natywna dla Kubernetes?
Większość lokalnych instalacji Kubernetes działa obecnie w oparciu o istniejącą infrastrukturę wirtualną, a serwery typu bare metal stają się coraz bardziej powszechne. Jest to logiczny postęp w przypadku centrów danych. Kubernetes to skonteneryzowane narzędzie do wdrażania i zarządzania cyklem życia aplikacji, natomiast do zarządzania zasobami infrastruktury wykorzystywane są dodatkowe technologie.
A co, jeśli zbudujesz centrum danych od podstaw, aby pomieścić kontenery, aż do warstwy infrastruktury?
Zacznij od serwerów typu bare metal i pamięci masowej zdefiniowanej programowo, które zostaną wdrożone i zarządzane przez Kubernetes, aby zapewnić infrastrukturze te same możliwości samoinstalacji, samoskalowania i samonaprawy co kontenery. Jest to koncepcja infrastruktury natywnej Kubernetes.
Odwiedziliśmy 46 razy, 1 wizyty dzisiaj