k8s数据卷(volume)管理

volume数据卷管理

一、volume介绍

用于实现数据的持久化存储

Kubernetes支持多种类型的卷,例如EmptyDir、HostPath、nfs、glusterfs、ceph等

二、emptyDir

创建Pod时,Pod运行的node节点会创建临时卷,并将卷挂载到Pod指定的目录中

临时卷存放目录

/var/lib/kubelet/pods//volumes/kubernetes.io~empty-dir/卷名称

Pod宕机销毁后,该临时卷中的数据会随之被删除

bash 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
    name: test1-deploy
spec:
    replicas: 2
    selector:
         matchLabels:
             app: test1-pod
    template:
       metadata:
           labels:
              app: test1-pod
       spec:
           containers:
           - name: test1-pod
             image: busybox
             imagePullPolicy: IfNotPresent
             command:
             - sleep
             - "3600"
             volumeMounts:
                - name: test1-volume
                  mountPath: /test1
           volumes:
               - name: test1-volume
                 emptyDir: {}

三、hostPath

创建Pod时,Pod运行的node节点会在本地创建目录,并该目录挂载到Pod中

Pod宕机后,宿主机对应目录中的文件不会消失

bash 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
    name: test2-deploy
    labels:
        app: test2-deploy
spec:
    replicas: 2
    selector:
         matchLabels:
             app: test2-pod
    template:
       metadata:
           labels:
              app: test2-pod
       spec:
           containers:
           - name: test2-pod
             image: busybox
             imagePullPolicy: IfNotPresent
             command:
             - sleep
             - "3600"
             volumeMounts:
                - name: test2-volume
                  mountPath: /test1
           volumes:
               - name: test2-volume
                 hostPath:
                    path: /data

四、基于nfs的网络卷

bash 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
    name: test3-deploy
    labels:
        app: test3-deploy
spec:
    replicas: 2
    selector:
         matchLabels:
             app: test3-pod
    template:
       metadata:
           labels:
              app: test3-pod
       spec:
           containers:
           - name: test3-pod
             image: busybox
             imagePullPolicy: IfNotPresent
             command:
             - sleep
             - "3600"
             volumeMounts:
                - name: test3-volume
                  mountPath: /test1
           volumes:
               - name: test3-volume
                 nfs:
                     server: "192.168.140.11"
                     path: "/data"

五、PV与PVC 持久卷

1、PV、PVC介绍

PV PersistentVolume

后端真实存储空间的映射

PVC PersistentVolumeClain

使用存储空间的申请

使用流程

创建PV标识真实的存储空间

创建PVC发送申请存储空间的请求,K8S集群会自动在PV、PVC间建立映射关系

建立映射关系:

依靠存储空间的大小

依靠PV的访问模式

创建POD时绑定PVC,实现持久化

bash 复制代码
1、创建PV
apiVersion: v1
kind: PersistentVolume
metadata:
    name: nfs-data1
spec:
    capacity:
       storage: 2G
    accessModes:
       - ReadWriteMany
    persistentVolumeReclaimPolicy: Recycle
    nfs:
        server: 192.168.140.13
        path: /data1
相关推荐
wenyue11211 小时前
Revolutionize Your Kubernetes Experience with Easegress: Kubernetes Gateway API
容器·kubernetes·gateway
梅见十柒3 小时前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
Python私教3 小时前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
运维&陈同学4 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
O&REO5 小时前
单机部署kubernetes环境下Overleaf-基于MicroK8s的Overleaf应用部署指南
云原生·容器·kubernetes
politeboy5 小时前
k8s启动springboot容器的时候,显示找不到application.yml文件
java·spring boot·kubernetes
运维小文6 小时前
K8S资源限制之LimitRange
云原生·容器·kubernetes·k8s资源限制
登云时刻6 小时前
Kubernetes集群外连接redis集群和使用redis-shake工具迁移数据(二)
redis·容器·kubernetes
wuxingge15 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
志凌海纳SmartX16 小时前
趋势洞察|AI 能否带动裸金属 K8s 强势崛起?
云原生·容器·kubernetes