E-book details

Kubernetes. Tworzenie niezawodnych systemów rozproszonych

Kubernetes. Tworzenie niezawodnych systemów rozproszonych

Kelsey Hightower, Brendan Burns, Joe Beda

Ebook

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!


Przedmowa 13

1. Wprowadzenie 19

  • Prędkość 20
    • Wartość niemutowalności 21
    • Deklaratywna konfiguracja 22
    • Systemy samonaprawiające się 23
  • Skalowanie usługi i zespołów programistycznych 24
    • Rozłączność 24
    • Łatwe skalowanie aplikacji i klastrów 25
    • Skalowanie zespołów programistycznych za pomocą mikrousług 26
    • Separacja zagadnień dla zapewnienia spójności i skalowania 27
  • Zapewnianie abstrakcji infrastruktury 29
  • Wydajność 30
  • Podsumowanie 31

2. Tworzenie i uruchamianie kontenerów 33

  • Obrazy kontenerów 34
    • Format obrazu Dockera 35
  • Budowanie obrazów aplikacji za pomocą Dockera 37
    • Pliki Dockerfile 37
    • Bezpieczeństwo obrazu 37
    • Optymalizacja rozmiarów obrazu 38
  • Przechowywanie obrazów w zdalnym rejestrze 39
  • Środowisko wykonawcze kontenera Dockera 40
    • Uruchamianie kontenerów za pomocą Dockera 41
    • Odkrywanie aplikacji kuard 41
    • Ograniczanie wykorzystania zasobów 41
  • Czyszczenie 42
  • Podsumowanie 43

3. Wdrażanie klastra Kubernetes 45

  • Instalowanie Kubernetes w usłudze dostawcy publicznej chmury 46
    • Google Container Service 46
    • Instalowanie Kubernetes w Azure Container Service 46
    • Instalowanie Kubernetes w Amazon Web Services 47
  • Lokalna instalacja Kubernetes za pomocą minikube 48
  • Uruchamianie Kubernetes na Raspberry Pi 49
  • Klient Kubernetes 49
    • Sprawdzanie statusu klastra 49
    • Wyświetlanie węzłów roboczych klastra Kubernetes 50
  • Komponenty klastra 52
    • Serwer proxy Kubernetes 53
    • Serwer DNS Kubernetes 53
    • Interfejs użytkownika Kubernetes 53
  • Podsumowanie 54

4. Typowe polecenia kubectl 55

  • Przestrzenie nazw 55
  • Konteksty 55
  • Przeglądanie obiektów interfejsu API Kubernetes 56
  • Tworzenie, aktualizacja i niszczenie obiektów Kubernetes 57
  • Dodawanie etykiet i adnotacji do obiektów 58
  • Polecenia debugowania 58
  • Podsumowanie 59

5. Kapsuły 61

  • Kapsuły w Kubernetes 62
  • Myślenie w kategoriach kapsuł 63
  • Manifest kapsuły 63
    • Tworzenie kapsuły 64
    • Tworzenie manifestu kapsuły 65
  • Uruchamianie kapsuł 66
    • Wyświetlanie listy kapsuł 66
    • Szczegółowe informacje o kapsule 67
    • Usuwanie kapsuły 68
  • Uzyskiwanie dostępu do kapsuły 69
    • Korzystanie z przekierowania portów 69
    • Uzyskiwanie większej ilości informacji za pomocą dzienników 70
    • Uruchamianie poleceń w kontenerze przy użyciu exec 70
    • Kopiowanie plików do i z kontenerów 71
  • Kontrole działania 71
    • Sonda żywotności 72
    • Sonda gotowości 73
    • Rodzaje kontroli działania 74
  • Zarządzanie zasobami 74
    • Żądania zasobów: minimalne wymagane zasoby 75
    • Ograniczanie wykorzystania zasobów za pomocą limitów 77
  • Utrwalanie danych za pomocą woluminów 77
    • Używanie woluminów z kapsułami 78
    • Różne sposoby używania woluminów z kapsułami 79
    • Utrwalanie danych przy użyciu dysków zdalnych 80
  • Wszystko razem 80
  • Podsumowanie 82

6. Etykiety i adnotacje 83

  • Etykiety 83
    • Stosowanie etykiet 85
    • Modyfikowanie etykiet 86
    • Selektory etykiet 87
    • Selektory etykiet w obiektach API 89
  • Adnotacje 89
    • Definiowanie adnotacji 91
  • Czyszczenie 91
  • Podsumowanie 91

7. Wykrywanie usług 93

  • Co to jest wykrywanie usług? 93
  • Obiekt Service 94
    • DNS usługi 95
    • Kontrole gotowości 96
  • Udostępnianie usługi poza klastrem 98
  • Integracja z chmurą 99
  • Szczegóły dla zaawansowanych 101
    • Punkty końcowe 101
    • Ręczne wykrywanie usług 102
    • kube-proxy i adresy IP klastra 103
    • Zmienne środowiskowe adresu IP klastra 104
  • Czyszczenie 105
  • Podsumowanie 105

8. Obiekt ReplicaSet 107

  • Pętle uzgadniania 108
  • Relacje między kapsułami i obiektami ReplicaSet 109
    • Adaptowanie istniejących kontenerów 109
    • Poddawanie kontenerów kwarantannie 110
  • Projektowanie z wykorzystaniem ReplicaSet 110
  • Specyfikacja ReplicaSet 110
    • Szablony kapsuł 111
    • Etykiety 111
  • Tworzenie obiektu ReplicaSet 112
  • Inspekcja obiektu ReplicaSet 112
    • Znajdowanie ReplicaSet z poziomu kapsuły 113
    • Znajdowanie zestawu kapsuł dla ReplicaSet 113
  • Skalowanie kontrolerów ReplicaSet 114
    • Skalowanie imperatywne za pomocą polecenia kubectl scale 114
    • Skalowanie deklaratywne za pomocą kubectl apply 115
    • Automatyczne skalowanie kontrolera ReplicaSet 115
  • Usuwanie obiektów ReplicaSet 117
  • Podsumowanie 118

9. Obiekt DaemonSet 119

  • Planista DaemonSet 120
  • Tworzenie obiektów DaemonSet 121
  • Ograniczanie użycia kontrolerów DaemonSet do określonych węzłów 123
    • Dodawanie etykiet do węzłów 123
    • Selektory węzłów 124
  • Aktualizowanie obiektu DaemonSet 125
    • Aktualizowanie obiektów DaemonSet poprzez usuwanie poszczególnych kapsuł 125
    • Ciągła aktualizacja obiektu DaemonSet 126
  • Usuwanie obiektu DaemonSet 127
  • Podsumowanie 127

10. Obiekt Job 129

  • Obiekt Job 129
  • Wzorce obiektu Job 130
    • Zadania jednorazowe 131
    • Równoległość 136
    • Kolejki robocze 138
  • Podsumowanie 142

11. Obiekty ConfigMap i tajne dane 143

  • Obiekty ConfigMap 143
    • Tworzenie obiektów ConfigMap 144
    • Używanie obiektów ConfigMap 145
  • Tajne dane 147
    • Tworzenie tajnych danych 149
    • Korzystanie z tajnych danych 150
    • Prywatne rejestry Dockera 151
  • Ograniczenia dotyczące nazewnictwa 152
  • Zarządzanie obiektami ConfigMap i tajnymi danymi 153
    • Wyświetlanie obiektów 153
    • Tworzenie obiektów 154
    • Aktualizowanie obiektów 155
  • Podsumowanie 157

12. Obiekt Deployment 159

  • Twoje pierwsze wdrożenie 160
    • Wewnętrzne mechanizmy działania obiektu Deployment 160
  • Tworzenie obiektów Deployment 162
  • Zarządzanie obiektami Deployment 163
  • Aktualizowanie obiektów Deployment 164
    • Skalowanie obiektu Deployment 164
    • Aktualizowanie obrazu kontenera 165
    • Historia wersji 166
  • Strategie wdrażania 169
    • Strategia Recreate 169
    • Strategia RollingUpdate 170
    • Spowalnianie wdrażania w celu zapewnienia poprawnego działania usługi 174
  • Usuwanie wdrożenia 175
  • Podsumowanie 176

13. Integracja rozwiązań do przechowywania danych i Kubernetes 177

  • Importowanie usług zewnętrznych 178
    • Usługi bez selektorów 180
    • Ograniczenia usług zewnętrznych: sprawdzanie poprawności działania 182
  • Uruchamianie niezawodnych singletonów 182
    • Uruchamianie singletona MySQL 183
    • Dynamiczne przydzielanie woluminów 187
  • Natywne magazyny danych Kubernetes z wykorzystaniem obiektów StatefulSet 188
    • Właściwości obiektów StatefulSet 188
    • Ręcznie zreplikowany klaster MongoDB z wykorzystaniem obiektów StatefulSet 189
    • Automatyzacja tworzenia klastra MongoDB 192
    • Trwałe woluminy i obiekty StatefulSet 195
    • Ostatnia rzecz: sondy gotowości 196
  • Podsumowanie 196

14. Wdrażanie rzeczywistych aplikacji 197

  • Parse 197
    • Wymagania wstępne 198
    • Budowanie serwera parse-server 198
    • Wdrażanie serwera parse-server 198
    • Testowanie Parse 199
  • Ghost 200
    • Konfigurowanie serwera Ghost 200
  • Redis 203
    • Konfigurowanie instalacji Redis 204
    • Tworzenie usługi Redis 206
    • Wdrażanie klastra Redis 206
    • Zabawa z klastrem Redis 208
  • Podsumowanie 208

A. Budowanie klastra Raspberry Pi Kubernetes 211

  • Lista części 211
  • Flashowanie obrazów 212
  • Pierwsze uruchomienie: węzeł główny 213
    • Konfigurowanie sieci 213
    • Instalowanie Kubernetes 216
    • Konfigurowanie klastra 216
  • Podsumowanie 218

Skorowidz 219

  • Title: Kubernetes. Tworzenie niezawodnych systemów rozproszonych
  • Author: Kelsey Hightower, Brendan Burns, Joe Beda
  • Original title: Kubernetes: Up and Running: Dive into the Future of Infrastructure
  • Translation: Lech Lachowski
  • ISBN: 978-83-283-5236-0, 9788328352360
  • Date of issue: 2019-06-18
  • Format: Ebook
  • Item ID: kubern
  • Publisher: Helion