Kubernetes 持久化实战:Redis 基于 PVC 保存数据

来自AI助手的总结
通过PVC为Redis挂载持久化存储,验证数据重建后不丢失
Kubernetes 持久化实战:Redis 基于 PVC 保存数据

一、部署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

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容