Co to jest Kubernetes?

Kubernetes to platforma open source do zarządzania klasterami skonteneryzowanych aplikacji i usług, którą często określa się mianem „systemu operacyjnego dla chmury”. Kubernetes został zaprojektowany przez Joego Bedę, Brendana Burnsa i Craiga McLuckiego — inżynierów firmy Google — w 2014 roku; po niedługim czasie udostępniono go na zasadach open source i stał się prężnie działającym ekosystemem chmurowym. Dziś system Kubernetes — co w starożytnej grece oznacza „sternik” lub „pilot” — jest zarządzany przez fundację Cloud Native Computing Foundation (CNCF), która jest częścią Linux Foundation.

Kubernetes był pierwszym projektem ukończonym przez CNCF i stał się jednym z najszybciej rozwijających się projektów open source w historii. Obecnie system Kubernetes ma ponad 2300 współtwórców i został szeroko wdrożony przez duże i małe firmy, w tym przez połowę listy Fortune 100.

Kubernetes — kluczowe pojęcia

Zacznijmy od kilku kluczowych pojęć związanych z systemem Kubernetes. Bardziej wyczerpująca lista dostępna jest na stronie ujednoliconego słownika Kubernetes. Możesz również skorzystać ze ściągawki dotyczącej systemu Kubernetes, która zawiera listę często używanych poleceń i flag kubectl.

Klaster

Zestaw maszyn — nazywanych indywidualnie węzłami — służących do uruchamiania skonteneryzowanych aplikacji zarządzanych przez system Kubernetes.

Węzeł

Maszyna wirtualna lub fizyczna. Klaster składa się z węzła głównego i węzłów roboczych.

Kontener chmurowy

Obraz, który zawiera oprogramowanie i jego zależności.

Zasobnik

Pojedynczy kontener lub zestaw kontenerów działających na klasterze Kubernetes.

Wdrożenie

Obiekt, który zarządza replikowanymi aplikacjami reprezentowanymi przez zasobniki. Zasobniki są wdrażane w węzłach klastera.

Zestaw replik

Zapewnia, że określona liczba replik zasobników jest uruchomiona w tym samym czasie.

Usługa

Opisuje, jak uzyskać dostęp do aplikacji reprezentowanych przez zestaw zasobników. Usługi zazwyczaj opisują porty i urządzenia równoważenia obciążenia oraz mogą być używane do kontrolowania wewnętrznego i zewnętrznego dostępu do klastera.

Co to jest KubeCon?

KubeCon to coroczna konferencja dla programistów i użytkowników systemu Kubernetes. Od czasu pierwszej edycji z 2015 roku, w której wzięło udział 500 uczestników, konferencja KubeCon urosła do rangi ważnego wydarzenia dla społeczności chmurowej. W 2019 roku konferencja KubeCon w San Diego (Kalifornia) przyciągnęła 12 000 programistów i inżynierów, którzy wspólnie cieszyli się z rozwoju ekosystemu open source powstałego wokół platformy orkiestracji chmurowej Kubernetes.

Co to są kontenery Kubernetes?

Programiści coraz częściej wdrażają oprogramowanie w różnorodnych środowiskach komputerowych obejmujących różne chmury, środowiska testowe, laptopy, urządzenia, systemy operacyjne i platformy, w związku z czym kwestia zapewnienia niezawodnego działania oprogramowania ma ogromne znaczenie. Z pomocą przychodzą kontenery: łączą one aplikację z jej całym środowiskiem wykonawczym. W tym sensie kontenery są formą wirtualizacji, ponieważ tworzą „bańkę”, w której aplikacja może działać, poprzez dołączenie odpowiednich bibliotek, zależności i systemów operacyjnych. Kontenery są jednak mniejsze niż maszyny wirtualne, ponieważ zawierają tylko te zasoby, których potrzebuje aplikacja — i nic więcej.

Kubernetes a Docker

Chociaż kontenery systemu Linux istnieją od 2008 roku, dopiero pojawienie się kontenerów Docker w 2013 roku sprawiło, że stało się o nich głośno. Eksplozja zainteresowania wdrażaniem skonteneryzowanych aplikacji — czyli takich, które zawierają wszystko, czego potrzebują do działania — w końcu doprowadziła do powstania nowego problemu: zarządzania tysiącami kontenerów. Kubernetes automatycznie zarządza cyklem życia kontenerów, rozprowadzając je po infrastrukturze hostingowej. System skaluje również zasoby w górę lub w dół, w zależności od zapotrzebowania. Udostępnia on kontenery, tworzy ich harmonogramy, usuwa je oraz monitoruje ich stan.

Jakie są składniki systemu Kubernetes?

Kluczowe składniki systemu Kubernetes to klastery, węzły i płaszczyzna sterowania. Klastery zawierają węzły. Każdy węzeł składa się z zestawu obejmującego co najmniej jedną maszynę roboczą. Węzły hostują zasobniki, które zawierają elementy wdrożonej aplikacji. Płaszczyzna sterowania zarządza węzłami i zasobnikami w klasterze, często na wielu komputerach, w celu zapewnienia wysokiej dostępności.

co to jest kubernetes

Płaszczyzna sterowania zawiera następujące elementy:

  • Serwer interfejsu API systemu Kubernetes: zapewnia interfejs programowania (API) do sterowania systemem Kubernetes
  • etcd: baza danych typu klucz-wartość dla danych klastera
  • Proces planujący systemu Kubernetes: dopasowuje nowe zasobniki do dostępnych węzłów
  • Menedżer kontrolera systemu Kubernetes: wykonuje szereg procesów mających na celu zarządzanie awariami węzłów, kontrolowanie replikacji, dołączanie do usług i zasobników poprzez punkty końcowe oraz kontrolowanie kont i tokenów dostępu
  • Menedżer kontrolera chmury: pomaga zarządzać interfejsami API różnych dostawców chmury w takich aspektach, jak określone trasy infrastruktury i równoważenie obciążenia

Składniki węzła obejmują:

  • kubelet: agent, który sprawdza, czy kontenery są uruchomione w zasobniku
  • Sieciowy serwer proxy systemu Kubernetes: zarządza regułami sieciowymi
  • Docker, containerd lub inny rodzaj środowiska wykonawczego kontenera

Jakie są korzyści z używania systemu Kubernetes?

Dzięki kontenerom zyskujesz pewność, że Twoje aplikacje mają wszystko, czego potrzebują do działania. W miarę dodawania kontenerów — które często zawierają mikrousługi — możesz automatycznie nimi zarządzać i dystrybuować je za pomocą systemu Kubernetes.

Dzięki systemowi Kubernetes organizacje zyskują następujące możliwości:

Automatyczne skalowanie Zwiększaj lub zmniejszaj liczbę wdrożeń w zależności od zapotrzebowania.
Wyszukiwanie usług Wyszukuj skonteneryzowane usługi przez DNS lub adres IP.
Równoważenie obciążeń Ustabilizuj proces wdrażania poprzez dystrybucję ruchu sieciowego.
Zarządzanie przechowywaniem Wybierz przechowywanie lokalne lub w chmurze.
Kontrola wersji Wybierz rodzaje kontenerów, które chcesz uruchomić, i określ, które z nich mają zostać zastąpione przez nowy obraz lub zasoby kontenera.
Bezpieczeństwo Bezpiecznie aktualizuj hasła, tokeny OAuth i klucze SSH związane z konkretnymi obrazami kontenerów.

Jakie są wyzwania związane z używaniem systemu Kubernetes?

System Kubernetes składa się z wielu elementów i może obsługiwać każdy rodzaj aplikacji, jednak korzystanie z niego może być trudne. Kubernetes nie zawsze jest właściwym rozwiązaniem dla danego obciążenia, co zauważyło wielu członków CNCF. Właśnie dlatego ekosystem Kubernetes zawiera wiele powiązanych ze sobą narzędzi chmurowych, które zostały stworzone przez organizacje w celu rozwiązania konkretnych problemów związanych z obciążeniami.

Kubernetes wdraża kontenery, a nie kod źródłowy, i nie tworzy aplikacji. Będziesz potrzebować dodatkowych narzędzi do logowania, obsługi oprogramowania pośredniczącego, monitorowania, konfiguracji, CI/CD i wielu innych działań produkcyjnych. Należy jednak podkreślić, że system Kubernetes jest rozszerzalny i sprawdził się w wielu różnych zastosowaniach — od odrzutowców po samouczenie się maszyn. Dostawcy usług chmurowych, tacy jak Oracle, Google, Amazon Web Services i wielu innych, wykorzystali rozszerzalność platformy Kubernetes do stworzenia zarządzanych usług Kubernetes, które zmniejszają złożoność i zwiększają wydajność programistów.

Co to jest zarządzana usługa Kubernetes?

Natywne usługi chmurowe i system Kubernetes zmieniają sposób, w jaki firma AgroScout wspiera rolników.

Cloud Infrastructure Container Engine for Kubernetes to przyjazna dla programistów usługa zarządzana, której możesz użyć, aby wdrożyć swoje skonteneryzowane aplikacje do chmury. Skorzystaj z usługi Container Engine for Kubernetes, jeśli Twój zespół programistów chce w niezawodny sposób tworzyć i wdrażać natywne aplikacje chmurowe oraz nimi zarządzać. Ty określasz zasoby obliczeniowe, których wymagają Twoje aplikacje, a Container Engine for Kubernetes rezerwuje je w ramach istniejącej dzierżawy Cloud Infrastructure.

Nie musisz korzystać z zarządzanej usługi Kubernetes, ale nasze rozwiązanie Cloud Infrastructure Container Engine for Kubernetes to prosty sposób na uruchomienie wysokodostępnych klasterów z zachowaniem kontroli, bezpieczeństwa i przewidywalnej wydajności platformy Oracle Cloud Infrastructure. Usługa Container Engine for Kubernetes obsługuje bare metal i maszyny wirtualne jako węzły oraz posiada certyfikat zgodności CNCF. Będziesz również otrzymywać wszystkie aktualizacje systemu Kubernetes i zachowasz zgodność z ekosystemem CNCF bez żadnego dodatkowego wysiłku.


Kubernetes — ekosystem i społeczność

Oracle jest platynowym członkiem Cloud Native Computing Foundation (CNCF) — społeczności open source, która wspiera kilkadziesiąt projektów rozwoju oprogramowania uporządkowanych według postępu ich realizacji. Ukończone projekty (Kubernetes, Prometheus, Envoy, CoreDNS, containerd, Fluentd, Jaeger, Vitess, TUFHelm) okazały się bezcenne z punktu widzenia tworzenia natywnego oprogramowania chmurowego.

Jak zacząć korzystać z systemu Kubernetes

Kubernetes obejmuje duży ekosystem projektów, które powstały wokół niego. Jest on bardzo rozbudowany, w związku z czym znalezienie odpowiedzi na proste pytania może okazać się bardzo trudne. Jednak kilka pierwszych kroków jest prostych, a później możesz poznawać zaawansowane koncepcje w miarę swoich potrzeb. Dowiedz się, jak:

  • skonfigurować lokalne środowisko programistyczne z wykorzystaniem platform Docker i Kubernetes,
  • utworzyć prostą mikrousługę Java za pomocą rozwiązania Helidon,
  • wbudować mikrousługę w obraz kontenera za pomocą platformy Docker,
  • wdrożyć mikrousługę na lokalnym klasterze Kubernetes,
  • przeskalować mikrousługę w górę i w dół na klastrze.

Kubernetes dla programistów

Programiści, którzy chcą rozpocząć swój pierwszy projekt w systemie Kubernetes, mogą zajrzeć na nasz portal dla programistów, gdzie dowiedzą się, jak stworzyć swoją pierwszą aplikację Arm w systemie Kubernetes lub wdrożyć klaster Kubernetes, używając usługi Cloud Shell.


Wprowadzenie do systemu Kubernetes na platformie OCI (8:32)