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.
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.
Zestaw maszyn — nazywanych indywidualnie węzłami — służących do uruchamiania skonteneryzowanych aplikacji zarządzanych przez system Kubernetes.
Maszyna wirtualna lub fizyczna. Klaster składa się z węzła głównego i węzłów roboczych.
Obraz, który zawiera oprogramowanie i jego zależności.
Pojedynczy kontener lub zestaw kontenerów działających na klasterze Kubernetes.
Obiekt, który zarządza replikowanymi aplikacjami reprezentowanymi przez zasobniki. Zasobniki są wdrażane w węzłach klastera.
Zapewnia, że określona liczba replik zasobników jest uruchomiona w tym samym czasie.
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.
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.
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.
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.
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.
Płaszczyzna sterowania zawiera następujące elementy:
Składniki węzła obejmują:
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. |
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.
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.
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, TUF i Helm) okazały się bezcenne z punktu widzenia tworzenia natywnego oprogramowania chmurowego.
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:
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.