Preface |
|
ix | |
1 Introduction |
|
1 | (6) |
|
|
2 | (1) |
|
Adjust, Secure, and Tune the Cluster |
|
|
3 | (1) |
|
Responding When Things Go Wrong |
|
|
3 | (1) |
|
Extending the System with New and Custom Functionality |
|
|
4 | (1) |
|
|
5 | (2) |
2 An Overview of Kubernetes |
|
7 | (14) |
|
|
7 | (2) |
|
|
9 | (1) |
|
|
10 | (8) |
|
Basic Objects: Pods, ReplicaSets, and Services |
|
|
10 | (4) |
|
Organizing Your Cluster with Namespaces, Labels, and Annotations |
|
|
14 | (1) |
|
Advanced Concepts: Deployments, Ingress, and StatefulSets |
|
|
15 | (3) |
|
Batch Workloads: Job and ScheduledJob |
|
|
18 | (1) |
|
Cluster Agents and Utilities: DaemonSets |
|
|
18 | (1) |
|
|
18 | (3) |
3 Kubernetes Architecture |
|
21 | (10) |
|
|
21 | (4) |
|
Declarative Configuration |
|
|
21 | (1) |
|
Reconciliation or Controllers |
|
|
22 | (1) |
|
Implicit or Dynamic Grouping |
|
|
23 | (2) |
|
|
25 | (1) |
|
Unix Philosophy of Many Components |
|
|
25 | (1) |
|
|
25 | (1) |
|
|
26 | (4) |
|
|
26 | (2) |
|
|
28 | (1) |
|
|
29 | (1) |
|
|
30 | (1) |
4 The Kubernetes API Server |
|
31 | (18) |
|
Basic Characteristics for Manageability |
|
|
31 | (1) |
|
|
31 | (7) |
|
|
32 | (1) |
|
|
32 | (1) |
|
|
33 | (3) |
|
|
36 | (1) |
|
|
37 | (1) |
|
|
38 | (8) |
|
|
38 | (1) |
|
|
39 | (7) |
|
|
46 | (1) |
|
|
46 | (1) |
|
|
46 | (2) |
|
|
47 | (1) |
|
|
47 | (1) |
|
Activating Additional Logs |
|
|
47 | (1) |
|
Debugging kubectl Requests |
|
|
48 | (1) |
|
|
48 | (1) |
5 Scheduler |
|
49 | (10) |
|
An Overview of Scheduling |
|
|
49 | (1) |
|
|
50 | (3) |
|
|
50 | (1) |
|
|
50 | (1) |
|
|
51 | (1) |
|
|
52 | (1) |
|
Controlling Scheduling with Labels, Affinity, Taints, and Tolerations |
|
|
53 | (4) |
|
|
53 | (1) |
|
|
54 | (2) |
|
|
56 | (1) |
|
|
57 | (2) |
6 Installing Kubernetes |
|
59 | (16) |
|
|
59 | (3) |
|
|
60 | (1) |
|
|
61 | (1) |
|
Installing the Control Plane |
|
|
62 | (6) |
|
|
63 | (1) |
|
|
64 | (1) |
|
|
65 | (1) |
|
|
65 | (2) |
|
|
67 | (1) |
|
|
68 | (1) |
|
|
68 | (1) |
|
|
69 | (1) |
|
|
70 | (1) |
|
|
70 | (1) |
|
|
71 | (2) |
|
|
73 | (2) |
7 Authentication and User Management |
|
75 | (16) |
|
|
76 | (1) |
|
|
77 | (8) |
|
|
85 | (2) |
|
|
87 | (2) |
|
|
89 | (2) |
8 Authorization |
|
91 | (10) |
|
|
91 | (1) |
|
|
92 | (1) |
|
Role-Based Access Control |
|
|
93 | (6) |
|
|
94 | (2) |
|
RoleBinding and ClusterRoleBinding |
|
|
96 | (2) |
|
|
98 | (1) |
|
|
99 | (2) |
9 Admission Control |
|
101 | (14) |
|
|
102 | (1) |
|
|
102 | (5) |
|
|
102 | (2) |
|
|
104 | (2) |
|
|
106 | (1) |
|
Dynamic Admission Controllers |
|
|
107 | (6) |
|
Validating Admission Controllers |
|
|
108 | (2) |
|
Mutating Admission Controllers |
|
|
110 | (3) |
|
|
113 | (2) |
10 Networking |
|
115 | (12) |
|
Container Network Interface |
|
|
115 | (2) |
|
|
117 | (1) |
|
|
117 | (2) |
|
|
119 | (2) |
|
|
119 | (1) |
|
|
120 | (1) |
|
|
121 | (2) |
|
|
123 | (1) |
|
|
124 | (3) |
11 Monitoring Kubernetes |
|
127 | (14) |
|
|
127 | (2) |
|
Differences Between Logging and Monitoring |
|
|
129 | (1) |
|
Building a Monitoring Stack |
|
|
129 | (5) |
|
Getting Data from Your Cluster and Applications |
|
|
129 | (2) |
|
Aggregating Metrics and Logs from Multiple Sources |
|
|
131 | (2) |
|
Storing Data for Retrieval and Querying |
|
|
133 | (1) |
|
Visualizing and Interacting with Your Data |
|
|
134 | (1) |
|
|
134 | (7) |
|
|
135 | (1) |
|
|
136 | (1) |
|
|
136 | (1) |
|
|
137 | (1) |
|
|
138 | (1) |
|
|
138 | (1) |
|
|
139 | (2) |
12 Disaster Recovery |
|
141 | (8) |
|
|
141 | (1) |
|
|
142 | (1) |
|
|
142 | (1) |
|
|
143 | (1) |
|
|
143 | (1) |
|
|
143 | (1) |
|
|
144 | (1) |
|
|
145 | (1) |
|
|
146 | (3) |
13 Extending Kubernetes |
|
149 | (14) |
|
Kubernetes Extension Points |
|
|
149 | (1) |
|
|
150 | (2) |
|
Use Cases for Cluster Daemons |
|
|
150 | (1) |
|
Installing a Cluster Daemon |
|
|
151 | (1) |
|
Operational Considerations for Cluster Daemons |
|
|
151 | (1) |
|
Hands-On: Example of Creating a Cluster Daemon |
|
|
152 | (1) |
|
|
152 | (3) |
|
Use Cases for Cluster Assistants |
|
|
153 | (1) |
|
Installing a Cluster Assistant |
|
|
153 | (1) |
|
Operational Considerations for Cluster Assistants |
|
|
154 | (1) |
|
Hands-On: Example of Cluster Assistants |
|
|
154 | (1) |
|
Extending the Life Cycle of the API Server |
|
|
155 | (3) |
|
Use Cases for Extending the API Life Cycle |
|
|
155 | (1) |
|
Installing API Life Cycle Extensions |
|
|
156 | (1) |
|
Operational Considerations for Life Cycle Extensions |
|
|
156 | (1) |
|
Hands-On: Example of Life Cycle Extensions |
|
|
156 | (2) |
|
Adding Custom APIs to Kubernetes |
|
|
158 | (3) |
|
Use Cases for Adding New APIs |
|
|
158 | (1) |
|
Custom Resource Definitions and Aggregated API Servers |
|
|
159 | (1) |
|
Architecture for Custom Resource Definitions |
|
|
160 | (1) |
|
Installing Custom Resource Definitions |
|
|
160 | (1) |
|
Operational Considerations for Custom Resources |
|
|
161 | (1) |
|
|
161 | (2) |
14 Conclusions |
|
163 | (2) |
Index |
|
165 | |