3.9.6 部署redis并持久化数据¶
1、创建一个 redis 的 PVC
# 定义PVC
[root@k8s-master01 ~]# vim redis-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: redis-data
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: nfs-csi
# 创建PVC
[root@k8s-master01 ~]# kaf redis-pvc.yaml
2、创建一个redis的 Deployment
[root@k8s-master01 ~]# vim deployment-redis.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: redis
name: redis
spec:
replicas: 1
selector:
matchLabels:
app: redis
strategy:
type: Recreate
template:
metadata:
labels:
app: redis
spec:
containers:
- name: redis
image: registry.cn-hangzhou.aliyuncs.com/abroad_images/redis:6.2.5-alpine
imagePullPolicy: IfNotPresent
ports:
- containerPort: 6379
protocol: TCP
name: tcp-6379
volumeMounts:
- name: data
mountPath: /data
livenessProbe:
tcpSocket:
port: 6379
initialDelaySeconds: 10
timeoutSeconds: 3
periodSeconds: 30
successThreshold: 1
failureThreshold: 2
readinessProbe:
tcpSocket:
port: 6379
initialDelaySeconds: 10
timeoutSeconds: 3
periodSeconds: 30
successThreshold: 1
failureThreshold: 2
volumes:
- name: data
persistentVolumeClaim:
claimName: redis-data
3、创建redis,并查看启动状态
[root@k8s-master01 ~]# kaf deployment-redis.yaml
# 验证
[root@k8s-master01 ~]# kgp
NAME READY STATUS RESTARTS AGE
redis-65fb67bc64-t2pwt 1/1 Running 0 44s
4、进入pod创建测试数据
[root@k8s-master01 ~]# k exec -it redis-65fb67bc64-t2pwt -- sh
/data # redis-cli
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> get a
"1"
127.0.0.1:6379> set b 1
OK
127.0.0.1:6379> get b
"1"
127.0.0.1:6379> save
OK
127.0.0.1:6379> exit
/data # cd /data/
/data # ls
dump.rdb
查看后端数据是否有数据写入,观察到数据已成功写入
[root@k8s-node02 ~]# ls /data/nfs/pvc-e421281a-2dfe-4b9f-aa26-2b89e86febd6/
dump.rdb
5、删除pod测试pod数据是否会丢失,观察到因为配置了持久化,数据没有丢失
[root@k8s-master01 ~]# kgp
NAME READY STATUS RESTARTS AGE
redis-65fb67bc64-t2pwt 1/1 Running 0 4m33s
# 删除现有pod
[root@k8s-master01 ~]# k delete po redis-65fb67bc64-t2pw
# 查看数据是否持久化
[root@k8s-master01 ~]# kgp
NAME READY STATUS RESTARTS AGE
redis-65fb67bc64-gw2jp 1/1 Running 0 49s
[root@k8s-master01 ~]# k exec -it redis-65fb67bc64-gw2jp -- sh
/data # redis-cli
127.0.0.1:6379> get a
"1"
127.0.0.1:6379> get b
"1"
6、环境复原
kubectl delete -f deployment-redis.yaml -f redis-pvc.yaml