千家信息网

k8s基础中如何通过Volume保持数据持久

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,这篇文章将为大家详细讲解有关k8s基础中如何通过Volume保持数据持久 ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一个运行中的容器对文件系统的写
千家信息网最后更新 2024年11月30日k8s基础中如何通过Volume保持数据持久

这篇文章将为大家详细讲解有关k8s基础中如何通过Volume保持数据持久 ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一个运行中的容器对文件系统的写入都是发生在其分层文件系统的可写层。一旦容器运行结束,所有写入都会被丢弃。如果数据需要长期存储,那就需要对容器数据做持久化支持。

Kubernetes 和 Docker 类似,也是通过 Volume 的方式提供对存储的支持。Volume 被定义在 Pod 上,可以被 Pod 里的多个容器挂载到相同或不同的路径下。 Kubernetes 中 Volume 的 概念与Docker 中的 Volume 类似,但不完全相同。具体区别如下:

Kubernetes 中的 Volume 与 Pod 的生命周期相同,但与容器的生命周期不相关。当容器终止或重启时,Volume 中的数据也不会丢失。

当 Pod 被删除时,Volume 才会被清理。并且数据是否丢失取决于 Volume 的具体类型,比如:emptyDir 类型的 Volume 数据会丢失,而 PV 类型的数据则不会丢失。

Kubernetes 目前支持多种 Volume 类型,大致如下:

emptyDir

nfs

hostPath

gitRepo

persistentVolumeClaim

projected

portworxVolume

等等

下面对常见的做一下基本介绍

emptryDir

如果Pod配置了EmpyDir数据卷,在Pod的生命周期内都会存在,当Pod被分配到 Node上的时候,会在Node上创建EmptyDir数据卷,并挂载到Pod的容器中。只要Pod 存在,EmpyDir数据卷都会存在(容器删除不会导致EmpyDir数据卷丟失数据),但是如果Pod的生命周期终结(Pod被删除),EmpyDir数据卷也会被删除,并且永久丢失。

示例演示:

apiVersion: v1kind: Podmetadata:  name: test-pod2spec: containers: - image: busybox   name: test-emptydir2   command: ["sleep","90"]   volumeMounts:   - mountPath: /data2     name: data-volume2 volumes: - name: data-volume2   emptyDir: {}

kubectl create -f emptyDir2.yaml

kubectl describe test-pod2

k8s 集群会在 node 节点上 创建EmptyDir数据卷

/var/lib/kubelet/pods/61691e55-6740-11e9-b7fc-0050569360ba/volumes/kubernetes.io~empty-dir/data-volume2

在k8s-node1 上添加文件

进入pod 容器中查看

删除pod

kubectl delete -f emptyDir2.yaml

k8s-node1 临时目录就会被删除

进入原来的目录,临时目录已经被删除

hostPath

hostPath类型则是映射node文件系统中的文件或者目录到pod里。在使用hostPath类型的存储卷时,也可以设置type字段,支持的类型有文件、目录、File、Socket、CharDevice和BlockDevice。

apiVersion: v1kind: Podmetadata:  name: test-pod2spec:  containers:  - image: busybox    name: test-hostpath    command: [ "sleep", "3600" ]    volumeMounts:    - mountPath: /test-data      name: test-volume  volumes:  - name: test-volume    hostPath:      path: /data      type: Directory

kubectl create -f host_path.yaml

进入挂载的/test-data目录中,创建个测试文件

创建测试文件

在pod 运行的节点上查看

ps 在node 节点的目录里创建,容器里面也会自动生成

删除 pod 容器 kubectl delete -f host_path.yaml

查看 node 节点上的 文件还在

关于k8s基础中如何通过Volume保持数据持久 就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

数据 容器 文件 目录 类型 周期 生命 节点 支持 相同 系统 存储 运行 基础 内容 文章 更多 知识 篇文章 测试 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南昌网络时间服务器 卓胜微用什么软件开发设计芯片 怎么加强完善网络技术 小米软件开发工程师 联想服务器提示内存被暴力破解 外网直连数据库安全性 浙江诚信网络技术开发哪个正规 网络安全怎么守护 软件开发中各种专业名词 中学生如何做到网络安全 excel选取某段数据库 服务器端看任务管理器 达梦数据库日志审计系统 本地电脑数据自动备份到服务器 对员工个人的网络安全提醒 关于网络安全手抄报图片五年级 济南品质浪潮服务器 南京常规软件开发价格大全 北京局部点胶软件开发 浙江省网络安全学院网页 厦门南洋职业学院计算机网络技术 走遍河南的网络安全科技展洛阳站 期间网络安全保障工作总结 微信聊天服务器架构设计图 软件开发框架协议模板 vs和数据库连接 上海宣和网络技术有限公司 顺义服务器回收多少钱 苹果手机连接服务器传照片 青浦区app软件开发定做价格
0