Kubernetes

Book description

Systemy rozproszone miały być odpowiedzią na zwiększone wymagania wobec systemów informatycznych. Chodziło o takie cechy jak łatwe współużytkowanie zasobów, odporność na awarie, prostota rozbudowy czy skalowalność. Z czasem okazało się, że możliwości systemów rozproszonych mogą być jeszcze bardziej atrakcyjne. Równocześnie jednak architekci, programiści i w końcu również administratorzy systemów doświadczali na własnej skórze, że projektowanie, budowa i utrzymywanie systemu rozproszonego niesie ze sobą wyzwania, o jakich nie mieli pojęcia twórcy systemów wcześniejszych generacji. Wyjściem z tej trudnej sytuacji mogą być rozwijane w ostatnich latach kontenery i interfejsy API orkiestracji kontenerów, takie jak Kubernetes.

Ta książka jest znakomitym wprowadzeniem do Kubernetesa - udostępnionego na licencji open source orkiestratora klastrów (ang. orchestrator). Kontenery i orkiestratory są bardzo młodą technologią, jednak już teraz umożliwiają programistom budowanie i wdrażanie aplikacji z nieosiągalną dotychczas szybkością i niezawodnością. Dzięki tej książce dowiesz się, jaką rolę odgrywa Kubernetes w cyklu życia aplikacji rozproszonej. Nauczysz się wykorzystywać narzędzia i interfejsy API do automatyzacji skalowalnych systemów rozproszonych, niezależnie od tego, czy są to usługi internetowe, aplikacje do uczenia maszynowego, czy klastry komputerów Raspberry Pi. Przekonasz się, że Kubernetes i technologia kontenerowa mogą pomóc w osiągnięciu nowych poziomów prędkości, zwinności, niezawodności i wydajności.

W książce między innymi:

zakres działania Kubernetesa
tworzenie aplikacji kontenerowych za pomocą Dockera
kontenery w Kubernetesie i ich środowisko wykonawcze
uruchamianie aplikacji w środowisku produkcyjnym
przykłady wdrażania rzeczywistych aplikacji w Kubernetesie
Niezawodny system rozproszony? Kubernetes, koniecznie!

Table of contents

  1. Przedmowa
    1. Kubernetes: dedykacja
    2. Kto powinien przeczytać tę książkę?
    3. Dlaczego napisaliśmy tę książkę?
    4. Kilka słów na temat aktualnego stanu aplikacji natywnych w chmurze
    5. Poruszanie się po tej książce
    6. Zasoby online
    7. Konwencje stosowane w tej książce
    8. Korzystanie z przykładów kodu
  2. Rozdział 1. Wprowadzenie
    1. Prędkość
      1. Wartość niemutowalności
      2. Deklaratywna konfiguracja
      3. Systemy samonaprawiające się
    2. Skalowanie usługi i zespołów programistycznych
      1. Rozłączność
      2. Łatwe skalowanie aplikacji i klastrów
      3. Skalowanie zespołów programistycznych za pomocą mikrousług
      4. Separacja zagadnień dla zapewnienia spójności i skalowania
    3. Zapewnianie abstrakcji infrastruktury
    4. Wydajność
    5. Podsumowanie
  3. Rozdział 2. Tworzenie i uruchamianie kontenerów
    1. Obrazy kontenerów
      1. Format obrazu Dockera
    2. Budowanie obrazów aplikacji za pomocą Dockera
      1. Pliki Dockerfile
      2. Bezpieczeństwo obrazu
      3. Optymalizacja rozmiarów obrazu
    3. Przechowywanie obrazów w zdalnym rejestrze
    4. Środowisko wykonawcze kontenera Dockera
      1. Uruchamianie kontenerów za pomocą Dockera
      2. Odkrywanie aplikacji kuard
      3. Ograniczanie wykorzystania zasobów
        1. Ograniczanie zasobów pamięci
        2. Ograniczanie zasobów procesora
    5. Czyszczenie
    6. Podsumowanie
  4. Rozdział 3. Wdrażanie klastra Kubernetes
    1. Instalowanie Kubernetes w usłudze dostawcy publicznej chmury
      1. Google Container Service
      2. Instalowanie Kubernetes w Azure Container Service
      3. Instalowanie Kubernetes w Amazon Web Services
    2. Lokalna instalacja Kubernetes za pomocą minikube
    3. Uruchamianie Kubernetes na Raspberry Pi
    4. Klient Kubernetes
      1. Sprawdzanie statusu klastra
      2. Wyświetlanie węzłów roboczych klastra Kubernetes
    5. Komponenty klastra
      1. Serwer proxy Kubernetes
      2. Serwer DNS Kubernetes
      3. Interfejs użytkownika Kubernetes
    6. Podsumowanie
  5. Rozdział 4. Typowe polecenia kubectl
    1. Przestrzenie nazw
    2. Konteksty
    3. Przeglądanie obiektów interfejsu API Kubernetes
    4. Tworzenie, aktualizacja i niszczenie obiektów Kubernetes
    5. Dodawanie etykiet i adnotacji do obiektów
    6. Polecenia debugowania
    7. Podsumowanie
  6. Rozdział 5. Kapsuły
    1. Kapsuły w Kubernetes
    2. Myślenie w kategoriach kapsuł
    3. Manifest kapsuły
      1. Tworzenie kapsuły
      2. Tworzenie manifestu kapsuły
    4. Uruchamianie kapsuł
      1. Wyświetlanie listy kapsuł
      2. Szczegółowe informacje o kapsule
      3. Usuwanie kapsuły
    5. Uzyskiwanie dostępu do kapsuły
      1. Korzystanie z przekierowania portów
      2. Uzyskiwanie większej ilości informacji za pomocą dzienników
      3. Uruchamianie poleceń w kontenerze przy użyciu exec
      4. Kopiowanie plików do i z kontenerów
    6. Kontrole działania
      1. Sonda żywotności
      2. Sonda gotowości
      3. Rodzaje kontroli działania
    7. Zarządzanie zasobami
      1. Żądania zasobów: minimalne wymagane zasoby
        1. Żądania i limity
      2. Ograniczanie wykorzystania zasobów za pomocą limitów
    8. Utrwalanie danych za pomocą woluminów
      1. Używanie woluminów z kapsułami
      2. Różne sposoby używania woluminów z kapsułami
        1. Komunikacja/synchronizacja
        2. Pamięć podręczna
        3. Trwałe dane
        4. Montowanie systemu plików hosta
      3. Utrwalanie danych przy użyciu dysków zdalnych
    9. Wszystko razem
    10. Podsumowanie
  7. Rozdział 6. Etykiety i adnotacje
    1. Etykiety
      1. Stosowanie etykiet
      2. Modyfikowanie etykiet
      3. Selektory etykiet
      4. Selektory etykiet w obiektach API
    2. Adnotacje
      1. Definiowanie adnotacji
    3. Czyszczenie
    4. Podsumowanie
  8. Rozdział 7. Wykrywanie usług
    1. Co to jest wykrywanie usług?
    2. Obiekt Service
      1. DNS usługi
      2. Kontrole gotowości
    3. Udostępnianie usługi poza klastrem
    4. Integracja z chmurą
    5. Szczegóły dla zaawansowanych
      1. Punkty końcowe
      2. Ręczne wykrywanie usług
      3. kube-proxy i adresy IP klastra
      4. Zmienne środowiskowe adresu IP klastra
    6. Czyszczenie
    7. Podsumowanie
  9. Rozdział 8. Obiekt ReplicaSet
    1. Pętle uzgadniania
    2. Relacje między kapsułami i obiektami ReplicaSet
      1. Adaptowanie istniejących kontenerów
      2. Poddawanie kontenerów kwarantannie
    3. Projektowanie z wykorzystaniem ReplicaSet
    4. Specyfikacja ReplicaSet
      1. Szablony kapsuł
      2. Etykiety
    5. Tworzenie obiektu ReplicaSet
    6. Inspekcja obiektu ReplicaSet
      1. Znajdowanie ReplicaSet z poziomu kapsuły
      2. Znajdowanie zestawu kapsuł dla ReplicaSet
    7. Skalowanie kontrolerów ReplicaSet
      1. Skalowanie imperatywne za pomocą polecenia kubectl scale
      2. Skalowanie deklaratywne za pomocą kubectl apply
      3. Automatyczne skalowanie kontrolera ReplicaSet
        1. Automatyczne skalowanie na podstawie wykorzystania procesora
    8. Usuwanie obiektów ReplicaSet
    9. Podsumowanie
  10. Rozdział 9. Obiekt DaemonSet
    1. Planista DaemonSet
    2. Tworzenie obiektów DaemonSet
    3. Ograniczanie użycia kontrolerów DaemonSet do określonych węzłów
      1. Dodawanie etykiet do węzłów
      2. Selektory węzłów
    4. Aktualizowanie obiektu DaemonSet
      1. Aktualizowanie obiektów DaemonSet poprzez usuwanie poszczególnych kapsuł
      2. Ciągła aktualizacja obiektu DaemonSet
    5. Usuwanie obiektu DaemonSet
    6. Podsumowanie
  11. Rozdział 10. Obiekt Job
    1. Obiekt Job
    2. Wzorce obiektu Job
      1. Zadania jednorazowe
        1. Awaria kapsuły
      2. Równoległość
      3. Kolejki robocze
        1. Uruchamianie kolejki roboczej
        2. Ładowanie do kolejki
        3. Tworzenie zadania konsumenta
        4. Czyszczenie
    3. Podsumowanie
  12. Rozdział 11. Obiekty ConfigMap i tajne dane
    1. Obiekty ConfigMap
      1. Tworzenie obiektów ConfigMap
      2. Używanie obiektów ConfigMap
    2. Tajne dane
      1. Tworzenie tajnych danych
      2. Korzystanie z tajnych danych
        1. Woluminy tajnych danych
      3. Prywatne rejestry Dockera
    3. Ograniczenia dotyczące nazewnictwa
    4. Zarządzanie obiektami ConfigMap i tajnymi danymi
      1. Wyświetlanie obiektów
      2. Tworzenie obiektów
      3. Aktualizowanie obiektów
        1. Aktualizacja z pliku
        2. Odtworzenie i aktualizacja
        3. Edytowanie bieżącej wersji
        4. Aktualizacje na żywo
    5. Podsumowanie
  13. Rozdział 12. Obiekt Deployment
    1. Twoje pierwsze wdrożenie
      1. Wewnętrzne mechanizmy działania obiektu Deployment
    2. Tworzenie obiektów Deployment
    3. Zarządzanie obiektami Deployment
    4. Aktualizowanie obiektów Deployment
      1. Skalowanie obiektu Deployment
      2. Aktualizowanie obrazu kontenera
      3. Historia wersji
    5. Strategie wdrażania
      1. Strategia Recreate
      2. Strategia RollingUpdate
        1. Zarządzanie wieloma wersjami usługi
        2. Konfigurowanie ciągłej aktualizacji
      3. Spowalnianie wdrażania w celu zapewnienia poprawnego działania usługi
    6. Usuwanie wdrożenia
    7. Podsumowanie
  14. Rozdział 13. Integracja rozwiązań do przechowywania danych i Kubernetes
    1. Importowanie usług zewnętrznych
      1. Usługi bez selektorów
      2. Ograniczenia usług zewnętrznych: sprawdzanie poprawności działania
    2. Uruchamianie niezawodnych singletonów
      1. Uruchamianie singletona MySQL
      2. Dynamiczne przydzielanie woluminów
    3. Natywne magazyny danych Kubernetes z wykorzystaniem obiektów StatefulSet
      1. Właściwości obiektów StatefulSet
      2. Ręcznie zreplikowany klaster MongoDB z wykorzystaniem obiektów StatefulSet
      3. Automatyzacja tworzenia klastra MongoDB
      4. Trwałe woluminy i obiekty StatefulSet
      5. Ostatnia rzecz: sondy gotowości
    4. Podsumowanie
  15. Rozdział 14. Wdrażanie rzeczywistych aplikacji
    1. Parse
      1. Wymagania wstępne
      2. Budowanie serwera parse-server
      3. Wdrażanie serwera parse-server
      4. Testowanie Parse
    2. Ghost
      1. Konfigurowanie serwera Ghost
        1. Ghost + MySQL
    3. Redis
      1. Konfigurowanie instalacji Redis
      2. Tworzenie usługi Redis
      3. Wdrażanie klastra Redis
      4. Zabawa z klastrem Redis
    4. Podsumowanie
  16. Dodatek A. Budowanie klastra Raspberry Pi Kubernetes
    1. Lista części
    2. Flashowanie obrazów
    3. Pierwsze uruchomienie: węzeł główny
      1. Konfigurowanie sieci
        1. Dodatkowe zadania
      2. Instalowanie Kubernetes
      3. Konfigurowanie klastra
        1. Konfigurowanie ustawień sieciowych klastra
        2. Konfigurowanie GUI
    4. Podsumowanie
    5. O autorach
    6. Kolofon

Product information

  • Title: Kubernetes
  • Author(s): Kelsey Hightower, Brendan Burns, Joe Beda
  • Release date: June 2016
  • Publisher(s): Helion
  • ISBN: 9781098125394