k8s存储类型详解

本文介绍了K8S存储类型,类比docker存储,详解了volume、emptyDir、hostpath等。还介绍了PV和PVC,包括基于NFS服务创建PV、PV访问模式和回收策略。通过验证回收策略和部署MySQL服务示例,展示了PV和PVC在数据持久化存储方面的运用。

一、k8s存储类型简介

1.类比docker的存储类型
回顾docker的数据持久化。
docker的容器层可以提供存储:存储在可写层(CopyOnWrite)
docker的数据持久化解决方案:

data volume---->1、bind mount 2、docker manager volume

其实两者没有什么显著差别,不同点在于是否需要提前准备dockerHost上的相关文件或目录。
2.k8s存储类型详解
volume
与docker类似:将宿主机上的某个文件或者目录挂载到Pod内。
emptyDir
写一个emptyDir.yaml的文件

[root@master ~]# vim emptyDir.yaml
kind: Pod
apiVersion: v1
metadata:
  name: producer-consumer
spec:
  containers:
  - name: producer
    image: busybox
    volumeMounts:
    - name: shared-volume
      mountPath: /producer_dir  #容器内的路径
    args:
    - /bin/sh
    - -c
    - echo "hello world" > /producer_dir/hello.txt; sleep 30000
  - name: consumer
    image: busybox
    volumeMounts:
    - name: shared-volume
      mountPath: /consumer_dir
    args:
    - /bin/sh
    - -c
    - cat /consumer_dir/hello.txt; sleep 30000
  volumes:
  - name: shared-volume
    emptyDir: {
   
   }

总结:根据上述yaml文件分析,volumes是指k8s的存储方案.容器内volumeMounts使用的是volumes内定义的存储,所以现在可以理解为,volumes定义的dockerHost上的目录或文件,分别挂载到了producer(/producer_dir)和consumer(/consumer_dir)这个两个容器的对应目录。可以判断出在consumer这个容器的/consumer_dir目录下,应该也会有一个hello.txt的文件。
验证查看conumer容器的日志

[root@master ~]# kubectl logs producer-consumer consumer
hello world

查看一个Pod运行在了那个Node节点上

[root@master ~]# kubectl get pod -o wide

到对应Node节点上查看该容器的详细信息(Mounts)

        "Mounts": [
                 {
   
   
                       "Type": "bind",
                       "Source": "/var/lib/kubelet/pods/9dcfac16-
c55b-458c-bf49-f20867shared-volume",
                       "Destination": "/producer_dir",
                       "Mode": "",
                       "RW": true,
                       "Propagation": "rprivate"
                 },

注意:查看到该容器的Mounts字段,等于是运行docker容器的时候使用这么一条命令:

docker run -v /producer_dir busybox

emptyDir的使用场景:如果Pod被删除,那么数据也会被删除,不具备持久化。Pod内的容器,需要共享数据卷的时候,使用的临时数据卷。
hostpath
hostPath就等于运行容器时使用下面的命令

docker run -v /host/path:/container/path

编写一个hostpath.yaml文件,直接将emptyDir.yaml文件的volumes字段更改为:hostPath。

[root@master volume]# mkdir -p /data/hostPath
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值