Details zum E-Book

Kubernetes. Tworzenie niezawodnych systemów rozproszonych

Kubernetes. Tworzenie niezawodnych systemów rozproszonych

Kelsey Hightower, Brendan Burns, Joe Beda

E-book

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

  • Titel: Kubernetes. Tworzenie niezawodnych systemów rozproszonych
  • Autor: Kelsey Hightower, Brendan Burns, Joe Beda
  • Originaler Titel: Kubernetes: Up and Running: Dive into the Future of Infrastructure
  • Übersetzung: Lech Lachowski
  • ISBN: 978-83-283-5236-0, 9788328352360
  • Veröffentlichungsdatum: 2019-06-18
  • Format: E-book
  • Artikelkennung: kubern
  • Verleger: Helion