Kubernetes8——Volumes配置管理(nfs、pv、pvc、statefulset)

一、Volume概述

在这里插入图片描述
官方链接

二、emptyDir卷

在这里插入图片描述

[root@server2 volumes]# cat vol1.yaml 
apiVersion: v1
kind: Pod #资源类型是pod
metadata:
  name: vol1
spec:
  containers: #创建两个容器
  - image: busyboxplus
    name: vm1
    command: ["sleep", "300"]
    volumeMounts:
    - mountPath: /cache #容器vm1挂载的目录
      name: cache-volume
  - name: vm2
    image: nginx
    volumeMounts:
    - mountPath: /usr/share/nginx/html #容器vm2挂载的目录
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: #创建empty卷
      medium: Memory #基于内存
      sizeLimit: 100Mi #限制大小100M

进入第一个容器挂载目录下写入文件。进入另一个容器的挂载目录,可以看到我们在vm1容器里写入的文件,说明卷是共享的
在这里插入图片描述
配置文件里限制卷大小为100M,生成一个200M的空文件,卷被“撑爆”,容器停止运行。
可以看到文件超过sizeLimit,则一段时间后(1-2分钟)会被kubelet evict掉。之所以不是“立即”被evict,是因为kubelet是定期进行检查的,这里会有一个时间差。
在这里插入图片描述

  • emptydir缺点
    不能及时禁止用户使用内存。虽然过1-2分钟kubelet会将Pod挤出,但是这个时间内,其实对node还是有风险的;
    影响kubernetes调度,因为empty dir并不涉及node的resources,这样会造成Pod“偷偷”使用了node的内存,但是调度器并不知晓;
    用户不能及时感知到内存不可用

三、HostPath 卷

在这里插入图片描述

在这里插入图片描述

  • 当使用这种类型的卷时要小心,因为:
    具有相同配置(例如从 podTemplate 创建)的多个 Pod 会由于节点上文件的不同而在不同节点上有不同的行为。
    当 Kubernetes 按照计划添加资源感知的调度时,这类调度机制将无法考虑由 hostPath 使用的资源。
    基础主机上创建的文件或目录只能由 root 用户写入。您需要在 特权容器 中以 root 身份运行进程,或者修改主机上的文件权限以便容器能够写入 hostPath 卷。
[root@server2 volumes]# cat host.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /test-pd
      name: test-volume
  volumes:
  - name: test-volume
    hostPath:
      path: /data
      type: DirectoryOrCreate

在这里插入图片描述
server3上自动创建data:
在这里插入图片描述

在server2里写入文件,在server3/data目录下也能看到
在这里插入图片描述

在这里插入图片描述

四、NFS共享文件

在server1、2、3、4都下载nfs组件,开启

yum install -y nfs-utils.x86_64
systemctl enable --now nfs

更改server1的配置文件/etc/exports

[root@server1 mnt]# cat /etc/exports
/mnt/nfs	*(rw,no_root_squash)

server2访问server1的nfs

[root@server2 volumes]# showmount -e 172.25.51.1
Export list for 172.25.51.1:
/mnt/nfs *

应用配置文件,查看pod的详细信息,共享成功

[root@server2 volumes]# cat nfs.yaml 
apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: nginx
    name: test-container
    volumeMounts:
    - mountPath: /usr/share/nginx/html
      name: test-volume
  volumes:
  - name: test-volume
    nfs:
      server: 172.25.51.1
      path: /mnt/nfs

在这里插入图片描述
在server1的nfs数据目录下写入文件
在这里插入图片描述

server2中看到的一样
在这里插入图片描述

五、PersistentVolume持久卷(PV)

  • PersistentVolume(持久卷,简称PV)是集群内,由管理员提供的网络存储的一部分。就像集群中的节点一样,PV也是集群中的一种资源。它也像Volume一样,是一种volume插件,但是它的生命周期却是和使用它的Pod相互独立的。PV这个API对象,捕获了诸如NFS、ISCSI、或其他云存储系统的实现细节。

  • PersistentVolumeClaim(持久卷声明,简称PVC)是用户的一种存储请求。它和Pod类似,Pod消耗Node资源,而PVC消耗PV资源。Pod能够请求特定的资源(如CPU和内存)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾几人要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值