...
1apiVersion: apps/v1
2kind: StatefulSet
3metadata:
4 name: cassandra
5spec:
6 serviceName: cassandra
7 replicas: 3
8 selector:
9 matchLabels:
10 app: cassandra
11 template:
12 metadata:
13 labels:
14 app: cassandra
15 spec:
16 containers:
17 - name: cassandra
18 image: gcr.io/google-samples/cassandra:v13
19 imagePullPolicy: Always
20 ports:
21 - containerPort: 7000
22 name: intra-node
23 - containerPort: 7001
24 name: tls-intra-node
25 - containerPort: 7199
26 name: jmx
27 - containerPort: 9042
28 name: cql
29 resources:
30 requests:
31 cpu: "300m"
32 memory: 1Gi
33 securityContext:
34 capabilities:
35 add:
36 - IPC_LOCK
37 lifecycle:
38 preStop:
39 exec:
40 command:
41 - /bin/sh
42 - -c
43 - nodetool drain
44 env:
45 - name: MAX_HEAP_SIZE
46 value: 512M
47 - name: HEAP_NEWSIZE
48 value: 100M
49 - name: POD_NAMESPACE
50 valueFrom:
51 fieldRef:
52 fieldPath: metadata.namespace
53 - name: CASSANDRA_SEEDS
54 value: "cassandra-0.cassandra.$(POD_NAMESPACE).svc.cluster.local"
55 - name: CASSANDRA_CLUSTER_NAME
56 value: "K8Demo"
57 - name: CASSANDRA_DC
58 value: "DC1-K8Demo"
59 - name: CASSANDRA_RACK
60 value: "Rack1-K8Demo"
61 - name: POD_IP
62 valueFrom:
63 fieldRef:
64 fieldPath: status.podIP
65 readinessProbe:
66 exec:
67 command:
68 - /bin/bash
69 - -c
70 - /ready-probe.sh
71 initialDelaySeconds: 15
72 timeoutSeconds: 5
73 # These volume mounts are persistent. They are like inline claims,
74 # but not exactly because the names need to match exactly one of
75 # the stateful pod volumes.
76 volumeMounts:
77 - name: cassandra-data
78 mountPath: /cassandra_data
79 # These are converted to volume claims by the controller
80 # and mounted at the paths mentioned above.
81 # do not use these in production until ssd GCEPersistentDisk or other ssd pd
82 volumeClaimTemplates:
83 - metadata:
84 name: cassandra-data
85 spec:
86 accessModes: [ "ReadWriteOnce" ]
87 resources:
88 requests:
89 storage: 1Gi
90
View as plain text