Skalierbare Container-Infrastrukturen: das Handbuch für Administratoren
Gespeichert in:
1. Verfasser: | |
---|---|
Format: | Buch |
Sprache: | German |
Veröffentlicht: |
Bonn
Rheinwerk Computing
2019
|
Ausgabe: | 2., aktualisierte und erweiterte Auflage |
Schlagworte: | |
Online-Zugang: | Inhaltstext Inhaltsverzeichnis |
Beschreibung: | Im Impressum fälschlicherweise als 1. Auflage ausgewiesen. |
Beschreibung: | 1380 Seiten Illustrationen 24 cm x 19 cm |
ISBN: | 9783836263856 3836263858 |
Internformat
MARC
LEADER | 00000nam a22000008c 4500 | ||
---|---|---|---|
001 | BV045098569 | ||
003 | DE-604 | ||
005 | 20200929 | ||
007 | t | ||
008 | 180723s2019 gw a||| |||| 00||| ger d | ||
015 | |a 18,N27 |2 dnb | ||
016 | 7 | |a 1161682368 |2 DE-101 | |
020 | |a 9783836263856 |c hbk. : EUR 79.90 (DE), EUR 82.20 (AT), CHF 102.90 (freier Preis) |9 978-3-8362-6385-6 | ||
020 | |a 3836263858 |9 3-8362-6385-8 | ||
024 | 3 | |a 9783836263856 | |
028 | 5 | 2 | |a Bestellnummer: 459/06385 |
035 | |a (OCoLC)1065973129 | ||
035 | |a (DE-599)DNB1161682368 | ||
040 | |a DE-604 |b ger |e rda | ||
041 | 0 | |a ger | |
044 | |a gw |c XA-DE-NW | ||
049 | |a DE-739 |a DE-M347 |a DE-91G |a DE-19 |a DE-29T |a DE-2174 |a DE-573 |a DE-703 |a DE-859 |a DE-860 |a DE-473 |a DE-B768 |a DE-83 |a DE-20 |a DE-861 |a DE-523 |a DE-355 |a DE-1043 | ||
082 | 0 | |a 005.73 |2 23/ger | |
084 | |a ST 230 |0 (DE-625)143617: |2 rvk | ||
084 | |a DAT 424f |2 stub | ||
100 | 1 | |a Liebel, Oliver |e Verfasser |0 (DE-588)1042738157 |4 aut | |
245 | 1 | 0 | |a Skalierbare Container-Infrastrukturen |b das Handbuch für Administratoren |c Oliver Liebel |
250 | |a 2., aktualisierte und erweiterte Auflage | ||
264 | 1 | |a Bonn |b Rheinwerk Computing |c 2019 | |
300 | |a 1380 Seiten |b Illustrationen |c 24 cm x 19 cm | ||
336 | |b txt |2 rdacontent | ||
337 | |b n |2 rdamedia | ||
338 | |b nc |2 rdacarrier | ||
500 | |a Im Impressum fälschlicherweise als 1. Auflage ausgewiesen. | ||
650 | 0 | 7 | |a Skalierbarkeit |0 (DE-588)4520890-6 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Kubernetes |0 (DE-588)1153019000 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Docker 1.12 |0 (DE-588)1116737825 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Container |g Informatik |0 (DE-588)1116639513 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Softwareproduktionsumgebung |0 (DE-588)4138444-1 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Virtualisierung |0 (DE-588)4839180-3 |2 gnd |9 rswk-swf |
650 | 0 | 7 | |a Docker |g Software |0 (DE-588)1173644687 |2 gnd |9 rswk-swf |
653 | |a RHEL Atomic | ||
653 | |a CoreOS | ||
653 | |a Docker | ||
653 | |a Kubernetes | ||
653 | |a OpenShift | ||
653 | |a Skopeo | ||
653 | |a Continous Delivery | ||
653 | |a Hochverfügbarkeit | ||
653 | |a Microservices | ||
653 | |a Deployment | ||
653 | |a Ansible | ||
653 | |a Scale Out | ||
653 | |a Nomad | ||
653 | |a systemd | ||
653 | |a Mesos | ||
653 | |a Orchestrierung | ||
653 | |a Buildah | ||
653 | |a Suse | ||
689 | 0 | 0 | |a Container |g Informatik |0 (DE-588)1116639513 |D s |
689 | 0 | 1 | |a Virtualisierung |0 (DE-588)4839180-3 |D s |
689 | 0 | 2 | |a Skalierbarkeit |0 (DE-588)4520890-6 |D s |
689 | 0 | 3 | |a Softwareproduktionsumgebung |0 (DE-588)4138444-1 |D s |
689 | 0 | 4 | |a Docker 1.12 |0 (DE-588)1116737825 |D s |
689 | 0 | |5 DE-604 | |
689 | 1 | 0 | |a Container |g Informatik |0 (DE-588)1116639513 |D s |
689 | 1 | 1 | |a Virtualisierung |0 (DE-588)4839180-3 |D s |
689 | 1 | 2 | |a Skalierbarkeit |0 (DE-588)4520890-6 |D s |
689 | 1 | 3 | |a Softwareproduktionsumgebung |0 (DE-588)4138444-1 |D s |
689 | 1 | 4 | |a Docker |g Software |0 (DE-588)1173644687 |D s |
689 | 1 | 5 | |a Kubernetes |0 (DE-588)1153019000 |D s |
689 | 1 | |5 DE-604 | |
710 | 2 | |a Rheinwerk Verlag |0 (DE-588)1081738405 |4 pbl | |
780 | 0 | 0 | |i Vorangegangen ist |z 9783836243667 |
856 | 4 | 2 | |m X:MVB |q text/html |u http://deposit.dnb.de/cgi-bin/dokserv?id=d3636e4510914dd8890a0bebc78593d0&prov=M&dok_var=1&dok_ext=htm |3 Inhaltstext |
856 | 4 | 2 | |m Digitalisierung UB Passau - ADAM Catalogue Enrichment |q application/pdf |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030489183&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |3 Inhaltsverzeichnis |
999 | |a oai:aleph.bib-bvb.de:BVB01-030489183 |
Datensatz im Suchindex
_version_ | 1804178728536768512 |
---|---|
adam_text | ■ ■ • • ■■ .......:• ■-.-••irn» • :rzn:r Tf * ..;•:« »
Auf einen Blick
■ 1 ••.•••• I i ... . • -1 ■ .1-- , I..» i. 5 .r . vnl. ..... .....»,.! ■
Auf einen Blick
TEIL I Brave New World?
1 Die neue alte Welt der Virtualisierung................................. 41
2 Container............................................................ 55
TEIL II Single-Node Container-Systeme
3 Container-Engines und-Plattformen, Basics und Konzepte..............‘ 79
4 Docker................................................................ 117
5 Container Security.................................................... 359
6 Die private Trusted (Docker-)Registry................................. 403
7 Weitere Container-Host-Plattformen.................................... 481
8 Fazit-(Single-Node-)Container-Plattformen......................... 503
TEIL III Skalierbare Container-Cluster und Container-Orchestrierung
9 Container-Cluster-von Planern und Orchestern.......................... 507
10 Schlüsselmeister im Container-Cluster:
Key/Value Stores und Service Registry/Discovery....................... 523
11 Kubernetes (K8s)...................................................... 555
12 Kubernetes-Control-Plane als Microservice-Architektur................. 665
13 Kubernetes-Cluster ohne Docker........................................ 711
14 Kubernetes-Cluster: Ressourcen verstehen und verwalten................ 753
15 Federated- und geografisch verteilte K8s-Cluster......................1163
16 K8s: Debugging, Rolling Upgrades, Fazit...............................1169
TEIL IV High-Level-Orchestrierungstools für Container-Infrastrukturen
(on Premise und in der Cloud)
17 OpenShift.............................................................1179
18 OpenShift-Setup.......................................................1201
19 OpenShift-Administration..............................................1233
20 Full-Featured Container-Security am Beispiel von OpenShift
und NeuVector.........................................................1307
21 Cloud-Hosted Kubernetes...............................................1315
22 Fazit zur Container-Orchestrierung.................................. 1325
TEIL V Software-Defined Storage für verteilte Container-Infrastrukturen
23 Ab in den Untergrund..................................................1329
24 Einige Checkpunkte für Planung, Aufbau und Betrieb
von Container-Clustern................................................1357
25 Was war, was ist, was sein wird:
Neue Meta-Ebenen und Verkomplizierung.................................1363
r.‘; .. /.
Inhalt
TEIL I Brave New World?
1 Die neue alte Welt der Virtualisierung 41
1.1 V2......................................................................... 41
1.2 Vorbemerkungen................................................................ 46
1.2.1 Verwendete Formatierungen........................................... 46
1.2.2 Weiterführende Hinweise............................................... 47
1.2.3 Beispieldateien....................................................... 47
1.3 Was dieses Buch sein/nicht sein soll.......................................... 47
1.3.1 Was es sein soll...................................................... 47
1.3.2 Was es nicht sein soll und nicht ist.................................. 47
1.4 Wie dieses Buch zu lesen ist.................................................. 48
1.4.1 Grundsätzliches....................................................... 48
1.4.2 Kapitel/Teile und Zielgruppen im groben Überblick..................... 48
1.5 Welche Teile des Buchs sind neu, welche wurden stark überabeitet?............. 48
1.6 In welchen Kapiteln finde ich welche Themen?.................................. 50
1.6.1 Themen nach Abschnitten/Schlagworten
mit grundlegenden Erklärungen......................................... 50
1.7 Verwendete Plattformen und Versionsspezifikationen............................ 53
1.7.1 Vorbetrachtungen...................................................... 53
1.7.2 Container-OS und die Zukunft.......................................... 54
2 Container 55
2.1 Warum Container?................................................................ 55
2.2 Microservices, Container und der pawlowsche Hund................................ 57
2.2.1 Wie erkläre ich es meinem CEO?......................................... 57
2.2.2 Die neue Welt der Microservices: Admins, DevOps-und Container-Teams.... 59
2.2.3 Die neue Welt der Microservices:
aus der Perspektive der CEOs/Entscheider............................... 61
Il® • •
■f f
■ p /;
i wf * f tnt tmïîii fim rr»»•* i**** v*• ■
Inhalt
5
Inhalt
2.3 Continuous Delivery/Continuous Integration und DevOps....................... 62
2.3.1 Semi- oder vollautomatisch:
Continuous Integration/Continuous Delivery ............................ 62
2.3.2 CD/CI und das Big-Bang-Release-Problem................................. 63
2.4 Continuous Delivery ........................................................ 64
2.4.1 Was verstehen wir darunter?............................................ 64
2.4.2 Continuous Delivery Pipelines....................................... 66
2.4.3 Commit-Stage........................................................... 67
2.4.4 Acceptance-Test-Stage.................................................. 67
2.4.5 Exkurs: Acceptance-Tests und Dreieinigkeit............................. 68
2.4.6 Load/Capacity-, Security- und Exploration-Tests........................ 68
2.4.7 Rollout/Go-Live........................................................ 69
2.4.8 Die Gates.............................................................. 69
2.4.9 Fazit: Wo kann CD nutzbringend eingesetzt werden? ..................... 69
2.4.10 Jenkins-Integration in Kubernetes ................................... 70
2.5 DevOps: Gewaltenteilung oder Kooperation?................................... 71
2.5.1 Grundsätzliche Betrachtungen........................................... 71
2.5.2 Vom DevOps-Paradigma/Hype zum Unwort................................... 71
2.53 Kommunikationsblackouts im DevOps-Team................................. 72
2.5.4 Das konkrete DevOps-Problem im klassischen Umfeld...................... 72
2.5.5 »Works for me« und anderer Nonsens im DevOps-Business -
und ein Ausweg?...................................................... 73
2.5.6 BizDevOps - und noch eine Silbe........................................ 75
TEIL II Single-Node Container-Systeme
3 Container-Engines und -Plattformen, Basics
und Konzepte 79
3.1 World of Tiers-Teil 1.................................................... 79
3.2 Container-Basics......................................................... 80
3.2.1 Namespaces, Security und Container-Konzepte ........................ 80
3.2.2 Enter Namespace-nsenter............................................. 82
3.2.3 Namespaces und Sicherheit? ....................................... 84
3.3 VMs-obsolet durch Container? ............................................ 88
3.3.1 Container vs. VM.................................................... 89
3.3.2 Packungsdichte und Ressourcen....................................... 91
6
3.4 Wann sind Container sinnvoll?.................................................. 94
3.5 Container-Engines/Container-Runtime und Komponenten im Überblick........... 94
3.5.1 Von LXC zu Docker...................................................... 95
3.5.2 Docker................................................................. 95
3.5.3 libcontainer, containerd und runC...................................... 96
3.5.4 runC, containerd und shim im Docker-Kontext............................ 97
3.5.5 runC als eigenständiges Container-Tool ............................... 100
3.5.6 (cri-)containerd-Wirrwarrim Kubernetes-Kontext........................ 103
3.5.7 LXD................................................................‘ 105
3.5.8 CoreOS bzw. Container-Linux und Rocket/rkt ........................... 107
3.5.9 CRI-0................................................................. 108
3.6 Überblick der Container-Formate............................................... 108
3.6.1 OCI —... Standardisierung?............................................ 109
3.6.2 Runtime Specs......................................................... 109
3.6.3 Image-Format.......................................................... 110
3.6.4 Das BSI und die lieben Container...................................... 112
3.6.5 Fazit................................................................. 113
3.7 Container: eine funktionale Übersicht......................................... 113
3.7.1 Aufbau eines Container-Flosts......................................... 114
3.7.2 Docker-Images......................................................... 114
3.7.3 Anzahl der Layer...................................................... 115
4 Docker 117
4.1 Docker-Versionen ................................................................ 117
4.1.1 Docker-Versionen, wichtige Meilensteine und Inkompatibilitäten.......... 117
4.1.2 Docker-LTS-Versionen und die Enterprise Edition ........................ 118
4.1.3 DDC, CE, EEB, EES, EEA- und der beständige Wechsel im Docker-Land.... 119
4.1.4 Betrachtete Plattformen und Docker-Versionen............................ 122
4.1.5 Funktionaler Überblick: Docker CU, dockerd, Registry.................... 122
4.2 Docker-Installation ............................................................. 123
4.2.1 Paketnamen und Dependencies............................................. 123
4.2.2 Docker-Installation unter Ubuntu 18.04 LTS.............................. 124
4.2.3 Docker-Installation unter RHEL/CentOS 7.4.............................. 124
4.2.4 Docker-Version unter CaaSP ............................................. 126
4.2.5 CaaSP- und BTRFS/Docker-Problematiken................................... 126
4.2.6 CaaSP-spezifische Docker-Konfigurationsdateien ......................... 127
4.2.7 Installation der Commercially Supported Docker-Engine................... 127
7
FS vv: • Inhalt
4.2.8 Docker CE, EE........................................................ 127
4.2.9 Storage-Driver-Nonsens unter Docker CE und EE........................ 130
4.2.10 Distributionsunabhängige Installation von Docker .................... 131
4.3 Deinstallation, Upgrade oder Umstellung auf andere Storage-Backends........ 132
4.3.1 Deinstallation........................................................ 132
4.3.2 Upgrade............................................................. 132
4.3.3 Umstellung des Storage-Backends.................................... 132
4.4 Docker und systemd-lntegration.......
4.4.1 systemd-Service-Units für Docker
133
133
4.5 Docker und Proxies.......................................................... 134
4.5.1 Docker-Daemon hinter einem Proxy betreiben........................... 134
4.5.2 Docker-Client-Settings für Proxies (Docker 17.07) .................. 135
4.5.3 Docker-Client- bzw. Image-Settings für Proxies (Docker 17.06)........... 135
4.6
Docker im Betrieb.............................................
4.6.1 Permanente Diensteinbindung...........................
4.6.2 Lokale HA.............................................
4.6.3 Verbose Mode ...........................................
4.6.4 Status-Überprüfung/Features...........................
4.6.5 Docker-Systeminformationen ...........................
4.6.6 Docker-Daemon-Konfigurationsmöglichkeiten.............
4.6.7 Mögliche Startoptionen/Schalter des Docker-Daemons....
4.6.8 Konfiguration per /etc/docker/daemon.json.............
4.6.9 Alternatives Docker-Verzeichnis als Konfigurationsbeispiel
4.6.10 Docker-CLI-Konfiguration..............................
4.6.11 Docker-Plugins........................................
135
136
136
137
137
139
139
140
141
143
144
144
4.7 Docker-Image-Management - Basics........................................ 144
4.7.1 Auszug der Docker-CLI-Subkommandos................................. 145
4.7.2 CLI-Strukturen seit Docker 1.13.................................... 146
4.7.3 docker container- und image-Subkommandos........................... 147
4.7.4 Einfaches Image-Management ........................................ 147
4.7.5 Docker-Namensräume und das Default-Registry-Problem................ 149
4.7.6 Docker-Images (unter docker.io) suchen ............................ 149
4.7.7 Image-Schema-Versionen............................................. 151
4.7.8 Offizielles CentOS-lmage von docker.io pullen...................... 151
4.7.9 Lokal verfügbare Docker-Images listen und filtern.................. 153
4.7.10 Meta-Informationen von lokalen Images abfragen..................... 157
4.7.11 Images löschen..................................................... 159
4.7.12 docker save load Images.......................................... 161
4.7.13 Dangling Images: The good and the bad none : none ................ 162
4.7.14 Build-History eines Images inspizieren............................. 164
8
165
166
166
167
168
171
171
171
173
174
175
175
176
177
178
179
180
180
183
184
187
187
188
190
190
191
193
194
195
196
197
197
198
198
199
200
202
203
205
205
9
Trusted Images................................................................
4.8.1 Ein eigenes, generisches Trusted Basis-Image erzeugen.................
4.8.2 Gescriptete Image-Erzeugung (YUM Based) ..............................
4.8.3 Mikro-Image »from scratch« mit go.....................................
4.8.4 Red Hats Container Health Index.......................................
4.8.5 Mikro-Image einer Legacy-Applikation .................................
4.8.6 Transformation von Legacy-Apps in Images..............................
4.8.7 Images: grundlegende Security-relevante Betrachtungen ................
Betrieb und Management von Docker-Containern...............................
4.9.1 Kurzübersicht der relevanten Docker-CLI-Kommandos.....................
4.9.2 Neues »docker contamer«-Subkommando...................................
4.9.3 docker history........................................................
4.9.4 Container starten - docker [container] run............................
4.9.5 Docker-Registry, Image, Container run, lokaler Datastore - the Big Picture ...
4.9.6 (Random-)Container-Names und automatische Löschung (run --rm).........
4.9.7 Container-HA: automatische Restarts...................................
4.9.8 docker [container] run --readonly.....................................
4.9.9 Detached Container im Hintergrund starten ............................
4.9.10 Auflisten von Container-Instanzen-docker ps............................
4.9.11 Starten und Stoppen existierender Container...........................
4.9.12 docker [container] rename.............................................
4.9.13 Container-Instanzen löschen: docker [container] rm/prune..............
4.9.14 docker [container] attach-Optionen....................................
4.9.15 Befehle im laufenden Container ausführen: docker [container] exec.....
4.9.16 docker [container] create.............................................
4.9.17 Container-Instanzen exportieren und als Images importieren............
4.9.18 Kopieren von Daten: Container zwischen Host...........................
4.9.19 docker checkpoint.....................................................
Prozessverwaltung im Container ...............................................
4.10.1 docker top............................................................
4.10.2 Prozesse im Container beenden.........................................
4.10.3 docker wait und Return/Exit-Codes.....................................
4.10.4 Den Container und alle in ihm laufenden Prozesse temporär pausieren...
4.10.5 Live-Events mit docker events.........................................
Container-Capabilities/Privilegien............................................
4.11.1 Prüfung und Auslesen der Capabilities.................................
Docker Logging ...............................................................
4.12.1 Log-Driver............................................................
4.12.2 Zentralisierte Logs für Container-Instanzen...........................
4.12.3 Container-Logs mit docker logs........................................
.. - ■ - - x ; ...... .
.................. mm : ..... ■ 11 i ;
fill
«mi ¡¿
pííK
ífSSiPV
m
iiliKISä
4.13 Einfache Applikationen im Container.............................................. 206
4.13.1 Vorbetrachtungen......................................................... 206
4.13.2 Installation von Applikationen im gestarteten Container.................. 207
4.14 Image-Modifikationen committen und taggen........................................ 211
4.14.1 Commit-Beispiel.......................................................... 212
4.14.2 Nachträgliches Taggen von Images......................................... 214
4.14.3 Exkurs-die :latest-Problematik........................................... 217
4.15 Layer-Strukturen................................................................. 217
4.15.1 Verzeichnisstrukturen auf dem lokalen Docker-Host........................ 217
4.15.2 Was ist beim letzten Commit passiert, wo liegt der neue Layer?........... 218
4.15.3 IDs der RW-Layer von gestarteten Containern und Querbezüge............... 218
4.15.4 Layer-Analyse und Flattening (Zusammenfassung) .......................... 219
4.16 Limitierte Container-Instanzen .................................................. 221
4.16.1 docker [container] stats................................................. 222
4.16.2 Mögliche Limitierungen................................................... 222
4.16.3 Beispiele aus der Praxis für limitierte Container-Instanzen.............. 224
4.16.4 Nachträgliche Limitierung................................................ 225
4.17 Docker-Images erstellen (docker build) und verwalten............................. 226
4.17.1 Best-Practice/File-Hierarchie............................................ 227
4.17.2 docker [image] build .................................................... 227
4.17.3 Dockerfile-Direktiven/Instruktionen...................................... 228
4.17.4 Build-Anwendungsbeispiel: Apache-Container............................... 240
4.17.5 Build-Exkurs: Single-Layer-»Squash«-lmages............................... 243
4.17.6 Multi-Stage Builds ab Docker 17.06....................................... 246
4.17.7 Docker-Images mit systemd .............................................. 247
4.18 Best Build Practices............................................................. 250
4.18.1 Wegwerf-Produkte: Container sind kurzlebig und jederzeit
reproduzierbar.......................................................... 250
4.18.2 Wer hat s gemacht?....................................................... 251
4.18.3 Wie ist es bezeichnet?................................................... 251
4.18.4 Verwenden eines eigenen Build-Ordners pro Template....................... 251
4.18.5 Verwendung eines .dockerignore-Files..................................... 251
4.18.6 Schlanke Images......................................................... 252
4.18.7 Nur ein Prozess pro Container............................................ 252
4.18.8 Anzahl der Layer minimieren/niedrig halten .............................. 253
4.18.9 Multi-Line-Argumente in Befehlen (alphanumerisch) sortieren............. 253
4.18.10 Build-Cache........................................................... 253
4.18.11 Image-Build und Container-Test-run ohne Docker?......................... 254
4.18.12 Buildkit................................................................ 254
10
4.19 Docker-Networking............................................................. 254
4.19.1 Packungsdichten und die Realität...................................... 255
4.19.2 Der Docker-Netzwerkstack und Kubernetes............................... 256
4.19.3 docker network-Hilfesystem............................................ 256
4.19.4 Basics: Netzwerkverbindung zum Container.............................. 257
4.19.5 Docker und iptables................................................... 258
4.19.6 IP eines gestarteten Docker-Containers auslesen....................... 261
4.19.7 lP-Zuweisung und die /etc/hosts im Container.......................... 262
4.19.8 Komplette Netzwerk-Info eines Containers auslesen ................... 263
4.19.9 Docker networks: bridge, host, none und mehr.......................... 264
4.19.10 Kommunikation: Welt zu Container, Docker-Portmapping................. 264
4.19.11 Portmapping explizit setzen ......................................... 267
4.19.12 Docker-Netzwerke einrichten und modifizieren......................... 270
4.19.13 Docker-Netzwerk-Driver............................................. 272
4.20 Container per Docker-Netzwerk miteinander verknüpfen.......................... 273
4.20.1 Beispiel-Setup: Apache/OpenLDAP-Container vernetzt.................... 273
4.20.2 Verknüpfung der Container über userdefinierte Netzwerke............... 277
4.20.3 docker network prune.................................................. 280
4.21 Docker-Compose................................................................ 280
4.21.1 Portierbarkeit des Designs? Jein...................................... 281
4.21.2 Herkunft und Anwendungsbereiche....................................... 281
4.21.3 Bearbeitung von Yaml-Konfigurationsdateien............................ 282
4.21.4 Was passiert beim Rollout?.......................................... 282
4.21.5 Installation.......................................................... 283
4.21.6 Compose-Praxisbeispiel................................................ 283
4.21.7 Apache und OpenLDAP als Compose-Rollout............................... 284
4.21.8 Build and Run......................................................... 285
4.21.9 Handling der Services per docker-compose.............................. 287
4.21.10 Auszüge der gängigsten docker-compose-Sub-Befehle.................. 288
4.21.11 Docker-Compose-Startup - Dependencies................................ 291
4.22 Docker-Storage-Driver ........................................................ 293
4.22.1 Storage-Driver (local)................................................ 293
4.22.2 Übersicht der Storage-Driver ......................................... 294
4.22.3 Storage-Driver- und Filesystem-Kombinationen.......................... 295
4.22.4 So what?-Storage-Driver Entscheidungsfragen........................... 296
4.22.5 Shared Storage-Systeme und der Storage-Driver......................... 296
4.22.6 Hot Replacement von Worker/Container-Nodes............................ 297
4.23 Deep Dive in die Beziehung zwischen Images bzw. Container-Instanzen
und dem Storage-Driver....................................................... 297
4.23.1 Grundsätzliches: Images, Layer und der Storage-Driver................. 297
11
4.23.2 Graphdriver?........................................................... 298
4.23.3 Aufgaben des Storage-Drivers........................................... 298
4.23.4 Exkurs: Secure Content Hashes und Content addressable Storage
ab Docker 1.10...................................................... 299
4.23.5 Image-Layering und Sharing gemeinsamer Layer......................... 300
4.23.6 Read/Write-Container, Readonly Image, Storage-Driver
und Datenspeicherung................................................ 300
4.23.7 Alter Hund und neue Tricks? CoW für XFS................................ 303
4.24 Storage-Driver im Detail....................................................... 304
4.24.1 AUFS ................................................................. 304
4.24.2 OverlayFS ........................................................... 304
4.24.3 Neuerungen in Overlay(FS)2............................................. 308
4.24.4 BTRFS................................................................ 310
4.24.5 Devicemapper-Storage-Driver........................................... 316
4.24.6 Umbau des Storage-Drivers auf direct-lvm (RHEL/CentOS 7.x)............. 321
4.24.7 ZFS.................................................................. 329
4.24.8 Storage-Driver, Image-Layer und Performance............................ 333
4.24.9 Schlussbemerkung....................................................... 334
4.25 Data-Sharing mit Docker-Volumes................................................ 335
4.25.1 Vorab: Der Blick auf das große Ganze - Docker-Volumes im »echten«
Cluster-Kontext....................................................... 335
4.25.2 Docker-Data-Volumes.................................................... 336
4.25.3 Host-mounted Data-Volumes ............................................. 337
4.25.4 Data-Volume-Mounts vom Host für OpenLDAP-Container..................... 340
4.25.5 »Docker-managed« Data-Volumes ......................................... 343
4.25.6 Readonly Data-Volumes.................................................. 345
4.25.7 (Anonyme) Volumes entfernen............................................ 345
4.25.8 Zusammenfassung........................................................ 346
4.26 SSSD to the Rescue - konsistente ID-Mappings für Daten in Containern
und Container-Clustern........................................................ 346
4.26.1 ID-Divergenzen......................................................... 347
4.26.2 LDAP/AD und SSSD..................................................... 347
4.26.3 Ausgangsbasis: Der Verzeichnisdienst................................... 348
4.26.4 Pre Flight Requirements.............................................. 350
4.26.5 Vereinfachtes Test-Setup .............................................. 351
4.26.6 Keine Wildcard-IDS, sondern feste Ranges und RIDs ................. 356
4.26.7 Image Build and Run mit AD-IDs ........................................ 356
4.26.8 Statische User- und Gruppen-IDs in den Dockerfiles/-lmages?............ 357
12
. . - ,Y,t .... w».» -
Inhalt
■* U UÜMt ■«I».i km Ö«• i. .fiiiutU,
5 Container Security
359
5.1 Docker mit TLS/SSL............................................................ 359
5.1.1 Grundlagen ............................................................ 360
5.1.2 SSL-Standard und veraltete Protokolle................................. 361
5.1.3 VorbetrachtungenzurZertifikatserzeugung ............................... 361
5.1.4 Anpassungen der openssl.cnf.......................................... 362
5.1.5 Erzeugung der Zertifikate mit angepasster OpenSSL-Konfiguration....... 364
5.1.6 CA erzeugen........................................................... 4 365
5.1.7 Zertifikats-Request erzeugen........................................... 366
5.1.8 Zertifikats-Request signieren.......................................... 367
5.1.9 Key ......................................................... 369
5.1.10 Erzeugte Dateien und weitere Tasks................................. 369
5.1.11 Weitere Docker-Hosts und Zertifikate............................... 370
5.1.12 Daemon-Startparameter.................................................. 370
5.1.13 Test des Client-Zugriffs per TL5....................................... 371
5.1.14 Übersicht der zur Verfügung stehenden TLS-Flags für Server und Client. 373
5.2 Images signieren, verifizieren und verwalten mit Skopeo und Atomic............ 374
5.2.1 Funktionaler Überblick............................................. 375
5.2.2 Setup.................................................................. 376
5.2.3 Remote Inspect......................................................... 377
5.2.4 Skopeo Transports.................................................... 379
5.2.5 Image Signing.......................................................... 379
5.2.6 Digests, Manifeste und Signaturen: Mögliche Fehlerquellen minimieren.. 381
5.2.7 Hands-On: Images mit Skopeo und Atomic signieren ......... 381
5.2.8 Verify................................................................. 385
5.2.9 atomic diff............................................................ 385
5.3 »Manuelle« Vulnerability-Scans.................................................. 387
5.3.1 Atomic Scan (CVE-Scanner).............................................. 387
5.3.2 CVE-Scanner-Alternativen zu Atomic Scan bzw, OpenSCAP.................. 390
5.3.3 Image-Scanning mit Anchore............................................. 390
5.3.4 Manueller Anchore-Scan auf dem Container- bzw. Build-Host.............. 391
5.3.5 Ein paar kleine Anwendungsbeispiele.................................... 395
5.3.6 CVE-Analyse............................................................ 396
5.3.7 Bench...........................................................’..... 398
5.3.8 Testlauf mit Docker Bench ............................................. 399
5.3.9 Docker Online Image Scanning........................................... 402
5.4 Fazit........................................................................... 402
13
6 Die private Trusted (Docker-)Registry
403
6.1 Die Registry im Detail.......................................................... 403
6.1.1 Multi-Purpose Registry: Auswahlkriterien................................. 403
6.1.2 Docker-Registry: up and running?......................................... 404
6.1.3 Registry-Architektur..................................................... 405
6.2 Vorbereitungen zum Setup.......................................................... 407
6.2.1 Insecure Registry........................................................ 407
6.2.2 Das Docker-Default-Registry-Image........................................ 407
6.2.3 Konfigurations-Override.................................................. 409
6.3 Registry-Setup-Möglichkeiten...................................................... 411
6.3.1 Die Container-basierte Docker-Registry................................... 412
6.4 Registry-Setup: Vorbereitungen und Betrieb........................................ 412
6.4.1 Vorbereitungen für den Upload in eine Insecure-Registry.................. 412
6.4.2 Vorbereitungen: Regeln zum Image-Tagging für Registry-Uploads
verstehen.............................................................. 413
6.4.3 Upload/Push eines Images in die Registry ................................ 413
6.4.4 Löschen von Images in einer privaten, einfachen Docker-Registry?......... 414
6.4.5 Docker-Filesystem-Layer, Manifeste und die Garbage-Collection............ 415
6.5 Docker-Registry mit TLS........................................................... 419
6.5.1 Zertifikatslokationen.................................................... 419
6.5.2 CA, Zertifikat und Key für den Registry-Host............................. 420
6.5.3 Start und Betrieb der Registry mit TLS................................... 421
6.5.4 Push in die Registry mit TLS............................................. 422
6.5.5 Verbindung zur TLS-gesicherten Registry mit Client-Zertifikat............ 424
6.5.6 Troubleshooting-Tipps.................................................... 424
6.6 Zentrale Registry-Authentifizierung via LDAP/TLS.................................. 424
6.6.1 Setup des LDAP-Images mit TLS............................................ 426
6.6.2 Setup des http-Proxys.................................................. 429
6.6.3 Build Start des Registry-LDAP-http-Proxys per Compose............. 433
6.6.4 Test des Setups........................................................ 435
6.6.5 Zugriffskontrollen....................................................... 438
6.7 (Docker-)Registry mit AD-Authentifizierung........................................ 440
6.7.1 Konzepte und Verfahren .................................................. 440
6.7.2 Simple Bind.............................................................. 440
6.7.3 SSO/Kerberos-Anbindung................................................... 441
6.8 Registry-Alternativen: Artifactory................................................ 441
6.8.1 Aufbau und Funktionsweise................................................ 442
6.8.2 Installation via Docker-Compose.......................................... 442
14
444
445
446
447
449
449
450
452
453
453
453
454
454
456
457
457
460
464
466
466
466
467
468
468
469
470
470
472
474
475
475
476
478
481
481
481
15
6.8.3 Artifactory-Administration........................................
6.8.4 Repo-Setup........................................................
6.8.5 AD-Anbindung......................................................
6.8.6 Image-Upload......................................................
6.8.7 SSL...............................................................
6.8.8 Xray..............................................................
6.8.9 Einrichtung und Scanning..........................................
6.8.10 Watches und Build-Integration.........i...........................
6.8.11 Artifactory und Xray: Preise......................................
Registry-Alternativen: Sonatype Nexus.....................................
6.9.1 Features und Funktionen...........................................
6.9.2 Installationsvorbetrachtungen.....................................
6.9.3 Nexus bzw. Nexus Repository Manager (NRM) 3 als Bare-Metal-
Installation......................................................
6.9.4 Überblick über die Datenstrukturen des NRM3.......................
6.9.5 Administration des NRM............................................
6.9.6 Docker-Repo einrichten............................................
6.9.7 Nexus Repository Manager: SSL mit integriertem »Jetty«-HTTP-Server
6.9.8 Externe Authentifizierungsquellen.................................
6.9.9 RBAC..............................................................
6.9.10 Rollen und Privilegien über das AD................................
6.9.11 HA für NRM........................................................
6.9.12 Preise für NRM Pro................................................
Registry-Alternativen: VMware Harbor......................................
6.10.1 Harbor-Architektur................................................
6.10.2 Die Harbor-Container (ohne Notary und Clair)......................
6.10.3 Installation und Vorbereitungen...................................
6.10.4 Security-Integration: Vulnerability-Scans und Content-Signing.....
6.10.5 Harbor-Setup mit SSL/TLS, Notary und Clair........................
6.10.6 Login und Einstellungen...........................................
6.10.7 Repo einrichten, Tag und Push.....................................
6.10.8 Image-Scanning....................................................
6.10.9 Images beim Push signieren........................................
Fazit zu den Container-Registries.........................................
Weitere Container-Host-Plattformen
Vorbetrachtungen
7.1.1 Who s on?
Inhalt
7.1.2 Im Detail.......................................................... 482
7.1.3 Kandidaten?........................................................ 482
7.2 Atomic Host (RHEL/CentOS)................................................. 483
7.2.1 Die Funktionsweise von Atomic Host und der Aufbau des Dateisystems. 484
7.2.2 Upgrades und Rollbacks............................................. 484
7.2.3 Paketinstallation und Betrieb/ManagementdesOS...................... 487
7.2.4 Kubernetes nachinstallieren ....................................... 487
7.2.5 Sonstige Managementfunktionen ..................................... 488
7.3 Rocket Science? - CoreOS.................................................. 489
7.3.1 CoreOS: Nicht vorhandene Pakete und Rolling Upgrades............... 490
7.3.2 Upgrades........................................................... 490
7.3.3 CoreOS-Anpassungen................................................. 493
7.3.4 Nach dem Start .................................................... 495
7.4 SUSE CaaSP................................................................ 495
7.4.1 Wie funktioniert es?............................................... 495
7.4.2 Unter der Haube.................................................... 497
7.4.3 Login und Überblick................................................ 498
7.5 SLAs und Preise........................................................... 501
7.6 Container-Node-Plattformen in der Cloud................................... 501
8 Fazit -(Smgle-Node-)Container-Plattformen 503
8.1 Der Wandel............................................... 503
8.2 »Die« Container-Plattform?............................... 503
TEIL III Skalierbare Container-Cluster
und Container-Orchestrierung
9 Container-Cluster-von Planern und Orchestern 507
9.1 Worum es geht-the Big Picture............................................ 507
9.2 World of Tiers-Teil 2.................................................... 508
9.2.1 World of Tiers - die Welt der Schichten.......................... 508
9.2.2 Scheduling vs. Orchestration?.................................... 508
9.2.3 Die Layer/Tiers und ihr Zusammenwirken........................... 508
16
9.2.4 Container-Cluster ................................................. 509
9.2.5 Unser Ziel......................................................... 510
9.3 Vorbereitungen............................................................. 510
9.3.1 Distributions- und Plattform-Fragen................................ 510
9.3.2 CaaSP, Kubernetes und OpenShift?................................... 512
9.4 Pre-Flight-Requirements: Zeitsynchronisation............................... 513
9.4.1 NTP und die Relativität............................................ 513
9.4.2 NTP-Basics ........................................................ 513
9.4.3 NTP-Setup.......................................................1 514
9.4.4 NTP-Setup mit zusätzlichen Peers................................... 518
9.4.5 Chrony............................................................. 518
9.5 Pre-Flight-Requirements: pssh.............................................. 519
9.5.1 Grundsätzliches ................................................... 519
9.5.2 Setup von pssh auf allen Nodes..................................... 519
9.5.3 pssh - korrespondierende Dateien/Einstellungen..................... 520
10 Schlüsselmeister im Container-Cluster:
Key/Value Stores und Service Registry/Discovery 523
10.1 Key/Value Stores.............................................................. 524
10.1.1 Vorbetrachtungen..................................................... 524
10.1.2 Key/Value Stores im Detail........................................... 524
10.1.3 Backup- und Verfügbarkeitsstrategien................................. 525
10.2 Service Discovery/Registry.................................................... 526
10.2.1 Sichten - und nicht vernichten....................................... 526
10.2.2 Service Discovery im Detail.......................................... 527
10.2.3 Statisch vs. dynamisch............................................ 528
10.2.4 Konfigurationsreplikation............................................ 529
10.3 Key/Value Stores im Kurzüberblick........................................... 530
10.3.1 Teile und herrsche................................................... 530
10.3.2 Entscheidungsfindung-Raft vs. Paxos................................ 531
10.3.3 Raft-Demo............................................................ 532
10.3.4 etcd................................................................ 532
10.3.5 Consul............................................................. 535
10.3.6 Zookeeper............................................................ 536
10.4 Key/Value-Store-Cluster am Beispiel von Consul................................ 536
10.4.1 Die Consul-Komponenten in der Übersicht.............................. 537
17
10.4.2 Zusammenfassung der Consul-Kernfunktionen und -Features............... 538
10.4.3 Zusammenfassung der Consul-Basisarchitektur und
Funktionsbeschreibung................................................. 539
10.4.4 Consul-Service-Monitoring im Detail................................... 540
10.4.5 Setup eines Consul-Clusters: Vorbetrachtungen......................... 541
10.4.6 Einfache Consul-Grundkonfiguration.................................... 542
10.4.7 Consul als generischer Key/Value Store für Container-Cluster.......... 549
10.4.8 Endpunkte/Endpoints.................................................. 551
10.4.9 Cluster-Leader-(Re-)Election.......................................... 552
11 Kubernetes (K8s) 555
11.1 Kubernetes im Überblick....................................................... 555
11.1.1 Vom Borg zum Steuermann............................................... 555
11.1.2 Kubernetes und CRI-0.................................................. 556
11.1.3 Releases, Changes und kein Ende....................................... 556
11.2 Dockerd, cri-containerD, CRI-O? - K8s-Container-Engines, KISS,
redundante KV Stores und die Zukunft....................................... 558
11.2.1 Docker, Docker, Docker...? Nö. CRI-O. Oder cri-containerd............. 559
11.2.2 K8s, Key/Value Backends, nice-to-have HA und SPoFs.................... 561
11.3 Kubernetes-Komponenten........................................................ 562
11.3.1 Komponenten eines Single-Master-K8s-Clusters.......................... 562
11.3.2 Dienste auf den Kubernetes-Master-Nodes............................... 564
11.3.3 Dienste auf den Kubernetes-Workern aus technischer Sicht.............. 567
11.4 Networking in Kubernetes...................................................... 569
11.4.1 Unterschiede zu Docker................................................ 570
11.4.2 kubenet- bzw. CNI-Plugins............................................. 571
11.4.3 Netzwerkkommunikation im K8s-Cluster.................................. 572
11.4.4 Überblick über einige Kubernetes-Netzwerk-Plugins .................... 573
11.5 etcd: Key/Value Store für Kubernetes im Detail ............................. 574
11.5.1 Grundsätzliches ...................................................... 574
11.5.2 Arbeitsweise/Funktionsprinzip von etcd im Zusammenspiel mit K8s..... 575
11.5.3 K8s und Redundanzen................................................... 575
11.5.4 Start eines Single-etcd-Service....................................... 578
11.5.5 etcd-Datenstrukturen im Detail ....................................... 579
11.5.6 etcd: Hot-Backup...................................................... 580
11.6 Redundanter etcd-Cluster - Installation und Setup........................... 581
11.6.1 etcd-Konfiguration ................................................... 583
18
itKüü i-
.¿¡iims. i
Inhalt ¿pH ■
; «ücuiüj i; u iuu iüuii ¡¿¡Mi
11.6.2 Manueller etcd-Cluster-Start.......................................... 588
11.6.3 etcd-lntegration in systemd und lokale HA............................. 590
11.6.4 etcd-Start via systemd-Unit........................................... 591
11.6.5 Failover-Test......................................................... 593
11.7 Flannel CNI für Kubernetes-Cluster ............................................ 593
11.7.1 Kubernetes-Cluster und Overlay-Networking........................... 593
11.7.2 Overlay Network mit Flannel........................................ 594
11.7.3 Flannel-Dependencies................................................ 596
11.7.4 Flannel-Setup auf den drei Nodes...................................... 596
11.7.5 Backends.............................................................. 598
11.7.6 Exkurs: Multiple Flannel-Overlay-Netzwerke ........................... 602
11.8 Kubernetes-Setup-Varianten..................................................... 603
11.8.1 Flavours?............................................................. 603
11.8.2 Minikube? Nö.......................................................... 604
11.8.3 Hyperkube - Aktuell: wer will. Zukünftig: vielleicht ein Muss......... 605
11.8.4 kubeadm now?.......................................................... 607
11.9 Einfaches Kubernetes-Single-Master-Setup (3 etcd-Nodes).................... 608
11.9.1 Vorbetrachtungen: API-Server, Controller Manager und Scheduler........ 608
11.9.2 Preflight-Checks und Tasks............................................ 608
11.9.3 Setup von kube-apiserver........................................... 608
11.9.4 Setup des kube-controller-manager..................................... 614
11.9.5 Setup des kube-scheduler............................................ 615
11.9.6 Scheduler-Algorithmen: Predicates und Priorities...................... 616
11.10 Kubernetes-Worker-Konfigurationen für Single Master......................... 618
11.10.1 Der Node Controller (kube-controller-manager) und die Verfügbarkeit
der Worker-Nodes.................................................. 618
11.10.2 Kubelet-Konfiguration................................................. 620
11.10.3 kube-proxy-Konfiguration........................................... 621
11.10.4 Sonstiges: zentrale Konfigurationsparameter........................... 622
11.10.5 kubectl............................................................... 622
11.10.6 kubectl-Bash-Completion............................................... 623
11.10.7 Start der Master-und aller Worker-Dienste ...................... 624
11.10.8 DNS (kube-dns/CoreDNS).............................................. 626
11.11 Redundante und hochverfügbare Kubernetes-Master:
Konzepte und Möglichkeiten.................................................. 627
1111.1 Vorbetrachtungen: Ist/Soll-Stand...................................... 628
1111.2 Vorbetrachtungen: mögliche Vorgehensweisen............................ 628
1111.3 Pre-Flight-Requirements und konkrete Setup-Vorbetrachtungen........... 629
1111.4 Das Multi-Active-Problem.............................................. 630
19
11.11.5 Zertifikatsanpassungen und Cluster-Aüase............................. 630
11.11.6 Failover-Varianten................................................... 631
11.12 Vorbereitendes Setup der Kubernetes-Master für Hot-Failover................ 632
11.12.1 Hot-Failover Kubernetes-Master....................................... 632
11.12.2 Vorbereitende Konfiguration....................................... 632
11.12.3 Kubectl-Zertifikatsfehlermeldungen und kubectl-Debugging............. 635
11.13 Pacemaker-Integration der drei Kubernetes-Master........................... 636
11.13.1 Vorbetrachtungen - HA der K8s-Kernkomponenten mit Pacemaker....... 636
11.13.2 Pacemaker und Corosync............................................... 636
11.13.3 Pacemaker: Agenten, Ressourcen und Constraints im Kurzüberblick... 638
11.13.4 Pakete und vorbereitende Tasks....................................... 640
11.13.5 Corosync-Setup ...................................................... 641
11.13.6 Benötigte Grundeinstellungen....................................... 644
11.13.7 Erzeugung der benötigten Pacemaker-Ressourcen für den K8s-Cluster. 645
11.13.8 Erzeugen der weiteren Kubernetes-Master-Ressourcen................... 647
11.13.9 Gruppieren der kube*-Ressourcen ..................................... 647
11.13.10 Klonen der Gruppe.................................................. 647
11.13.11 IP-Colocation .................................................... 648
11.13.12 etcd und flanneld.................................................... 648
11.13.13 Inbetriebnahme des Pacemaker-gesteuerten K8s-Master-Clusters...... 649
11.13.14 Failover-Test...................................................... 651
11.13.15 Grafisches Pacemaker-Cluster-Management mit HAWK2.................... 651
11.13.16 Grafisches Pacemaker-Cluster-Management mit der PCS-GUI.............. 654
11.13.17 Stonith-ein kurzer Überblick......................................... 655
11.13.18 Grundlegende Management-Tasks und -Regeln für Pacemaker-Cluster... 657
11.14 Setup eines K8s-Multi-Node-Clusters mit SUSE CaaSP......................... 657
11.14.1 Setup und Rollenauswahl.............................................. 657
11.14.2 Rollout und Provisionierung.......................................... 660
11.14.3 Login und Überblick.................................................. 661
12 Kubernetes-Control-Plane als
Microservice-Architektur 665
12.1 Vorbetrachtungen zum Setup einer Pod-basierten Kubernetes-Control-Plane...... 665
12.2 Setup........................................................................ 668
12.2.1 Setup-Voraussetzungen und Vorbetrachtungen ........................ 668
12.2.2 Achtung Kübelet 1.11 und statische (Pod-)Manifests............... 668
12.2.3 Repositories und Installation...................................... 669
20
12.2.4 Erforderliche Pakete.................................................. 669
12.2.5 cgroupfs-Fehler im kübelet................................................ 670
12.2.6 Von der Installation der Pakete erzeugte Files............................ 670
12.2.7 kubelet-Service-Unit.................................................... 671
12.2.8 Swapon/off................................................................ 672
12.2.9 Dynamische Kubelet-Konfiguration ab K8s 1.10............................. 673
12.2.10 Stats-Fehler im Log des Kubelet-Containers.............................. 675
12.2.11 Verfügbare kubeadm-init-Direktiven........................................ 675
12.3 Kubernetes-Initialisierung mit kubeadm init..................................... 677
12.3.1 Pre-Flight-Requirements................................................... 677
12.3.2 Rollout des Masters....................................................... 678
12.3.3 Achtung: Token-Fragen..................................................... 681
12.3.4 Post-Initialisierungs-Tasks (kubectl)..................................... 682
12.3.5 kubectl auf weiteren Nodes gangbar machen................................. 682
12.3.6 Weitere wichtige Initialisierungsdateien.................................. 683
12.3.7 Join weiterer K8s-Nodes................................................... 683
12.3.8 etcd-Sidecar und Kubernetes............................................... 685
12.3.9 Under the Hood - was ist beim Setup passiert?............................. 686
12.4 Einzelschritte des kubeadm init................................................ 690
12.4.1 Einzel-Tasks des kubeadm init............................................. 691
12.4.2 Schrittweise Cluster-Generierung per kubeadm [alpha] phase................ 691
12.5 Pod-basiertes Overlay-Netz..................................................... 696
12.5.1 Weave................................................................... 696
12.5.2 Daswar s?................................................................. 700
12.6 Arbeiten mit Pod-basiertem etcd ............................................... 700
12.7 Verfügbarkeit und Ausfallsicherheit der K8s-Komponenten im Pod-AAodell......... 702
12.7.1 Redundanter, realer etcd-Cluster für K8s im Container-Setup .............. 703
12.7.2 Das MasterConfiguration-Objekt........................................... 704
12.7.3 kubeadm init per config-File.............................................. 706
12.7.4 Erzeugen der weiteren Master.............................................. 706
12.7.5 »Easy«-HA in Kubernetes 1.11? Leider nein................................. 709
13 Kubernetes-Cluster ohne Docker 711
13.1 Kubernetes-Cluster mit CRI-0 als Container-Engine........................... 711
13.1.1 Das Big Picture und der prozedurale Ablauf......................... 711
13.1.2 Stable? Yes......................................................... 713
13.1.3 Setup-Voraussetzungen.............................................. 713
21
IB.1.4 Erforderliche Pakete installieren..................................... 714
13.1.5 Haben und nicht haben: crictl......................................... 714
13.1.6 Setup................................................................. 714
13.1.7 Netzwerk.............................................................. 715
13.1.8 kubeadm-init-Setup mit CRI-0.......................................... 718
13.1.9 Low-Level Management mit crictl....................................... 719
13.2 Buildah, Podman und Skopeo: (Docker-)lmages ohne Docker erstellen
und verwalten ................................................................ 722
13.3 Buildah: »Look Mom, no Docker...«.............................................. 723
13.3.1 Buildah: Funktionsweise und Installation.............................. 724
13.3.2 Tests und Buildah-Beispiele........................................... 724
13.3.3 Involvierte Konfigurationsdateien..................................... 725
13.3.4 Image-Import.......................................................... 728
13.3.5 Buildah: CLI-Handling und Image-Verwaltung............................ 729
13.3.6 Image-Konfiguration mit Buildah modifizieren.......................... 736
13.3.7 Anpassung und Commit des Containers................................... 736
13.3.8 Push nach docker.io................................................... 739
13.4 Image Build mit Kaniko......................................................... 740
13.4.1 Image-Build ........................................................ 740
13.5 Podman......................................................................... 741
13.5.1 Lib-Sharing........................................................... 743
13.5.2 Installation ......................................................... 744
13.5.3 Podman: Praktische Beispiele.......................................... 744
13.5.4 Create und run (simple Container)..................................... 745
13.5.5 Create und Run im Pod................................................. 746
13.6 Podman vs crictl......................................................... 748
13.6.1 crictl und Podman im Vergleich........................................ 749
13.6.2 Funktionsunterschiede und Gemeinsamkeiten............................. 750
13.7 Kompose - der Docker-Compose-Konverter für K8s................................. 750
14 Kubernetes-Cluster: Ressourcen verstehen
und verwalten 753
14.1 kubectl...................................................................... 753
14.1.1 kubectl-Bash-Completion ............................................ 753
14.1.2 Client/Server-Versionen............................................... 754
14.1.3 Das kubectl-Kommando.................................................. 754
22
754
755
756
757
759
760
763
764
765
765
765
768
768
770
770
772
772
773
773
111
778
780
780
784
785
786
787
788
788
788
792
792
793
793
796
797
797
23
14.1.4 kubectl-Konfiguration............................................
14.1.5 Die wichtigsten kubectl-Subkommandos in der Übersicht............
14.1.6 Die kubectl-Manpages.............................................
14.1.7 Welche Ressourcen bzw. Workloads können im K8s-Cfuster
via kubectl-CU verwaltet werden?.................................
14.1.8 kubectl api-resources............................................
14.1.9 API-Versionierungsdickicht.......................................
14.1.10 kubectl explain Ressource .....................................
14.1.11 K8s-Ressourcen direkt mit kubectl run/create deployen...........
14.1.12 Verbose Mode und kubectl-Debugging..............................
14.1.13 Der kubectl-run --restart=-Schalter und seine Auswirkung
auf erzeugte Objekte.............................................
14.1.14 Einfache kubectl-Beispiefe im Hinblick auf erzeugte API-Objekte.
14.1.15 kubectl-Generatoren.............................................
14.1.16 Grundlegende K8s-Cluster-lnformationen abfragen.................
Kleine Kubernetes-Cluster und »Taint Nodes«..............................
14.2.1 Was sind Taints und Tolerations?.................................
14.2.2 Taint-Abfrage unseres Masters....................................
14.2.3 Beispiele für das (Un-)Tainten von Nodes.........................
(Worker-)Node-Kapazitäten................................................
14.3.1 Analyse..........................................................
14.3.2 Weitere Node-Informationen abfragen..............................
14.3.3 Under Pressure...................................................
Ressourcen im Kubernetes-Cluster ausrollen...............................
14.4.1 Was passiert eigentlich beim Ausrollen einer Ressource?..........
14.4.2 Vereinfachter Ablauf.............................................
14.4.3 ImagePullPolicies................................................
14.4.4 Default-Verteilungsstrategien des Schedulers für die Worker-Nodes
14.4.5 Unterschiedliche bzw. mehrere Ressourcen in einem YAML-File .....
14.4.6 Manifest-Versionierung...........................................
Pods.....................................................................
14.5.1 Technische Details...............................................
14.5.2 Pods und Startup-Orderings der Container?........................
14.5.3 K8s-Besonderheit: Das »pause«-lmage, der Pod
und Namespace-Reservierungen.....................................
14.5.4 K8s-Image-Pull und (lokale) Trusted Registries...................
14.5.5 Erstellen eines Pods.............................................
14.5.6 Status- und Laufzeitattribute - kubectl get mit YAML-Output......
14.5.7 kubectl attach...................................................
14.5.8 Laufenden Pod bzw. laufende Ressource editieren .................
14.5.9 Multiple Ressourcen per Manifest anlegen oder löschen................ 802
14.5.10 Exkurs:YAML vs. JSON und die Konvertierung auf eine neuere API-Version .... 802
14.5.11 Kubernetes-Pod-Phasen und -Zustände (Status)......................... 80B
14.5.12 Auszüge einiger Beispiele für mögliche Zustände von Pods............. 804
14.5.13 Pods/Ressourcen nach Namespaces anzeigen lassen...................... 805
14.5.14 Debugging mit kubectl describe....................................... 806
14.5.15 K8s-Pods aus der Docker-Sicht........................................ 807
14.5.16 (Force) Removal eines Pods oder anderer Ressourcen .................. 808
14.5.17 Pod mit unterschiedlichen Containern/Images.......................... 808
14.5.18 Setzen von Kommandos in der Pod-Spezifikation per command und args... 809
14.5.19 Logs................................................................. 810
14.5.20 Detailliertes Auslesen von Pods ..................................... 811
14.5.21 RestartPolicies und Startverzögerung................................... 811
14.5.22 Einfache Pods (ohne Deployments) und Node Bindings................... 812
14.5.23 Kommandos im Pod/Container ausführen ................................ 812
14.5.24 Automatische Bereinigung alter Pods auf den Kubelets................. 813
14.6 Pod- und Container-Ressourcen, -Requests und -Limitierungen
sowie QoS und Capabilities..................................................... 814
14.6.1 CPU-Requests und -Limits............................................... 815
14.6.2 Memory-Requests und Limits............................................. 816
14.6.3 QoS-Quality of Service im Bezug auf Limits und Request................. 817
14.6.4 Exklusives CPU-Pinning................................................. 818
14.6.5 Default-Requests und -Limits........................................... 820
14.6.6 OOM Scores............................................................. 821
14.6.7 Capabilites für Container in Pods setzen............................... 821
14.6.8 PodDisruptionBudget.................................................... 823
14.6.9 Pod-Prioritäten........................................................ 823
14.6.10 PodSecurityPolicies.................................................... 826
14.7 Umgebungsvariablen von Pods und Containern auslesen, setzen und nutzen........ 827
14.7.1 Pod oder Container?.................................................... 828
14.7.2 Print-Out ENVs - Pod Variablen setzen und ausgeben..................... 828
’ 14.7.3 Limits? ,.............................................................. 829
14.7.4 Erzeuge Ordner im Mountpath............................................ 831
14.8 Pods und ConfigMaps............................................................. 833
14.8.1 Wie funktioniert es?................................................... 833
14.8.2 ConfigMaps in der Praxis............................................... 834
14.8.3 Varianten zur Erstellung von ConfigMaps................................ 838
14.8.4 Unterschiede: -from-file und -from-env-file............................ 838
14.8.5 Binary Data in ConfigMaps.............................................. 839
14.8.6 Von der Control Plane verwendete ConfigMaps............................ 840
24
M
fifä-
:T.;? lr
«T
* 7 ?* WT?* to ** *
%• ■;$t- ;Wfy; -/iilß ¡ßhf •-;# ¡$ä ||.c v-^iv yv#; ■ 4/|. Inhält.j;j
14.9 Pods und Init-Container.......................................................... 841
14.9.1 Wie funktioniert es?................................................. 841
14.9.2 Anwendungsmöglichkeiten für Init-Container............................. 842
14.9.3 Ein einfaches Beispiel................................................. 842
14.9.4 Phasen des Init-Containers ............................................ 844
14.9.5 Mehrstufiges Init...................................................... 845
14.10 Health-Checks ................................................................ 847
14.10.1 Ready? Live?........................................................... 847
14.10.2 Unterschiedliche Auswirkungen der Probes ............................ 848
14.10.3 Probe-Verfahren........................................................ 849
14.10.4 Timeouts, Initial Delays und Delays von Init-Containern
mit einkalkulieren..................................................... 851
14.10.5 Readiness Probe ....................................................... 851
14.10.6 Liveness Probe..................................................... 853
14.10.7 Pod Readiness Gate..................................................... 857
14.10.8 Pod-Lifecycle-Management und Hooks................................... 857
14.11 Scale-Out: von Replication Controllern zu ReplicaSets........................... 859
14.11.1 Beispiel für einen ReplicationController (rc)........................ 862
14.11.2 Scale-Out ............................................................. 865
14.11.3 Pods in ReplicationControllern löschen............................... 866
14.11.4 Rolling Updates von ReplicationControllern............................. 866
14.11.5 ReplicaSets und Set-based Label Selectors.............................. 867
14.11.6 Löschen des ReplicaSets ............................................... 871
14.12 Jobs............................................................................ 872
14.12.1 Failure-Verhalten................................................... 873
14.12.2 Jobs-Beispiel.......................................................... 873
14.12.3 CronJobs............................................................. 876
14.13 Deployments..................................................................... 878
14.13.1 Verkapselung........................................................... 878
14.13.2 Pod-Verfügbarkeitserkennung?Jein....................................... 880
14.13.3 Erstellen eines Deployments............................................ 881
14.13.4 Umgebungsvariablen in Deployments nutzen
(Pod-Name-basierte Log-Ordner)......................................... 883
14.13.5 Deployment per kubectl run erzeugen.................................... 886
14.13.6 Deployment mit Service erzeugen........................................ 888
14.13.7 Revisionshistorie ..................................................... 889
14.13.8 Rolling Update, Rollout und Revisionssicherheit........................ 890
14.13.9 Update- und Revisionshistorie.......................................... 891
14.13.10 Update-Strategien..................................................... 893
14.13.11 Resume und Pause.................................................... 894
25
14.13.12 Absichtlich erzeugter Fehler beim Ausrollen bzw. Auto-Stop des Rollouts ... 894
14.13.13 Rollback-Verfahren .................................................. 894
14.13.14 Multiple-Release-Tracks-und Deployment-Strategien.................... 895
14.14 DaemonSets.................................................................... 898
14.14.1 Vorbetrachtungen..................................................... 898
14.14.2 Kommunikation mit DaemonSets......................................... 900
14.14.3 Mögliche Anwendungsfälle............................................. 900
14.14.4 DaemonSet-Scheduler und Node-Zuordnung............................... 901
14.14.5 Beispiel............................................................. 901
14.15 Namespaces: Limits, Quotas und echte Multi-Tenancy?........................... 904
14.15.1 Vorbetrachtungen..................................................... 904
14.15.2 Objekte mit und ohne Namespace-Zuordnung............................. 907
14.15.3 Namens- und Designfragen............................................. 908
14.15.4 Praktischer Einsatz ................................................. 909
14.15.5 Ressourcen im Namespace erzeugen..................................... 910
14.15.6 Limitierte Pods und Namespaces....................................... 911
14.15.7 Limit(Range)s vs. Quota.............................................. 911
14.15.8 Limits für Namespaces in der Praxis.................................. 912
14.15.9 Node-und Pod-spezifische Statistiken ................................ 915
14.15.10 Namespaces und Ressource Quotas...................................... 915
14.16 Services ..................................................................... 919
14.16.1 Wie funktioniert es?................................................. 919
14.16.2 Service Endpoints ................................................... 922
14.16.3 Die Service-Ressource aus funktionaler Sicht......................... 923
14.16.4 Der Default-kubernetes-Service....................................... 924
14.16.5 K8s-Services und DNS................................................. 925
14.16.6 kube-dns bzw. CoreDNS als Pod-basierter Cluster-DNS
für Service-Ressourcen ............................................... 926
14.16.7 CoreDNS statt kube-dns-warum?........................................ 927
14.16.8 Pod-DNS-Policies..................................................... 928
14.16.9 Kubelets, DNS-Erbschaft und resolv.conf.............................. 929
14.16.10 Implementierung des kube-dns-Deployments............................. 929
14.16.11 Implementierung des CoreDNS-Deployments.............................. 930
14.16.12 Konkretes Beispiel: DNS und Service-Namensauflösung im Cluster..... 930
14.16.13 Service-Namenskonventionen........................................... 932
14.16.14 Ein einfaches Service-Manifest....................................... 933
14.16.15 Service-Infos in den Pods ........................................... 934
14.16.16 Kubernetes-Services debuggen......................................... 934
14.16.17 Proxy-Modes ......................................................... 934
14.16.18 Service-Typen........................................................ 943
26
Inhalt
14.16.19 Beispiel: Service-Bereitstellung via NodePort........................... 944
14.16.20 Service-Bereitstellung in der GKE-Cloud mit dem Typ Loadbalancer..... 948
14.16.21 Deployment-Beispiele.................................................... 949
14.16.22 Weiche Migration von Legacy-Systemen mit Headless Services........... 949
14.16.23 DNS-Redirects mit dem Service-Typ externalName.......................... 952
14.16.24 Service/Deployment-Beispiel: K8s-Dashboard ............................. 953
14.16.25 K8s-Services, Loadbalancer und der Rest der Welt..................... 963
14.17 Ingress ..................................................................... 964
14.17.1 Was ist ein Ingress?.................................................... 964
14.17.2 Ingress-Funktionalität und -Komponenten.................................. 965
14.17.3 Aktuelle Ingress-Limitationen: »Wir brauchen doch nur HTTP(S), oder?«. 967
14.17.4 Ingress-Implementierung................................................ 968
14.17.5 Ingress im Detail ....................................................... 968
14.17.6 Beispiel-Setup von Ingress mit RBAC...................................... 971
14.17.7 Erweiterung des bestehenden Ingress um einen zweiten Service............. 977
14.18 Services, Service-Proxies, NetworkPolicies und mehr:
Kube-Router to the rescue?.............;....................................... 979
14.18.1 Was macht das kube-router-Projekt anders? ............................... 980
14.18.2 Aufbau .................................................................. 981
14.18.3 Pre-Flight-Checkpunkte................................................. 982
14.18.4 Flairpin Mode.......................................................... 983
14.18.5 kubeadm-basiertes Setup................................................ 983
14.18.6 LB-Scheduler einstellen.................................................. 986
14.18.7 Ingress? Nö, aber DSR ................................................... 986
14.19 Service Meshes................................................................. 989
14.19.1 Kube-proxy und K8s-Services vs. Service-Mesh............................. 990
14.19.2 Service Mesh: Funktionsweise............................................. 992
14.19.3 Linkerd.................................................................. 995
14.19.4 Conduit bzw. Linkerd2................................................... 998
14.19.5 Istio................................................................... 1006
14.19.6 Fazit................................................................... 1007
14.20 Kubernetes-Volumes.............................................................. 1007
14.20.1 K8s-Volumes im Unterschied zu Docker.................................... 1008
14.20.2 Persistente und nicht persistente Volumes............................... 1009
14.20.3 emptyDir................................................................ 1011
14.20.4 hostPath................................................................ 1013
14.20.5 NFS..................................................................... 1014
14.20.6 iscsi-Volume ........................................................... 1016
14.20.7 Ceph.................................................................. 1017
14.20.8 PersistentVolumes und SAN............................................... 1017
27
14.20.9 PersistentVolumes in der Praxis....................................... 1019
14.20.10 Abstraktion und Access-Methoden..................................... 1027
14.20.11 Bindungsfragen zwischen PV und PVC.................................... 1028
14.20.12 Sharing eines NFS-PV über zwei Pods................................... 1032
14.20.13 Storage Protection ab Kubernetes 1.11................................. 1035
14.20.14 K8s und Dynamic Storage Classes....................................... 1036
14.20.15 Beispiel für einen External NFS-Provisioner .................... 1040
14.21 PetSets, StatefulSets und Stateful Pods...................................... 1046
14.21.1 Vorbetrachtungen...................................................... 1046
14.21.2 Im Detail............................................................. 1046
14.22 HPA - Horizontaler Pod-Autoscaler............................................ 1048
14.22.1 Hintergrund........................................................... 1049
14.22.2 Auslastungskontrolle.................................................. 1049
14.22.3 HPA-Setup............................................................. 1050
14.22.4 Achtung: Änderungen in der Metrics-API in Kubernetes 1.9
und das Wiederherstellen der Funktionalität........................... 1051
14.22.5 Exkurs: kube-state-metrics (metrics-server) vs. Heapster.............. 1052
14.22.6 Test des HPA........................................................ 1053
14.22.7 Last-Test............................................................. 1056
14.22.8 Löschen des HPA-Objekts............................................... 1058
14.22.9 Kubernetes Addon: Cluster Proportional Autoscaling.................... 1058
14.23 Weitere K8s-Objekte und -Ressourcen............................................ 1060
14.23.1 Events................................................................ 1060
14.23.2 ThirdPartyResources bzw. CustomResourceDefinitions.................... 1061
14.24 K8s-Labels und -Constraints.................................................... 1062
14.24.1 Warum Label?.......................................................... 1063
14.24.2 Constraints........................................................... 1063
14.24.3 Label-Planung......................................................... 1064
14.24.4 Aufbau................................................................ 1064
14.24.5 Ein paar praktische Beispiele......................................... 1065
14.24.6 Labels und Node/Pod-Affinity.......................................... 1067
14.24.7 Affinity und Anti-Affinity............................................ 1069
14.24.8 Annotations........................................................... 1070
14.25 K8s-NetworkPolicies............................................................ 1071
14.25.1 Pod-Isolation......................................................... 1072
14.25.2 Anwendungsfälle....................................................... 1073
14.25.3 Performance-Impact?................................................... 1073
14.25.4 Test mit NetworkPolicy für httpd-Deployment........................... 1074
14.25.5 Arten der ACLs........................................................ 1076
28
I, iiiiiiitki i i.-i UÜUU‘!M! HÜtU ¡Haiti i’tiuik :.jü ijüläiuji/
Inhalt
(«« iikl«
14.26 K8s-Authentifizierung und -Autorisierung ..................................... 1080
14.26.1 Kubernetes 1.6 und ABAC/RBAC ........................................ 1081
14.26.2 RBAC: Konzepte und Objekte......................................... 1082
14.26.3 ABAC: Berechtigungen (Verbs) ........................................ 1084
14.26.4 Verbs-Varianten...................................................... 1084
14.26.5 Admission Controls und der Admission Controller...................... 1086
14.26.6 User- und Systemrollen............................................. 1089
14.26.7 Generelles zu Accounts............................................... 1091
14.26.8 Endlich externe Authentifizierungs-Provider?........................ 1092
14.26.9 ServiceAccounts.................................................... 1093
14.26.10 Secrets.............................................................. 1096
14.26.11 Mountable Secrets............................................ 1098
14.26.12 Ein einfaches RBAC-Beispiel mit einem Kubernetes-»User«.............. 1101
14.26.13 User Account, Cluster, Namespaces und Contexts....................... 1107
14.26.14 Authentifizierungan wetteren Clustern................................ 1110
14.26.15 Selektives Löschen von Cluster und Kontexten......................... 1110
14.26.16 Bestehenden kubernetes-admin-User für den neuen Namespace
bzw. Context einrichten ............................................. 1110
14.26.17 K8s-Authentifizierung gegen Azure AD................................. 1112
14.26.18 Fazit..................................................”........... 1112
14.27 Die Operator-Ressource: Skalierung von Apps in Replikations-Setups
out of the box?............................................................... 1113
14.27.1 Vorbetrachtungen zur Operator-Ressource.............................. 1113
14.27.2 Was ist ein Operator?................................................ 1113
14.27.3 Red Hats Operator Framework.......................................... 1114
14.27.4 Scale-Out und das Pawlowsche-Hund-Syndrom auf Entscheider-Ebene.... 1115
14.27.5 Der etcd-Operator.................................................... 1116
14.27.6 Funktionalitäten ................................................... 1116
14.27.7 (Nicht-)Persistenz................................................. 1117
14.27.8 etcd-Operator in K8s 1.8........................................... 1117
14.27.9 Error-Handling und Scale-Up........................................ 1125
14.27.10 Scale-Up........................................................... 1125
14.27.11 Upgrade bzw. Downgrade .............................................. 1126
14.27.12 PVs und Backup/Recovery im etcd-Cluster.............................. 1127
14.27.13 Die Intelligenz im Operator.......................................... 1128
14.27.14 Fazit................................................................ 1129
14.28 Helm-Deployments.............................................................. 1129
14.28.1 Das Verfahren........................................................ 1130
14.28.2 Helm-Architektur..................................................... 1130
14.28.3 Ein Beispiel-Setup................................................... 1131
14.28.4 Charts finden, inspizieren und managen .............................. 1136
29
14.29 Prometheus................................................................... 1138
14.29.1 Prometheus-Label..................................................... 1140
14.29.2 In oder Out?.......................................................... 1141
14.29.3 Prometheus-Setup per Helm in einem SUSE-CaaSP-Cluster mit 6 Nodes... 1141
14.29.4 Kube-State-Metrics.................................................... 1144
14.29.5 Zugriff von außen..................................................... 1145
14.30 Zentrales Logging mit ElasticSearch, Fluentd und Kibana...................... 1148
14.30.1 Der EFK-Stack......................................................... 1149
14.30.2 Pre-Flight-Requirements und Setup..................................... 1151
14.30.3 ElasticSearch-Deployment............................................ 1152
14.31 Metrik-Erfassung im EFK-Stack................................................ 1160
14.31.1 Implementierung des kube-metrics-server............................... 1160
14.31.2 Kubernetes Metricbeat ................................................ 1160
15 Federated- und geografisch verteilte K8s-Cluster ii63
15.1 Vorbetrachtungen................................................... 1163
15.1.1 Wie funktioniert es?.......................................... 1163
15.1.2 Federated Services ........................................... 1165
15.1.3 On-Premise-Setup und andere Kopfschmerzen, Fazit.............. 1166
16 K8s: Debugging, Rolling Upgrades, Fazit ii69 * •
16.1 Debugging/Troubleshooting................................................. 1169
16.1.1 Grundsätzliches................................................... 1169
16.1.2 kubectl duster-info dump.......................................... 1170
16.2 Rolling Upgrades des K8s-Clusters......................................... 1170
• 16.2.1 Best Practices: Master-Nodes (VMs)................................. 1171
16.2.2 Best Practices: Alle Nodes und kubelets (VMs)..................... 1172
16.2.3 kube-proxy........................................................ 1172
16.3 Upgrades kubeadm-basierter Setups ........................................ 1172
16.3.1 Ab kubeadm bzw. K8s Version 1.6................................ 1172
16.3.2 Ab kubeadm bzw. K8s Version 1.8................................... 1173
16.3.3 kubeadm upgrade plan.............................................. 1173
16.3.4 Upgrade Guidance................................................... 1176
30
Inhalt
i-..v ) s_ .•.:*;•;»•••) . i^-.:,i,;-üi..-i-«.i..-» -;jrt*! i-ii •*.- M...ii!Mi.. vM..l,;!W:i^. ~-:.;-Nsv.MiiK » : * :•-j^¿«ä*»».ä,*.»*i:;Vifsi*~jj*-«*4 *»15».JIMi«r»iii.
TEIL IV High-Level-Orchestrierungstools für Container-
Infrastrukturen (on Premise und in der Cloud)
17 OpenShift 1179
17.1 Vorbetrachtungen und Historisches............................................ 1179
17.1.1 All-in-one?....................................................... 1179
17.1.2 OpenShift.......................................................... 1180
17.1.3 Werdegang..................................................... 1180
17.1.4 Die Layer von OpenShift ........................................ 1181
17.1.5 OpenShift-Vorteile für Entwickler und Admins........................ 1182
17.1.6 OpenShift und OKD ................................................ 1182
17.2 OpenShift-Flavors.......................................................... 1182
17.2.1 OpenShift Origin/OKD................................................ 1183
17.2.2 OpenShift Online (NextGen OpenShift)................................ 1183
17.2.3 OpenShift Dedicated (Cloud Services) ............................... 1183
17.2.4 OpenShift Container Platform (OCP)/OpenShift Enterprise............. 1184
17.2.5 OpenShift unter Azure............................................... 1184
17.2.6 Docker-, CRI-O- und Kubernetes-Releases unter der Haube............. 1184
17.3 Unterschiede und Ergänzungen zu Kubernetes................................. 1185
17.3.1 Vorbetrachtungen und Core Concepts.................................. 1185
17.3.2 Konfigurationsdaten............................................... 1186
17.3.3 Binaries............................................................ 1186
17.3.4 Where’s the Proxy?................................................ 1188
17.3.5 OpenShift Project’s............................................... 1188
17.3.6 OpenShift Authentication und IDM.................................... 1189
17.4 OpenShift Service Broker..................................................... 1190
17.4.1 Service Catalog to the rescue?...................................... 1191
17.4.2 Brokerage........................................................... 1192
17.5 OpenShift-Networking......................................................... 1192
17.5.1 ovs-subnet.......................................................... 1193
17.5.2 ovs-multitenant................................................... 1193
17.5.3 ovs-networkpolicy................................................ 1193
17.5.4 Third-Party Plugins................................................ 1194
17.5.5 Arbeitsweise der OpenShift-SDN-Plugins ............................. 1194
17.6 OpenShift Router: Ingress made easy.......................................... 1196
17.6.1 Vorbetrachtungen.................................................... 1196
31
Inhalt
17.6.2 OpenShift-Router und route -die Funktionsweise im Detail............ 1197
17.6.3 Router und Host-Ports............................................... 1198
17.6.4 HAProxy Template Router und eigene Implementierungen................ 1199
17.6.5 F5-Router-Plugin-lmplementierung für OpenShift ..................... 1200
18 OpenShift-Setup 1201
18.1 OpenShift Origin 3.9 unter CentOS 7.4 - RPM- sowie Ansible-basierte
Installation................................................................... 1201
18.1.1 Pre-Flight-Requirements-oder: Die Prinzessin auf der Erbse .......... 1201
18.1.2 VMs/Hardware: Memory- und Speicherplatz-Anforderungen.................. 1205
18.2 Einfache und geführte Single-Master-Installation............................... 1206
18.3 OpenShift-Multimaster-Setup (3 Master, die alle ebenfalls Nodes sind)....... 1208
18.3.1 Weitere Multimaster-spezifische Pre-Flight-Betrachtungen............... 1208
18.3.2 OpenShift-Multimaster-Setup (3 Master, die alle ebenfalls Nodes sind) -
Rollout.............................................................. 1214
18.3.3 Auszüge möglicher Bugs bei der Installation und deren Behebung......... 1217
18.3.4 Rollout per /etc/ansible/hosts und ansible-playbook.................... 1218
18.3.5 OpenShift-Deinstallation und Rollback.................................. 1221
18.3.6 Die Konfigurationsdateien von OpenShift Origin (Post-Rollout).......... 1221
18.3.7 Gestartete OpenShift-bezogene Services................................. 1222
18.3.8 Ressourcen nach dem OpenShift-Deployment............................... 1222
18.3.9 iptables-Rulesets ..................................................... 1223
18.4 (Nachträgliche) Metrics-Konfiguration.......................................... 1224
18.4.1 Hawkular und Grafana................................................... 1224
18.4.2 Grundlegendes Metrics-Troubleshooting.................................. 1225
18.5 Prometheus..................................................................... 1225
18.5.1 Frische OpenShift-Cluster-lnstallation mit Prometheus.................. 1225
18.6 Setup eines Logging-Stacks (EFK)............................................... 1226
18.6.1 Setup des EFK-Stacks................................................... 1227
18.7 Späterer Join zusätzlicher (Worker-)Nodes...................................... 1230
18.7.1 Vorbereitungen......................................................... 1230
18.7.2 Tasks.................................................................. 1231
18.7.3 OpenShift mit Gluster Storage.......................................... 1232
32
19 OpenShift-Admimstration 1233
19.1 CLI-Tools.................................................................... 1233
19.1.1 oc - die OpenShift-CU............................................ 1233
19.1.2 oc und die kubectl-CU im Vergleich................................... 1234
19.1.3 Ausrollen einer Applikation.......................................... 1236
19.1.4 oc adm/oadm- Cluster-Management (Administrator-CLl).................. 1239
19.1.5 Der Befehl openshift*............................................... 1241
19.1.6 OpenShift-GUI.......................................................t 1241
19.2 User-, Token- und Role-Management in OpenShift............................... 1241
19.2.1 User-Objekte unter OpenShift ....................................... 1242
19.2.2 User-Privilegien und Rollenbindungen................................. 1245
19.2.3 Cluster-Admin erzeugen............................................. 1247
19.2.4 LDAPPasswordldentityProvider..................................... 1247
19.2.5 Active Directory-Anbindung........................................... 1252
19.2.6 Roles für (LDAP-)User............................................... 1254
19.2.7 Roles unter der Lupe................................................. 1254
19.3 OpenShift-spezifische Ressourcen im Cluster.................................. 1256
19.3.1 Login als Admin, Systemüberblick, Namespaces/Projects................ 1256
19.3.2 Objekte im Default-Namespace bzw. Project nach der Installation ..... 1258
19.3.3 imagestream (is) im Namespace default................................ 1259
19.3.4 deploymentconfig (de).............................................. 1261
19.4 OpenShift-Router in der Praxis............................................... 1263
19.4.1 Der Router....................................................... 1264
19.4.2 Backup und Restore des Default-Routers............................... 1265
19.4.3 Wiederherstellung des Routers und der Default-Routen ohne Backup.... 1266
19.4.4 Multiple Router in einem Namespace bzw. auf einem Host?.............. 1267
19.4.5 Weiteren Router per Node-Selector deployen........................ 1268
19.4.6 HAProxy-Router: Strict SNI ........................................ 1269
19.4.7 OpenShift-Routentypen................................................ 1269
19.4.8 Path based Routing - OpenShift Ingress............................... 1269
19.4.9 Wildcard-Routing (Domain specific routing) .......................... 1270
19.4.10 IP-Whitelists für Routen............................................. 1272
19.4.11 Router-Sharding.................................................. 1273
19.4.12 Weightings in Routen ................................................ 1275
19.4.13 Route-Beispiel mit MySQL...................................... 1275
19.4.14 Single Master........................................................ 1276
19.4.15 Multimaster mit keepalived und Subdomain-Setting..................... 1277
19.4.16 Alternate (Route-)Backends und Weightings.......................... 1279
19.4.17 Setzen der LB-Modi................................................... 1281
33
19.4.18 Sticky Sessions...................................................... 1281
19.4.19 Egress.............................................................. 1283
19.5 Accounts, Berechtigungskonzepte und Constraints.............................. 1284
19.5.1 SCC-OpenShift Security Contexts...................................... 1284
19.5.2 Arbeitsweise und Implementierung..................................... 1284
19.5.3 SCCs-Details abfragen................................................ 1285
19.5.4 Eigene SCCs definieren und Usern/Gruppen zuordnen.................... 1286
19.5.5 Fehlende Berechtigungen bzw. den System-ServiceAccount
zum anyuid-SCC setzen................................................ 1287
19.5.6 Benutzung des Default-ServiceAccounts in weiteren Namespaces......... 1289
19.6 DeploymentConfig erzeugen, verwalten und versionieren........................ 1289
19.6.1 Beispiel-Setup....................................................... 1290
19.6.2 Update und Rollback einer DeploymentConfig........................... 1290
19.6.3 Nachträgliches Setzen von Liveness und Readiness Probes ............. 1291
19.6.4 Route für eine DeploymentConfig setzen............................... 1293
19.7 OpenShift Internal Registry.................................................. 1294
19.7.1 Gesetztes Default-Routing für die Registry........................... 1295
19.7.2 Persistent Storage................................................. 1295
19.7.3 dockerd-Push-Client-Settings für Registry-Nodes...................... 1296
19.7.4 Login................................................................ 1297
19.7.5 Push über Route, Privilegien und Tagging............................. 1297
19.7.6 Gepushte Images via Imagestream zeigen lassen........................ 1298
19.7.7 Die GUI der OpenShift-mternen Atomic-Registry........................ 1298
19.8 OpenShift-Build-Prozesse..................................................... 1299
19.8.1 Docker-Build ........................................................ 1299
19.8.2 S2I (Source to Image).............................................. 1302
19.9 Steuerung eines kompletten Container-Lifecycles:
Build plus Rollout per OpenShift-GUI........................................ 1303
19.9.1 Erzeugung der Applikation per Service Catalog.......,............... 1303
19.9.2 Registry-Push und Rollout............................................ 1304
19.10 Neuerungen in OpenShift 3.10............................................... 1306
20 Full-Featured Container-Security am Beispiel von
OpenShift und NeuVector 1307
20.1 Vorbetrachtungen................................................... 1307
20.2 Architektur der NeuVector-Security-Lösung.......................... 1309
20.2.1 Setup........................................................ 1309
34
, *• » Vv 4 •‘•r*. ♦, i*} ■ ??* ipf*1t*+9.
rns^smmimMmssmsssms^
20.2.2 Setup von OpenShift................................................... 1309
20.2.3 Login und Verwaltung, Lizenzierung.................................... 1311
21 Cloud-Hosted Kubernetes 1315
21.1 Vorbetrachtungen....................................................... 1315
21.1.1 Kubernetes, Google und der Rest der Welt........................ 1315
21.1.2 Pressure........................................................ 1315
21.1.3 Security........................................................ 1316
21.1.4 Bedarf und Cloud-Angebote....................................... 1316
21.2 GKE - Google Kubernetes Engine......................................... 1317
21.2.1 Was ist im Angebot?............................................. 1317
21.2.2 Setup........................................................... 1318
21.2.3 Installation nur per Klicki-Bunti? Jein......................... 1321
21.2.4 Cloud-Shell ausführen........................................... 1321
21.3 EKS - Amazons Elastic Kubernetes Service ............................. 1322
21.3.1 Setup........................................................... 1322
22 Fazit zur Container-Orchestrierung 1325
22.1 Vanilla-Kubernetes ................................................... 1325
22.2 OpenShift............................................................. 1326
22.3 Cloud-Hosted Kubernetes: GKE ........................................... 1326
22.4 Cloud-Hosted Kubernetes: EKS........................................... 1326
TEIL V Software-Defined Storage für verteilte
Container-Infrastrukturen
23 Ab in den Untergrund 1329
23.1 Software-Defined Storage (SDS) und Container................................ 1329
23.1.1 Vorbetrachtungen.................................................... 1330
23.1.2 Cluster-Storage, Skalierbarkeit und derSPoF ........................ 1330
35
23.2 SDS-Funktionsprinzipien .......................................................... 1331
23.2.1 Software-Defined Storage -SDS.......................................... 1331
23.2.2 Hoch? Oder lieber breit? Scale-Out anstelle von Scale-Up.................. 1331
23.2.3 Traditionelle Storage-Cluster(-FS) vs. SDS................................ 1332
23.2.4 Die Abstraktion........................................................... 1332
23.2.5 SDS und Storage-Tiers..................................................... 1333
23.2.6 Multi-Purpose-SDS ........................................................ 1333
23.2.7 Die roten Hüte, Ceph, Gluster und die Zukunft............................. 1334
23.3 Ceph.............................................................................. 1334
23.3.1 Ceph und RADOS............................................................ 1335
23.3.2 librados.................................................................. 1336
23.3.3 Die Ceph-Daemons im Kurzüberblick: AAON, OSD, MDS......................... 1338
23.3.4 OSD..................................................................... 1338
23.3.5 MON ...................................................................... 1339
23.3.6 MDS ...................................................................... 1340
23.3.7 Ceph-Bereitstellungsverfahren für Container-Cluster....................... 1340
23.3.8 Setup des Ceph-Clusters für die Container-Storage-Bereitstellung.......... 1341
23.3.9 Ceph als SDS für K8s (RBD) ............................................. 1346
23.3.10 Ceph als SDS für K8s(CephFS)............................................. 1354
23.3.11 Containerized Ceph....................................................... 1356
24 Einige Checkpunkte für Planung, Aufbau
und Betrieb von Container-Clustern 1357
24.1 Evaluierung im Vorfeld.............................................. 1357
24.2 Plattformauswahl ................................................... 1358
24.3 Plattformen für den Testbetrieb und die spätere Produktion (On-Premise). 1358
24.4 Namespace-Design.................................................... 1358
24.5 Build ........................................................... 1359
24.6 Registries........................................................ 1359
24.7 Build und Rollout................................................... 1360
24.8 Welcher Orchestrierer?.............................................. 1360
24.9 Betrieb und Administration.......................................... 1360
24.10 Security........................................................... 1361
36
25 Was war, was ist, was sein wird:
Neue Meta-Ebenen und Verkomplizierung i363
25.1 Container-Cluster und Microservices als Allheilmittel?.... 1363
25.2 The Road Ahead............................................ 1364
|
any_adam_object | 1 |
author | Liebel, Oliver |
author_GND | (DE-588)1042738157 |
author_facet | Liebel, Oliver |
author_role | aut |
author_sort | Liebel, Oliver |
author_variant | o l ol |
building | Verbundindex |
bvnumber | BV045098569 |
classification_rvk | ST 230 |
classification_tum | DAT 424f |
ctrlnum | (OCoLC)1065973129 (DE-599)DNB1161682368 |
dewey-full | 005.73 |
dewey-hundreds | 000 - Computer science, information, general works |
dewey-ones | 005 - Computer programming, programs, data, security |
dewey-raw | 005.73 |
dewey-search | 005.73 |
dewey-sort | 15.73 |
dewey-tens | 000 - Computer science, information, general works |
discipline | Informatik |
edition | 2., aktualisierte und erweiterte Auflage |
format | Book |
fullrecord | <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>03586nam a22008898c 4500</leader><controlfield tag="001">BV045098569</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20200929 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">180723s2019 gw a||| |||| 00||| ger d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">18,N27</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1161682368</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783836263856</subfield><subfield code="c">hbk. : EUR 79.90 (DE), EUR 82.20 (AT), CHF 102.90 (freier Preis)</subfield><subfield code="9">978-3-8362-6385-6</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3836263858</subfield><subfield code="9">3-8362-6385-8</subfield></datafield><datafield tag="024" ind1="3" ind2=" "><subfield code="a">9783836263856</subfield></datafield><datafield tag="028" ind1="5" ind2="2"><subfield code="a">Bestellnummer: 459/06385</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1065973129</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB1161682368</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">ger</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-NW</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-739</subfield><subfield code="a">DE-M347</subfield><subfield code="a">DE-91G</subfield><subfield code="a">DE-19</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-2174</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-703</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-860</subfield><subfield code="a">DE-473</subfield><subfield code="a">DE-B768</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-20</subfield><subfield code="a">DE-861</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-355</subfield><subfield code="a">DE-1043</subfield></datafield><datafield tag="082" ind1="0" ind2=" "><subfield code="a">005.73</subfield><subfield code="2">23/ger</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 424f</subfield><subfield code="2">stub</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Liebel, Oliver</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)1042738157</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Skalierbare Container-Infrastrukturen</subfield><subfield code="b">das Handbuch für Administratoren</subfield><subfield code="c">Oliver Liebel</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">2., aktualisierte und erweiterte Auflage</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Bonn</subfield><subfield code="b">Rheinwerk Computing</subfield><subfield code="c">2019</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">1380 Seiten</subfield><subfield code="b">Illustrationen</subfield><subfield code="c">24 cm x 19 cm</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="500" ind1=" " ind2=" "><subfield code="a">Im Impressum fälschlicherweise als 1. Auflage ausgewiesen.</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Skalierbarkeit</subfield><subfield code="0">(DE-588)4520890-6</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Kubernetes</subfield><subfield code="0">(DE-588)1153019000</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Docker 1.12</subfield><subfield code="0">(DE-588)1116737825</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Container</subfield><subfield code="g">Informatik</subfield><subfield code="0">(DE-588)1116639513</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Softwareproduktionsumgebung</subfield><subfield code="0">(DE-588)4138444-1</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Virtualisierung</subfield><subfield code="0">(DE-588)4839180-3</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Docker</subfield><subfield code="g">Software</subfield><subfield code="0">(DE-588)1173644687</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">RHEL Atomic</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">CoreOS</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Docker</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Kubernetes</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">OpenShift</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Skopeo</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Continous Delivery</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Hochverfügbarkeit</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Microservices</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Deployment</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Ansible</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Scale Out</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Nomad</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">systemd</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Mesos</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Orchestrierung</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Buildah</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Suse</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Container</subfield><subfield code="g">Informatik</subfield><subfield code="0">(DE-588)1116639513</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Virtualisierung</subfield><subfield code="0">(DE-588)4839180-3</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="2"><subfield code="a">Skalierbarkeit</subfield><subfield code="0">(DE-588)4520890-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="3"><subfield code="a">Softwareproduktionsumgebung</subfield><subfield code="0">(DE-588)4138444-1</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="4"><subfield code="a">Docker 1.12</subfield><subfield code="0">(DE-588)1116737825</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Container</subfield><subfield code="g">Informatik</subfield><subfield code="0">(DE-588)1116639513</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="1"><subfield code="a">Virtualisierung</subfield><subfield code="0">(DE-588)4839180-3</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="2"><subfield code="a">Skalierbarkeit</subfield><subfield code="0">(DE-588)4520890-6</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="3"><subfield code="a">Softwareproduktionsumgebung</subfield><subfield code="0">(DE-588)4138444-1</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="4"><subfield code="a">Docker</subfield><subfield code="g">Software</subfield><subfield code="0">(DE-588)1173644687</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="5"><subfield code="a">Kubernetes</subfield><subfield code="0">(DE-588)1153019000</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="710" ind1="2" ind2=" "><subfield code="a">Rheinwerk Verlag</subfield><subfield code="0">(DE-588)1081738405</subfield><subfield code="4">pbl</subfield></datafield><datafield tag="780" ind1="0" ind2="0"><subfield code="i">Vorangegangen ist</subfield><subfield code="z">9783836243667</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">X:MVB</subfield><subfield code="q">text/html</subfield><subfield code="u">http://deposit.dnb.de/cgi-bin/dokserv?id=d3636e4510914dd8890a0bebc78593d0&prov=M&dok_var=1&dok_ext=htm</subfield><subfield code="3">Inhaltstext</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030489183&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-030489183</subfield></datafield></record></collection> |
id | DE-604.BV045098569 |
illustrated | Illustrated |
indexdate | 2024-07-10T08:08:35Z |
institution | BVB |
institution_GND | (DE-588)1081738405 |
isbn | 9783836263856 3836263858 |
language | German |
oai_aleph_id | oai:aleph.bib-bvb.de:BVB01-030489183 |
oclc_num | 1065973129 |
open_access_boolean | |
owner | DE-739 DE-M347 DE-91G DE-BY-TUM DE-19 DE-BY-UBM DE-29T DE-2174 DE-573 DE-703 DE-859 DE-860 DE-473 DE-BY-UBG DE-B768 DE-83 DE-20 DE-861 DE-523 DE-355 DE-BY-UBR DE-1043 |
owner_facet | DE-739 DE-M347 DE-91G DE-BY-TUM DE-19 DE-BY-UBM DE-29T DE-2174 DE-573 DE-703 DE-859 DE-860 DE-473 DE-BY-UBG DE-B768 DE-83 DE-20 DE-861 DE-523 DE-355 DE-BY-UBR DE-1043 |
physical | 1380 Seiten Illustrationen 24 cm x 19 cm |
publishDate | 2019 |
publishDateSearch | 2019 |
publishDateSort | 2019 |
publisher | Rheinwerk Computing |
record_format | marc |
spelling | Liebel, Oliver Verfasser (DE-588)1042738157 aut Skalierbare Container-Infrastrukturen das Handbuch für Administratoren Oliver Liebel 2., aktualisierte und erweiterte Auflage Bonn Rheinwerk Computing 2019 1380 Seiten Illustrationen 24 cm x 19 cm txt rdacontent n rdamedia nc rdacarrier Im Impressum fälschlicherweise als 1. Auflage ausgewiesen. Skalierbarkeit (DE-588)4520890-6 gnd rswk-swf Kubernetes (DE-588)1153019000 gnd rswk-swf Docker 1.12 (DE-588)1116737825 gnd rswk-swf Container Informatik (DE-588)1116639513 gnd rswk-swf Softwareproduktionsumgebung (DE-588)4138444-1 gnd rswk-swf Virtualisierung (DE-588)4839180-3 gnd rswk-swf Docker Software (DE-588)1173644687 gnd rswk-swf RHEL Atomic CoreOS Docker Kubernetes OpenShift Skopeo Continous Delivery Hochverfügbarkeit Microservices Deployment Ansible Scale Out Nomad systemd Mesos Orchestrierung Buildah Suse Container Informatik (DE-588)1116639513 s Virtualisierung (DE-588)4839180-3 s Skalierbarkeit (DE-588)4520890-6 s Softwareproduktionsumgebung (DE-588)4138444-1 s Docker 1.12 (DE-588)1116737825 s DE-604 Docker Software (DE-588)1173644687 s Kubernetes (DE-588)1153019000 s Rheinwerk Verlag (DE-588)1081738405 pbl Vorangegangen ist 9783836243667 X:MVB text/html http://deposit.dnb.de/cgi-bin/dokserv?id=d3636e4510914dd8890a0bebc78593d0&prov=M&dok_var=1&dok_ext=htm Inhaltstext Digitalisierung UB Passau - ADAM Catalogue Enrichment application/pdf http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030489183&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA Inhaltsverzeichnis |
spellingShingle | Liebel, Oliver Skalierbare Container-Infrastrukturen das Handbuch für Administratoren Skalierbarkeit (DE-588)4520890-6 gnd Kubernetes (DE-588)1153019000 gnd Docker 1.12 (DE-588)1116737825 gnd Container Informatik (DE-588)1116639513 gnd Softwareproduktionsumgebung (DE-588)4138444-1 gnd Virtualisierung (DE-588)4839180-3 gnd Docker Software (DE-588)1173644687 gnd |
subject_GND | (DE-588)4520890-6 (DE-588)1153019000 (DE-588)1116737825 (DE-588)1116639513 (DE-588)4138444-1 (DE-588)4839180-3 (DE-588)1173644687 |
title | Skalierbare Container-Infrastrukturen das Handbuch für Administratoren |
title_auth | Skalierbare Container-Infrastrukturen das Handbuch für Administratoren |
title_exact_search | Skalierbare Container-Infrastrukturen das Handbuch für Administratoren |
title_full | Skalierbare Container-Infrastrukturen das Handbuch für Administratoren Oliver Liebel |
title_fullStr | Skalierbare Container-Infrastrukturen das Handbuch für Administratoren Oliver Liebel |
title_full_unstemmed | Skalierbare Container-Infrastrukturen das Handbuch für Administratoren Oliver Liebel |
title_short | Skalierbare Container-Infrastrukturen |
title_sort | skalierbare container infrastrukturen das handbuch fur administratoren |
title_sub | das Handbuch für Administratoren |
topic | Skalierbarkeit (DE-588)4520890-6 gnd Kubernetes (DE-588)1153019000 gnd Docker 1.12 (DE-588)1116737825 gnd Container Informatik (DE-588)1116639513 gnd Softwareproduktionsumgebung (DE-588)4138444-1 gnd Virtualisierung (DE-588)4839180-3 gnd Docker Software (DE-588)1173644687 gnd |
topic_facet | Skalierbarkeit Kubernetes Docker 1.12 Container Informatik Softwareproduktionsumgebung Virtualisierung Docker Software |
url | http://deposit.dnb.de/cgi-bin/dokserv?id=d3636e4510914dd8890a0bebc78593d0&prov=M&dok_var=1&dok_ext=htm http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=030489183&sequence=000002&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA |
work_keys_str_mv | AT liebeloliver skalierbarecontainerinfrastrukturendashandbuchfuradministratoren AT rheinwerkverlag skalierbarecontainerinfrastrukturendashandbuchfuradministratoren |