Kubernetes-basierte Container-Cluster und die über sie bereitgestellten Microservices sind längst zum Standard in aktuellen IT-Landschaften geworden. Sie ermöglichen flexible und resiliente Infrastrukturen mit einem extrem hohen Automationsgrad und können selbst komplexeste Applikations-Stacks effizient orchestrieren, verwalten und skalieren, egal ob in der Cloud oder On-Premises. Damit bilden sie in vielen Unternehmen die Foundation für autoskalierbare Infrastrukturen, beispielsweise für vollautomatisierte CI/CD- und GitOps-Systeme oder für GPU-beschleunigte KI/ML-Modelle
Die vierte, komplett überarbeitete Auflage der seit vielen Jahren bewährten Container-Referenz liefert Ihnen praxiserprobte Anleitungen und tiefes, fundiertes Profi-Know-how, um strategisch wichtige Architekturentscheidungen mit solidem Background-Wissen zu treffen.
Aus dem Inhalt:
Dipl.-Ing. Oliver Liebel ist LPI-zertifizierter Linux-Enterprise-Experte und
offizieller Business Partner von SUSE und Red Hat. Als Dozent, Autor, Berater und Projektleiter ist er seit vielen Jahren für namhafte Unternehmen, internationale Konzerne und Institutionen auf Landes- und Bundesebene tätig. Dabei blickt er auf 25 Jahre Berufserfahrung zurück.
1. Catch-22 ... 39
1.1 ... Vorbemerkungen ... 43
1.2 ... Kernziele und rote Fäden ... 45
1.3 ... Was dieses Buch sein soll und was nicht ... 46
1.4 ... Wie dieses Buch zu lesen ist ... 46
1.5 ... Docker-Replacement-Tools ... 48
Teil I. Strategische Vorbetrachtungen, Foundations und Preflights ... 51
2. Grundsätzliche strategische Fragen ... 53
2.1 ... Worum geht es? ... 53
2.2 ... Überblick: Container- und Infrastruktur-Konzepte ... 54
2.3 ... Generelle Infrastruktur-Fragen: Cloud vs. On-Prem, Managed Kubernetes, Managed Server, hybrider Mischbetrieb ... 58
2.4 ... Maximale Vollautomation -- IaC, Operatoren, GitOps ... 66
2.5 ... Registries ... 73
2.6 ... Ganzheitliche Security -- High-Level View ... 76
Teil II. Kubernetes-Architektur, Core-Concepts, Workloads und Day 1 Operations ... 87
3. Kubernetes ... 89
3.1 ... Kubernetes im Überblick ... 89
3.2 ... Vanilla Kubernetes und das traurige Thema LTS ... 91
3.3 ... Kubernetes-Komponenten ... 100
3.4 ... Dienste auf allen Node-Typen: Kubelet, Container-Engine, Overlay-Netze, Proxies ... 103
3.5 ... Dienste auf den Kubernetes-Master-/Controlplane-Nodes ... 106
3.6 ... Etcd als Key/Value-Store in Kubernetes-basierten Clustern ... 112
3.7 ... Networking in Kubernetes ... 118
3.8 ... Windows-Nodes in Kubernetes-Clustern? ... 121
3.9 ... Container-Engines für Kubernetes ... 126
4. Kubernetes-Setup-Varianten im kompakten Überblick ... 131
4.1 ... Optionen und Grad der Verwaltbarkeit ... 131
4.2 ... Setup-Ansätze (Auszüge) ... 133
4.3 ... Zeitsynchronisation ... 137
4.4 ... Instance Sizing ... 137
5. Kubernetes-Cluster-Setups (Cloud) ... 141
5.1 ... GKE ... 142
5.2 ... EKS ... 158
5.3 ... AKS ... 160
5.4 ... Vergleichstabelle für Managed-Kubernetes-Angebote ... 164
6. Kubernetes: Deployment-Tools und -Konzepte, API-Foundations, Manifest- und CLI-Handling ... 165
6.1 ... Überblick: Tools zum Deployment von Kubernetes-Ressourcen ... 165
6.2 ... Helm und Kustomize -- the Big Short ... 167
6.3 ... Editoren und Tools: VI(M), Visual Studio Code und K9s ... 172
6.4 ... Grundlegende Verfahren zum Erstellen von Workloads ... 176
6.5 ... Grundlagen zu kubectl ... 178
6.6 ... kubectl-Operations ... 188
6.7 ... Debugging von Kubernetes-Ressourcen ... 198
7. Kubernetes-Cluster: Day 1 Operations -- Core-Workloads ... 201
7.1 ... Namespaces: Foundations ... 201
7.2 ... Namespaces: Multi-Tenancy- und Security-Aspekte ... 207
7.3 ... Pods und Container ... 210
7.4 ... Pod-Sidecar-Patterns und das Applikations-Design ... 220
7.5 ... Pods und Init-Container ... 222
7.6 ... Pod- und Container-Security ... 225
7.7 ... Pod-/Container-Attribute über Umgebungsvariablen nutzen ... 231
7.8 ... Überblick: ConfigMaps, ServiceAccounts und Secrets ... 233
7.9 ... ConfigMaps ... 234
7.10 ... ServiceAccounts ... 245
7.11 ... Secrets ... 249
7.12 ... Jobs ... 255
7.13 ... Label, Selektoren und Annotations ... 260
7.14 ... Deployments ... 265
7.15 ... DaemonSets ... 275
7.16 ... StatefulSets ... 279
7.17 ... Entscheidungshilfe: Wann Deployment, wann DaemonSet, wann StatefulSet? ... 282
7.18 ... Update-Strategien für Pods im Überblick ... 284
7.19 ... Kubernetes: Autorisierung/RBAC ... 289
7.20 ... Kubernetes-Volumes und dynamische Storage-Provisionierung ... 296
7.21 ... Storage für cloudbasiertes Kubernetes: GKE, EKS und AKS ... 323
7.22 ... Services ... 327
7.23 ... Ingress ... 358
Teil III. Skalierbare Container-Cluster mit Kubernetes: Day 2 Operations ... 365
8. Day 2 Operations: In-Cluster-Vollautomation mit Operatoren -- Foundations ... 367
8.1 ... Vorbetrachtungen: Zwei Operator-spezifische Hauptkapitel ... 367
8.2 ... CustomResourceDefinitions ... 368
8.3 ... Operatoren unter Kubernetes ... 382
8.4 ... Operator-Typen und Maturitäts-Level: Helm vs. Ansible vs. Go ... 387
8.5 ... Operator-Typen im funktionalen Vergleich: Ansible vs. Go ... 391
8.6 ... Operator-Preflights: OLM -- wer überwacht die Wächter? ... 392
8.7 ... Operator-Management ... 396
8.8 ... Hands on: PostgreSQL-Operator (Level 5) ... 401
9. Kubernetes-Cluster: Day 2 Operations -- Pod-Lifecycle, De-Scheduling, Tenancy und Limits ... 411
9.1 ... Pod-Lifecycle und Health-Checks ... 411
9.2 ... (De-)Scheduling: Überblick ... 429
9.3 ... (De-)Scheduling: Constraints -- Node-Selektoren, Pod Topology Spread Constraints ... 438
9.4 ... (De-)Scheduling: (Anti-)Affinity, Taints und Tolerations ... 443
9.5 ... (De-)Scheduling: QoS-Classes, Compute Resource Requests und Limits ... 450
9.6 ... (De-)Scheduling: Pod-Priorities ... 469
9.7 ... (De-)Scheduling: PodDisruptionBudgets ... 474
9.8 ... (De-)Scheduling: Node-Kapazitäten ... 483
9.9 ... De-Scheduling und HA-Abstinenz: Descheduler und Re-Balancing ... 485
9.10 ... Namespaces und (Compute-)Resource-Limits ... 490
9.11 ... Namespaces und NetworkPolicies ... 501
10. Kubernetes-Cluster: Day 2 Operations -- DNS, Certificates, API-Gateways ... 513
10.1 ... ExternalDNS für externe Hostnamenauflösung ... 513
10.2 ... Automatisierte Zertifikatserzeugung (alle Plattformen): Cert-Manager ... 519
10.3 ... Gateway-API ... 536
10.4 ... API-Gateway: Foundations ... 541
10.5 ... API-Gateway: Beispiel-Setup (GKE) ... 543
10.6 ... API-Gateway: Beispiel-Setup mit Kong (alle Plattformen) ... 551
11. Kubernetes-Cluster: Day 2 Operations -- Metrics, Monitoring, Logging, APM/Observability, Autoscaler ... 563
11.1 ... Kubernetes-Standard-Metriken: Metrics Server und kube-metrics ... 563
11.2 ... Log-Erfassung und mehr unter Kubernetes: Elastic ... 566
11.3 ... Log-Erfassung und mehr unter Kubernetes: Loki -- Grafana-Logging ... 584
11.4 ... Cluster-Monitoring mit Prometheus ... 589
11.5 ... Federated Prometheus mit Thanos ... 615
11.6 ... Tracing mit Jaeger ... 625
11.7 ... Full-Stack-Monitoring: APM und Observability ... 627
11.8 ... HPA -- Horizontaler Pod-Autoscaler ... 640
11.9 ... Custom-Metrics-Autoscaling mit KEDA und HPA ... 650
11.10 ... Vertical Pod Autoscaler ... 665
11.11 ... Multidimensionales Pod-AutoScaling (GKE) ... 678
11.12 ... Cluster-Autoscaling ... 678
12. Kubernetes-Cluster: Day 2 Operations -- Meshes, Authentication, Debugging, Backup/Recovery ... 681
12.1 ... Service-Meshes ... 681
12.2 ... Kubernetes: Authentifizierung und Autorisierung (Keycloak-basiert) ... 692
12.3 ... Debugging und Troubleshooting ... 709
12.4 ... Backup und Disaster-Recovery ... 710
Teil IV. Vollautomation und Resilienz mit eigenen Operatoren ... 721
13. Day 3 Operations: In-Cluster-Vollautomation mit Operatoren -- Advanced Concepts ... 723
13.1 ... Operator-SDK, OLM und weitere Konzepte ... 723
13.2 ... Ansible oder Go? ... 727
13.3 ... Operator-Build-Demo: Level-5-Operator in Go ... 733
13.4 ... Operator-Bundle für den L5-Operator erzeugen ... 745
13.5 ... Index/Catalog (für L5-Operator und andere) erzeugen ... 749
13.6 ... Hands-On: Memcached-Operator mit Ansible ... 756
13.7 ... Diverses ... 760
Teil V. High-Level-Setup- und Orchestrierungs-Tools für Kubernetes-basierte Container-Infrastrukturen ... 763
14. Red Hat OpenShift ... 765
14.1 ... Vorbetrachtungen und Historisches ... 765
14.2 ... Lizenzierung und Lifecycle ... 767
14.3 ... OpenShift, das Enterprise-Kubernetes in »ready to use« ... 773
15. OpenShift-Setup ... 775
15.1 ... Generelle Vorbetrachtungen und Vorbereitungen ... 775
15.2 ... Setup von OpenShift 4.12 (IPI) auf AWS ... 789
15.3 ... Setup von OpenShift 4.12 (IPI) auf GCP ... 795
15.4 ... Setup von OpenShift 4.13 (IPI) auf vSphere ... 798
15.5 ... Post-install Tasks und Day 2 Operations für OpenShift ... 808
15.6 ... Disconnected/Air-Gapped-Installation und der Betrieb ... 813
16. OpenShift-Administration ... 819
16.1 ... CLI-Tools ... 819
16.2 ... Administration per GUI ... 823
16.3 ... OpenShifts Cluster-Operatoren ... 824
16.4 ... OpenShift-Networking im Überblick ... 826
16.5 ... Authentifizierung und Autorisierung unter OpenShift ... 830
16.6 ... Authentifizierung und Autorisierung: Security Context Constraints ... 834
16.7 ... Imagestreams ... 841
16.8 ... OpenShift-Router ... 845
16.9 ... OpenShift-Router: Ingress-Operator und Ingress-Controller ... 847
16.10 ... Egress-Limitierung und Priorisierung ... 864
16.11 ... DNS-Customizing ... 870
16.12 ... MachineConfigs, Machines, MachineSets und Scaling ... 871
16.13 ... Cluster-Autoscaler und Machine-Autoscaler ... 879
16.14 ... Customisierte MachineSets für spezielle Instanztypen -- (z. B. GPU- oder Storage-Nodes) erzeugen ... 884
16.15 ... Infrastructure-Nodes in OpenShift ... 890
16.16 ... HA für das OpenShift-Controlplane mit ControlPlaneMachineSets ... 894
16.17 ... OpenShift-Upgrades: Foundations ... 897
16.18 ... OpenShift-Upgrades: EUS Upgrades ... 899
16.19 ... Interaktive OpenShift-Workshops ... 903
Teil VI. Day 3 Operations: Cluster-Federation, Security, CI/CD-GitOps-Systeme, SDS und mehr ... 905
17. Day 3 Operations: Multi-Cluster-Management und Federated Cluster ... 907
17.1 ... Historisches ... 907
17.2 ... Multi-Cluster-Management mit Red Hat Advanced Cluster Management ... 909
17.3 ... Setup und grundlegende Cluster-Verwaltung per RHACM ... 914
17.4 ... Services, Ingress und Gateways in Multi-Cluster-Umgebungen ... 927
Teil VII. Virtualisierung, Security und GitOps ... 933
18. Day 3 Operations: VMs in Kubernetes/OpenShift-Cluster einbinden ... 935
18.1 ... KubeVirt -- VMs als Container ... 936
19. Day 3 Operations: Container-Security -- Full-Featured Security-Stacks ... 947
19.1 ... Vorbetrachtungen zu Security-Lösungen ... 948
19.2 ... NeuVector ... 950
19.3 ... RHACS -- Red Hat Advanced Cluster Security für OpenShift ... 956
20. Day 3 Operations: Container-Security -- Advanced Secret Management ... 961
20.1 ... EncryptionConfiguration für Secrets und andere Objekte ... 962
20.2 ... Secret Encryption unter GKE und EKS ... 963
20.3 ... HashiCorp Vault ... 964
20.4 ... Setup des Vault Clusters ... 973
20.5 ... Vault PKI Secrets Engine ... 995
20.6 ... Sealed Secrets (Bitnami) ... 998
Teil VIII. Vollautomatisierte CI/CD-GitOps-Pipelines ... 1003
21. Day 3 Operations: CI/CD-Pipelines und GitOps ... 1005
21.1 ... GitOps ... 1005
21.2 ... GitOps mit Tekton (CI-Fokus) ... 1009
21.3 ... Tekton-Setup ... 1017
21.4 ... Beispiele für Tekton Pipeline (Pi-Calculator, Build, Push & Deploy) ... 1022
21.5 ... Tekton Pipelines unter OpenShift (OpenShift Pipelines) ... 1026
21.6 ... GitOps mit Argo CD (CD-Fokus) ... 1033
21.7 ... Argo Rollouts ... 1042
Teil IX. Software-Defined Storage für verteilte Container-Infrastrukturen ... 1059
22. Day 3 Operations: Software-Defined Storage für Container-Cluster ... 1061
22.1 ... SDS-Funktionsprinzipien ... 1061
22.2 ... Ceph ... 1064
22.3 ... Ceph: Storage-Bereitstellungsverfahren für Container-Cluster ... 1067
22.4 ... Containerized SDS -- Ceph per Rook ... 1068
22.5 ... Setup von Rook ... 1072
22.6 ... Rook-Administration ... 1084
23. Day 3 Operations: Kostenkontrolle in Kubernetes/OpenShift-Clustern (FinOps) ... 1105
23.1 ... FinOps ... 1106
24. Day 3 Operations: GPU-beschleunigte KI/ML-Container-Infrastrukturen ... 1113
24.1 ... GPUs und autoskalierbare KI/ML-Stacks ... 1113
24.2 ... Konkrete Einsatzszenarien und Kosten ... 1115
24.3 ... NVIDIAs GPU-Operator ... 1118
24.4 ... GKE-Cluster mit NVIDIA-A100-Instanzen und MIG-Partitionierung ... 1121
24.5 ... OpenShift-Cluster mit NVIDIA-A100-GPUs in der GCP ... 1128
24.6 ... AKS- und EKS-Cluster mit NVIDIA-GPUs ... 1131
25. The Road ahead ... 1133
Index ... 1135