Foreword |
|
xi | |
Preface |
|
xv | |
|
1 Introduction to Cloud Native Data Infrastructure: Persistence, Streaming, and Batch Analytics |
|
|
1 | (18) |
|
|
2 | (2) |
|
What Is Cloud Native Data? |
|
|
4 | (2) |
|
More Infrastructure, More Problems |
|
|
6 | (1) |
|
Kubernetes Leading the Way |
|
|
7 | (3) |
|
Managing Compute on Kubernetes |
|
|
8 | (1) |
|
Managing Network on Kubernetes |
|
|
9 | (1) |
|
Managing Storage on Kubernetes |
|
|
9 | (1) |
|
Cloud Native Data Components |
|
|
10 | (1) |
|
|
11 | (1) |
|
Getting Ready for the Revolution |
|
|
12 | (5) |
|
|
12 | (2) |
|
Embrace Distributed Computing |
|
|
14 | (1) |
|
Principles of Cloud Native Data Infrastructure |
|
|
14 | (3) |
|
|
17 | (2) |
|
2 Managing Data Storage on Kubernetes |
|
|
19 | (32) |
|
Docker, Containers, and State |
|
|
19 | (7) |
|
|
21 | (1) |
|
|
21 | (1) |
|
|
22 | (1) |
|
|
23 | (1) |
|
|
24 | (2) |
|
Kubernetes Resources for Data Storage |
|
|
26 | (16) |
|
|
26 | (7) |
|
|
33 | (4) |
|
|
37 | (2) |
|
|
39 | (3) |
|
Kubernetes Storage Architecture |
|
|
42 | (7) |
|
|
42 | (1) |
|
Container Storage Interface |
|
|
43 | (2) |
|
Container Attached Storage |
|
|
45 | (2) |
|
Container Object Storage Interface |
|
|
47 | (2) |
|
|
49 | (2) |
|
3 Databases on Kubernetes the Hard Way |
|
|
51 | (30) |
|
|
52 | (1) |
|
Prerequisites for Running Data Infrastructure on Kubernetes |
|
|
53 | (1) |
|
Running MySQL on Kubernetes |
|
|
53 | (12) |
|
|
54 | (2) |
|
|
56 | (4) |
|
|
60 | (3) |
|
|
63 | (2) |
|
Running Apache Cassandra on Kubernetes |
|
|
65 | (15) |
|
|
67 | (11) |
|
|
78 | (2) |
|
|
80 | (1) |
|
4 Automating Database Deployment on Kubernetes with Helm |
|
|
81 | (22) |
|
Deploying Applications with Helm Charts |
|
|
82 | (1) |
|
Using Helm to Deploy MySQL |
|
|
83 | (11) |
|
|
87 | (2) |
|
|
89 | (1) |
|
|
90 | (1) |
|
|
90 | (1) |
|
|
91 | (2) |
|
|
93 | (1) |
|
|
94 | (1) |
|
Using Helm to Deploy Apache Cassandra |
|
|
94 | (5) |
|
Affinity and Anti-Affinity |
|
|
96 | (3) |
|
Helm, CI/CD, and Operations |
|
|
99 | (3) |
|
|
102 | (1) |
|
5 Automating Database Management on Kubernetes with Operators |
|
|
103 | (32) |
|
Extending the Kubernetes Control Plane |
|
|
104 | (3) |
|
Extending Kubernetes Clients |
|
|
105 | (1) |
|
Extending Kubernetes Control Plane Components |
|
|
105 | (1) |
|
Extending Kubernetes Worker Node Components |
|
|
106 | (1) |
|
|
107 | (7) |
|
|
107 | (3) |
|
|
110 | (2) |
|
|
112 | (2) |
|
Managing MySQL in Kubernetes Using the Vitess Operator |
|
|
114 | (13) |
|
|
114 | (3) |
|
PlanetScale Vitess Operator |
|
|
117 | (10) |
|
A Growing Ecosystem of Operators |
|
|
127 | (6) |
|
|
127 | (3) |
|
|
130 | (3) |
|
|
133 | (2) |
|
6 Integrating Data Infrastructure in a Kubernetes Stack |
|
|
135 | (32) |
|
K8ssandra: Production-Ready Cassandra on Kubernetes |
|
|
135 | (8) |
|
|
136 | (1) |
|
Installing the K8ssandra Operator |
|
|
137 | (4) |
|
Creating a K8ssandraCluster |
|
|
141 | (2) |
|
Managing Cassandra in Kubernetes with Cass Operator |
|
|
143 | (4) |
|
Enabling Developer Productivity with Stargate APIs |
|
|
147 | (3) |
|
Unified Monitoring Infrastructure with Prometheus and Grafana |
|
|
150 | (4) |
|
Performing Repairs with Cassandra Reaper |
|
|
154 | (2) |
|
Backing Up and Restoring Data with Cassandra Medusa |
|
|
156 | (3) |
|
|
157 | (1) |
|
|
158 | (1) |
|
Deploying Multicluster Applications in Kubernetes |
|
|
159 | (6) |
|
|
165 | (2) |
|
7 The Kubernetes Native Database |
|
|
167 | (28) |
|
Why a Kubernetes Native Approach Is Needed |
|
|
167 | (2) |
|
Hybrid Data Access at Scale with TiDB |
|
|
169 | (13) |
|
|
170 | (3) |
|
Deploying TiDB in Kubernetes |
|
|
173 | (9) |
|
Serverless Cassandra with DataStax Astra DB |
|
|
182 | (7) |
|
What to Look for in a Kubernetes Native Database |
|
|
189 | (5) |
|
|
189 | (2) |
|
The Future of Kubernetes Native |
|
|
191 | (3) |
|
|
194 | (1) |
|
8 Streaming Data on Kubernetes |
|
|
195 | (24) |
|
Introduction to Streaming |
|
|
195 | (4) |
|
|
196 | (1) |
|
|
197 | (1) |
|
|
198 | (1) |
|
The Role of Streaming in Kubernetes |
|
|
199 | (3) |
|
Streaming on Kubernetes with Apache Pulsar |
|
|
202 | (10) |
|
Preparing Your Environment |
|
|
205 | (2) |
|
Securing Communications by Default with cert-manager |
|
|
207 | (4) |
|
Using Helm to Deploy Apache Pulsar |
|
|
211 | (1) |
|
Stream Analytics with Apache Flink |
|
|
212 | (5) |
|
Deploying Apache Flink on Kubernetes |
|
|
214 | (3) |
|
|
217 | (2) |
|
9 Data Analytics on Kubernetes |
|
|
219 | (28) |
|
Introduction to Analytics |
|
|
220 | (1) |
|
Deploying Analytic Workloads in Kubernetes |
|
|
221 | (3) |
|
Introduction to Apache Spark |
|
|
224 | (2) |
|
Deploying Apache Spark in Kubernetes |
|
|
226 | (4) |
|
Build Your Custom Container |
|
|
228 | (1) |
|
Submit and Run Your Application |
|
|
228 | (2) |
|
Kubernetes Operator for Apache Spark |
|
|
230 | (3) |
|
Alternative Schedulers for Kubernetes |
|
|
233 | (7) |
|
|
235 | (2) |
|
|
237 | (3) |
|
Analytic Engines for Kubernetes |
|
|
240 | (6) |
|
|
242 | (2) |
|
|
244 | (2) |
|
|
246 | (1) |
|
10 Machine Learning and Other Emerging Use Cases |
|
|
247 | (22) |
|
The Cloud Native AI/ML Stack |
|
|
248 | (13) |
|
|
248 | (2) |
|
|
250 | (2) |
|
Real-Time Model Serving with KServe |
|
|
252 | (3) |
|
Full Lifecycle Feature Management with Feast |
|
|
255 | (3) |
|
Vector Similarity Search with Milvus |
|
|
258 | (3) |
|
Efficient Data Movement with Apache Arrow |
|
|
261 | (3) |
|
Versioned Object Storage with lakeFS |
|
|
264 | (4) |
|
|
268 | (1) |
|
11 Migrating Data Workloads to Kubernetes |
|
|
269 | (24) |
|
The Vision: Application-Aware Platforms |
|
|
269 | (2) |
|
Charting Your Path to Success |
|
|
271 | (17) |
|
|
272 | (4) |
|
|
276 | (7) |
|
|
283 | (5) |
|
The Future of Cloud Native Data |
|
|
288 | (4) |
|
|
292 | (1) |
Index |
|
293 | |