在 Cassandra 集群环境中部署 Cassandra 节点的模板
目录
使用 StatefulSet 和 PersistentVolumeClaim 在 Cassandra 集群环境中部署 Cassandra 节点的模板
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: cassandra
spec:
selector:
matchLabels:
app: cassandra
serviceName: cassandra
replicas: 3
template:
metadata:
labels:
app: cassandra
spec:
containers:
- name: cassandra
image: cassandra:3.11
ports:
- containerPort: 7000
name: intra-node
- containerPort: 7001
name: tls-intra-node
- containerPort: 7199
name: jmx
- containerPort: 9042
name: cql
env:
- name: MAX_HEAP_SIZE
value: 128M
- name: HEAP_NEWSIZE
value: 128M
- name: CASSANDRA_SEEDS
value: "cassandra-0.cassandra.default.svc.cluster.local"
- name: CASSANDRA_CLUSTER_NAME
value: "Test Cluster"
- name: CASSANDRA_DC
value: "dc1"
- name: CASSANDRA_RACK
value: "rack1"
- name: CASSANDRA_ENDPOINT_SNITCH
value: GossipingPropertyFileSnitch
volumeMounts:
- name: data
mountPath: /var/lib/cassandra
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 5Gi
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-cassandra
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /mnt/data
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-cassandra
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
- name: Wait for Cassandra server to start
wait_for:
host: "{{ item }}"
port: 9042
state: started
timeout: 300
with_items: "{{ groups['cassandra'] }}"
- name: Start Cassandra node
command: cassandra
args:
chdir: /path/to/cassandra
when: wait_for.rc == 0
#!/bin/bash
# create PersistentVolume and PersistentVolumeClaim
kubectl apply -f pv_pvc_Cassandra.yaml
# check the status of PersistentVolumeClaim until it is bound
status="Pending"
while [ "$status" != "Bound" ]
do
status=$(kubectl get pvc data -o jsonpath='{.status.phase}')
echo "PersistentVolumeClaim status: $status"
sleep 5
done
# deploy Cassandra cluster
kubectl apply -f Cassandra.yaml