Kubernetes/k8s的存储卷/数据卷

这篇具有很好参考价值的文章主要介绍了Kubernetes/k8s的存储卷/数据卷。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

k8s的存储卷/数据卷

容器内的目录和宿主机的目录挂载

容器在系统上的生命周期是短暂的,delete,k8s用控制创建的pod,delete相当于重启,容器的状态也会回复到初始状态

一旦回到初始状态,所有的后天编辑的文件都会消失

容器和节点之间创建一个可以持久化保存容器内文件的存储卷,即使容器被销毁,删除,重启,节点上的存储卷的数据依然存在,后续也可以使用

可以继续将容器内目录的宿主机挂载,保存的数据继续使用。

1、emptyDir

容器内部共享存储卷,k8s系统中,是一个pod当中多个容器共享一个存储卷目录。

emptyDir卷可以使pod当中容器在这个存储卷上读取和写入

emptyDir不能挂载到节点的,随着pod的生命周期结束,emptyDir也会结束,数据也不会被保留。

Kubernetes/k8s的存储卷/数据卷,kubernetes,docker,容器

容器内部共享lnmp

hostPath:将容器内的挂载点,和节点上的目录进行挂载,hostPath可以实现数据的持久化,node节点被销毁,那么数据也会丢失。

污点设置为:

NoExecute:的节点上pod会被驱逐,文件数据在不在

pod被驱逐并不是node节点,所有数据还在保留在节点上

pod被驱逐之后(基于控制器创建的会在其他节点重新部署),又会在其他节点生成一个新的存储卷,数据依然可以持久化。

emptyDir的共享数据会丢失Kubernetes/k8s的存储卷/数据卷,kubernetes,docker,容器

NFS共享存储Kubernetes/k8s的存储卷/数据卷,kubernetes,docker,容器

所有pod内的目录都和节点上NFS共享目录形成数据卷,所有的数据文件都保存在共享目录当中。集中、方便管理

pvc和pv

pv:全程Persistent Volume持久化存储卷,描述和定义一个存储卷,pv是由我们运维人员来定义的

pvc:persistent Volume Claim持久存储的请求,pvc实际上是用来藐视或者声明我希望使用是什么样的pv来进行存储

pvc-pv是---对应的关系(描述,存储(大小))

pvc----pv---nfs

pvc和pv都是虚拟化的概念,是一种k8s抽象虚拟的存储资源Kubernetes/k8s的存储卷/数据卷,kubernetes,docker,容器

pvc和pv之间静态请求。一但又成百个pvc怎么办,还有动态pvc

pv是集群当中的存储资源,pvc实际上请求存储资源,也是对存储资源的一个检索(检查索引),选择一个最合适的pv来存储资源

pv和pvc之间是有生命周期管理:

1、Provisioning(配置)---pvc请求request-----检查索引(找一个合适的pv)---pvc和pv(bending绑定)----使用(使用完毕后)---pod被删除---pv的releasing(释放)-----recycling(回收)

配置:静态、动态

绑定:就是把pv分配给pvc

使用:就是pod通过pvs使用存储资源

释放:实际上是pod解除和挂载卷volume的关系,删除掉pvc

回收:保留这个pv,以供下一个pvc使用

pv的四种状态:

Available:可用状态指的是可用,而且没有被任何pvc绑定

Bound:绑定 ,pv已经绑定了pvc 绑定即使用

released:释放,pvc已经被删除了,但是pv的存储资源还没有被集群回收

Failed:表示pv的资源回收失败,而且这个pv不可用状态

ReadWriteOnce RWO,在配置文件里是全称,表示存储pv可读可写,但是只支持被单个pod挂载

ReadOnlyMany:ROX 存储的pv可以以只读的方式被多个pod挂载

ReadWriteMany:RWX,存储可以支持读写的方式被多个pod共享

读写挂载的两个方式

nfs:可以支持三种读写和挂载方式

SCSI不支持ReadWriteMany

ISCSI支持ReadWriteOnce

iscsiadm -m session -P 3

iscsiadm查看服务器是否有iscsi设备

-m session:指定操作的会话模块,管理iscsi的会话

-P 3:显示详细信息的级别,级别为3,显示详细信息

hostPath:只支持ReadWriteOnce方式,其他都不支持

集群回收pv资源的方式:

1、Retain:保留存储,pod和挂载点的数据不会被删除

2、Recycle:回收,pv上数据会被删除,挂载点的数据也被删除

3、Delete:删除,解绑时会自动删除pv上数据(本地硬盘不能使用)支持动态卷的可以使用,pv也不再可用(由云平台自己处理)

补充:当pod允许之后,通过pvc请求到了pv,除非pod被销毁,否则无法删除pvc。

Kubernetes/k8s的存储卷/数据卷,kubernetes,docker,容器Kubernetes/k8s的存储卷/数据卷,kubernetes,docker,容器

k8s存储卷的模式

emptDir:用于容器呢ide存储卷,随着pod被销毁,也会被销毁,数据不保留

hostPath:就是和节点目录的存储卷进行挂载,可以实现持久化存储,数据在每个节点上都有不方便集中管理

nfs:最常用的模式,共享目录存储卷,既可以实现在持久化,也可以数据集中,数据集中在一个目录方便管理

pv和pvc

pvc请求---pv的存储资源---------硬盘空间(nfs)

nfs支持pvc所有挂载方式和读写模式

hostPath仅支持ReadWriteOnce方式

pvc是检索的方式找到匹配的资源

检索挂载方式和读写模式

检索pv能提供的存储资源的大小

谁合适选谁

保留:默认可以不写

回收:自动回收,节点上的数据会被删除

删除:pv会变成failed模式,不可用,数据也会被删除

一个实验:

在NFS主机上创建共享目录,并且进行exportfs发布 
mkdir /data/v{1..5}
vim /etc/exports
/data/v1 20.0.0.0/24(rw,no_root_squash)
/data/v2 20.0.0.0/24(rw,no_root_squash)
/data/v3 20.0.0.0/24(rw,no_root_squash)
/data/v4 20.0.0.0/24(rw,no_root_squash)
/data/v5 20.0.0.0/24(rw,no_root_squash)

exportfs -avf
在master主机编写pv资源创建yaml
vim /opt/pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv001
  labels:
    name: pv001
spec:
  nfs:
    path: /data/v1
    server: 20.0.0.95
  accessModes: ["ReadWriteMany","ReadWriteOnce"]
  capacity:
    storage: 1Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv002
  labels:
    name: pv002
spec:
  nfs:
    path: /data/v2
    server: 20.0.0.95
  accessModes: ["ReadWriteOnce"]
  capacity:
    storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv003
  labels:
    name: pv003
spec:
  nfs:
    path: /data/v3
    server: 20.0.0.95
  accessModes: ["ReadWriteMany","ReadWriteOnce"]
  capacity:
    storage: 2Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv004
  labels:
    name: pv004
spec:
  nfs:
    path: /data/v4
    server: 20.0.0.95
  accessModes: ["ReadWriteMany","ReadWriteOnce"]
  capacity:
    storage: 4Gi

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv005
  labels:
    name: pv005
spec:

kubectl apply -f pv-demo.yaml
创建pvc资源,并且设置匹配绑定相应的pv 
vim /opt/pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc
spec:
  accessModes: ["ReadWriteMany"]
  resources:
    requests:
      storage: 2Gi

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - image: nginx:1.22
          name: nginx1
          volumeMounts:
            - name: html
              mountPath: /usr/share/nginx/html/
      volumes:
      - name: html
        persistentVolumeClaim:
          claimName: mypvc

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mypvc1
spec:
  accessModes: ["ReadWriteMany"]
  resources:
    requests:
      storage: 2Gi

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx2
  name: nginx2
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx2
  template:
    metadata:
      labels:
        app: nginx2
    spec:
      containers:
        - image: nginx:1.22
          name: nginx1
          volumeMounts:
            - name: html
              mountPath: /usr/share/nginx/html/
      volumes:
      - name: html
        persistentVolumeClaim:
          claimName: mypvc1

Kubernetes/k8s的存储卷/数据卷,kubernetes,docker,容器

Kubernetes/k8s的存储卷/数据卷,kubernetes,docker,容器文章来源地址https://www.toymoban.com/news/detail-821261.html

到了这里,关于Kubernetes/k8s的存储卷/数据卷的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 容器化进阶Kubernetes(K8S)详解

    1.1.1 Kubernetes是什么及作用 Kubernetes(K8S)是Google在2014年发布的一个开源项目,用于自动化容器化应用程序的部署、扩展和管理。 Kubernetes通常结合docker容器工作,并且整合多个运行着docker容器的主机集群。 官网地址 Kubernetes 中文社区 Kubernetes(k8s)中文文档 目录_Kubernetes中文社

    2024年02月05日
    浏览(78)
  • 云原生Kubernetes:K8S存储卷

    目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 5.PVC 和 PV 6.静态创建PV 7.动态创建PV 二、实验  1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 4.静态创建PV 5.动态创建PV 三、问题 1.生成pod一直pending 2.shoumount -e未显示共享目录 3.静态创建pv 报错 4.使用 Deployment 来创建

    2024年02月07日
    浏览(74)
  • 云原生Kubernetes:K8S集群实现容器运行时迁移(docker → containerd) 与 版本升级(v1.23.14 → v1.24.1)

    目录 一、理论 1.K8S集群升级 2.环境 3.升级策略 4.master1节点迁移容器运行时(docker → containerd)  5.master2节点迁移容器运行时(docker → containerd)  6.node1节点容器运行时迁移(docker → containerd)  7.升级集群计划(v1.23.14 → v1.24.1) 8.升级master1节点版本(v1.24.1) 9.升级master2节点版本

    2024年02月03日
    浏览(69)
  • 【云原生 | Kubernetes 系列】K8s 实战 如何给应用注入数据 II 将pod数据传递给容器

    在上一篇文章中,我们学习了针对容器设置启动时要执行的命令和参数、定义相互依赖的环境变量、为容器设置环境变量,三种设置方式,本篇文章,我们将继续学习数据的传递。 有两种方式可以将 Pod 和 Container 字段传递给运行中的容器: 环境变量 卷文件 这两种呈现 Pod

    2024年01月25日
    浏览(141)
  • Kubernetes(k8s)实战:深入详解Volume,详解k8s文件同步存储

    Volume官网:https://kubernetes.io/docs/concepts/storage/volumes/ On-disk files in a Container are ephemeral, which presents some problems for non-trivial applications when running in Containers. First, when a Container crashes, kubelet will restart it, but the files will be lost - the Container starts with a clean state. Second, when running Containers to

    2024年02月13日
    浏览(51)
  • 【Kubernetes】k8s使用minio作为对象存储

    k8s version:v1.20.15 minio version :v4.4.16 (1)安装kubectl-minio插件 自选minio-operaterd的版本下载包 minio-operater plugin 访问地址:http://ip:9090 1、sc-minio.yaml 创建 2、 创建所需的永久卷 序号 路径 容量 (G) 说明 所在节点 1 /data/1 5 租户使用 3个节点各1个 2 /data/log1 5 租户使用 3个节点各1个

    2024年04月09日
    浏览(51)
  • Kubernetes(K8s):容器化应用的航空母舰

    Kubernetes(K8s)是一个开源的容器编排系统,它的出现就像是为容器化应用提供了一艘强大的航空母舰。在这艘母舰上,你的应用容器就像是一架架战斗机,Kubernetes负责指挥它们起飞、飞行、降落,确保它们能在正确的时间、正确的地点执行任务。 Pod: Kubernetes的基本飞行编队

    2024年04月08日
    浏览(67)
  • Kubernetes(k8s)容器编排Pod介绍和使用

    Pod是kubernetes中你可以创建和部署的最小也是最简的单位,一个Pod代表着集群中运行的一个进程。 Pod有两个必须知道的特点 通过yaml文件或者json描述Pod和其内容器的运行环境和期望状态,例如一个最简单的运行nginx应用的pod,定义如下 3.1.1 参数描述 下面简要分析一下上面的

    2024年02月08日
    浏览(85)
  • kubernetes(k8s)为容器和 Pod 分配内存资源

    展示如何将内存请求(request)和内存限制(limit)分配给一个容器。 我们保障容器拥有它请求数量的内存,但不允许使用超过限制数量的内存。 创建新的命名空间 编辑yaml文件 配置文件的 args 部分提供了容器启动时的参数。 “–vm-bytes”, “150M” 参数告知容器尝试分配 15

    2024年02月15日
    浏览(58)
  • Kubernetes (K8s) 解读:微服务与容器编排的未来

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack : 📚 MERN/MEAN/MEVN Stack | 🌐 Jamstack | 🌍 GraphQL | 🔁 RESTful API | ⚡ WebSockets | 🔄 CI/CD | 🌐 Git Version Control | 🔧 DevOps 🌐 前端技术 Frontend : 🖋️ HTML CSS |

    2024年02月09日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包