Kubernetes. Tworzenie niezawodnych systemów rozproszonych - ebook
Kubernetes. Tworzenie niezawodnych systemów rozproszonych - 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!
Spis treści
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
Kategoria: | Hardware |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-5236-0 |
Rozmiar pliku: | 1,9 MB |