当前位置: 首页 > news >正文

k8s-持久化存储PV与PVC(1)

1、概述

为什么 kubernetes 要持久化存储?

在 kubernetes 中部署应用都是以 Pod 的容器运行的,而 Pod 是有生命周期,一旦 Pod 被删除或重启后,这些数据也会随着丢失,则需要对这些数据进行持久化存储。

PV:Persistent Volume (简称:PV) 描述的是持久化存储数据卷。API 对象定义的是一个持久化存储在宿主机上的目录如:NFS的挂载目录。这个PV,通常是由运维人员事先创建好的,在 kubernetes 集群里面等待使用。

PVC:PersistentVolumeClaim(简称:PVC) 主要是用来向 kubernetes 申请存储资源的,PVC 是给 Pod 使用的对象,代表 Pod 去系统申请资源 PV。如果申请成功,kubernetes 会把 PV 和 PVC 绑定。

StorageClass:当作 PV的模板,PVC 绑定不到合适的PV时,可以动态创建的一种机制。在大规模的 kubernetes 生产集群中,可能会有很多的 PVC,随着项目的增加,可能还需要不断添加新的 PV,否则可能为某个新的 Pod 因 PVC 绑定不到 PV 而创建失败。于是 kubernetes 提供可以自动创建 PV 的机制,核心是 StorageClass API对象。

2、示例

首先,运维人员事先创建好 PV,在 kubernetes 集群里待用,这里定义一个 nfs(network file system)网络文件系统,yaml 文件如下:

apiVersion: v1
kind: PersistentVolume
metadata:name: nfs-demonamespace: default
spec:storageClassName: nfs-storeage # 存储名称capacity:storage: 1GiaccessModes:- ReadWriteOncenfs:server: 192.168.120.11 # IP 是NFS服务器的地址path: /nfs/data/haha/  # 该目录需要提前创建好,否则可能失败

开发人员要去使用,首先创建 PVC,比如想要使用 一个 1GiB 大小的 PVC,yaml 文件如下:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: nfs-demonamespace: default
spec:storageClassName: nfs-storeage # 存储类的名称(必须与PV的storageClassName相同)accessModes:- ReadWriteOnce # 单节点读写resources:requests:storage: 1Gi

accessModes 访问模式:

  • ReadWriteOnce:卷可以被一个节点以读写方式挂载;
  • ReadOnlyMany:可以被多个节点以只读方式挂载;
  • ReadWriteMany:卷可以被多个节点以读写方式挂载;
  • ReadWriteOncePod:卷可以被单个Pod以读写方式挂载;

这样就可以使用的了,但是要真正让容器使用起来,需要注意的点:

  • PV 和 PVC 的storageClassName 字段必须一样;
  • 必须满足 PVC 的要求;
  • 还有值得注意的是Kubernetes 里定义存储容量使用的是国际标准,日常习惯使用的 KB/MB/GB 的基数是 1024,要写成 Ki/Mi/Gi ,否则单位不一致实际容量就会对不上。

以上示例,Kubernetes 就会根据 PVC 里的描述,去找能够匹配 StorageClass 和容量的 PV,然后把 PV 和 PVC“绑定”在一起,实现存储的分配。当将 PVC 和 PV 进行绑定之后,Pod 就能够像使用 hostPath 等常规类型的 Volume 一样,有了持久卷存储,现在就可以为 Pod 挂载存储卷了,在 YAML 文件里声明使用这个 PVC 了,如下所示:

apiVersion: v1
kind: Pod
metadata:name: "nginx-pvc"namespace: defaultlabels:app: "nginx-pvc"
spec:containers:- name: nginx-pvcimage: "nginx"ports:- containerPort:  80name:  httpvolumeMounts:- name: localtimemountPath: /etc/localtime- name: htmlmountPath: /usr/share/nginx/html/volumes:- name: localtimehostPath:path: /usr/share/zoneinfo/Asia/Shanghai- name: htmlpersistentVolumeClaim:claimName: nginx-pvc # 申请书的名字restartPolicy: Always

这样就把存储卷挂载到 Nginx 容器的 /etc/localtime/usr/share/nginx/html/ 目录了。

3、PV 与 PVC 小结

PV 和 PVC:

  • 只要有PV,那么PVC先是Pending状态;
  • PV被创建后,正好PVC要用,那么PVC自动绑定到这个PV卷上;
  • PVC可以被提前创建并和PV绑定,以后Pod需要关联PVC即可;

Pod 删除,PVC 还在吗?

PVC 并不会影响,需要手动删除PVC。(yaml遵循Pod和PVC写在文件)

PVC 删除会不会影响 PV?

根据回事策略不同决定的。如NFS回收策略是Recycle,那么PV不会被删除,但内容被清空,PV重新变回可用状态。如果是Retain策略,PVC删除,PV是不受影响的要删除自己手动。

Retain策略场景:如Pod部署数据库的,如删除Pod时,希望k8s重新拉起(不能用Retain和Recycle一旦删除啥都没有了)所以Retain是默认的。

状态表示:

  • Released :PV 释放,释放了和PVC关联关系,绑定不存在,新的不同PVC不能重新绑定上来
  • Available: PV 可用,也可以和任意的PVC绑定
  • Failed(失败,可能卷不支持)
  • Bound(已绑定)

4、emptyDir 存储卷

使用 emptyDir 时,Pod 分配到某个 Node 上时,emptyDir 会被创建,当Pod在该节点运行期间卷一直存在的,卷最初时空的。

尽管Pod中的容器挂载 emptyDir 卷的路径可能相同也可能不同,这些容器都可以读写 emptyDir卷中相同的文件。

当Pod因为某些原因被从节点删除时,这时emptyDir卷中数据也会被永久删除的。

示例:

定义了 2 个容器,两个容器之间挂载的 emptyDir ,它们是可以实现共享。

apiVersion: v1
kind: Pod
metadata:name: nginx-test
spec:containers:- image: nginximagePullPolicy: IfNotPresentname: nginx-containersports:- name: httpcontainerPort: 80volumeMounts:- name: htmlmountPath: /usr/share/nginx/html- name: busyboximage: busybox:latestname: busybox-containersimagePullPolicy: IfNotPresentvolumeMounts:- name: htmlmountPath: /data/command: ['/bin/sh','-c','while true;do echo $(date) >> /data/index.html;sleep 2;done']volumes:- name: htmlemptyDir: {}

说明:Pod里面容器无论重启或崩溃期间 emptyDir 卷是安全的,不会导致卷丢失。但 Pod被删除,重新拉起,或Pod超出资源限制被 Kubelet 杀死了,emptyDir 卷中的数据也会被永久删除,这种存储卷也称为“临时存储”。

5、hostPath 存储卷

指的是 Pod 挂载宿主机的某个目录或文件,hostPath 卷使得容器可以使用宿主机的文件系统进行存储。

示例:

apiVersion: v1
kind: Pod
metadata:name: "pod-hostpath-test"namespace: defaultlabels:app: "pod-hostpath-test"
spec:containers:- name: pod-timeimage: "busybox"command: ["sleep","60000"]volumeMounts:- name: localtimemountPath: /etc/localtimevolumes:- name: localtime # 卷名称一定要一样hostPath: # 宿主机路径,这个文件挂在到容器目录(/etc/localtime)path: /usr/share/zoneinfo/Asia/Shanghaitype: Directory # 细节:可以声明类型是文件夹还是文件

说明:当 Pod 被删除,这个存储卷还在,只要保证同一个 Pod 被调度到同一个节点上, 在 pod 被删除重新被调度到这个节点之后,对应的数据依然是存在的。

6、emptyDir 与 hostPath 小结

  • emptyDir与hostPath属于节点级别的卷类型;
  • emptyDir的生命周期与Pod资源相同,一旦Pod被删除,数据也就丢失;
  • hostPath卷的Pod一旦被重新调度至其他节点,那么它将无法再使用此前的数据;

相关文章:

k8s-持久化存储PV与PVC(1)

1、概述 为什么 kubernetes 要持久化存储? 在 kubernetes 中部署应用都是以 Pod 的容器运行的,而 Pod 是有生命周期,一旦 Pod 被删除或重启后,这些数据也会随着丢失,则需要对这些数据进行持久化存储。 PV&#xff1…...

Linux Red Hat Enterprise

下载 https://developers.redhat.com/products/rhel/download 安装...

《中型 Vue 项目:挑战与成长》

一、引言 在当今的前端开发领域,Vue 作为一款渐进式 JavaScript 框架,以其强大的功能和灵活性备受开发者青睐。对于中型 Vue 项目而言,其重要性不言而喻。中型 Vue 项目通常在功能复杂度和规模上介于小型项目和大型项目之间,既需要…...

配置 DNS over HTTPS阻止DNS污染

概念介绍 DOH简介 ​ DNS(域名系统)的主要功能是将域名解析成IP地址,域名的解析工作由DNS服务器完成。从安全角度来看,域名解析的请求传输时通常不进行任何加密,这导致第三方能够很容易拦截用户的DNS,将用…...

Facebook广告文案流量秘诀

Facebook 广告文案是制作有效 Facebook 广告的关键方面。它侧重于伴随广告视觉元素的文本内容。今天我们的博客将深入探讨成功的 Facebook 广告文案的秘密! 一、广告文案怎么写? 正文:这是帖子的正文,出现在您姓名的正下方。它可…...

22. 五子棋小游戏

文章目录 概要整体架构流程技术名词解释技术细节小结 1. 概要 🔊 JackQiao 对 米粒 说:“今天咱们玩个五子棋小游戏,电脑与你轮流在一个 nn 的网格上放置棋子(X 或 O),网格由你输入的正整数n决定&#xff0…...

fastadmin框架同时使用 阿里云oss和阿里云点播

背景 项目的实际需求中既要用到阿里云oss产品又用到阿里云点播系统&#xff0c;实现完美的统一。设置两个地址downUrl&#xff0c;thirdCode。分别代表阿里云oss上传路径和阿里云点播系统vId。 实现 默认框架你已经集成好阿里云oss集成工作&#xff0c;前端html页面实现 <…...

Java-JMX 组件架构即详解

JMX架构由三个主要组件构成&#xff1a; ‌MBeans&#xff08;Managed Beans&#xff09;‌&#xff1a;代表可管理的资源&#xff0c;是JMX的核心。MBean可以是Java类或接口&#xff0c;提供了管理操作的接口&#xff0c;如获取系统信息、设置参数等。‌MBeanServer‌&#x…...

unity打包web,发送post请求,获取地址栏参数,解决TypeError:s.replaceAll is not a function

发送post请求 public string url "http://XXXXXXXXX";// 请求数据public string postData "{\"user_id\": 1}";// Start is called before the first frame updatevoid Start(){// Post();StartCoroutine(PostRequestCoroutine(url, postData…...

java+ssm+mysql校园物品租赁网

项目介绍&#xff1a; 使用javassmmysql开发的校园物品租赁网&#xff0c;系统包含管理员、用户角色&#xff0c;功能如下&#xff1a; 管理员&#xff1a;用户管理&#xff1b;物品管理&#xff08;物品种类、物品信息、评论信息&#xff09;&#xff1b;订单管理&#xff1…...

Spring Boot中实现JPA多数据源配置指南

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;本文详细介绍了在Spring Boot项目中配置和使用JPA进行多数据源管理的步骤。从引入依赖开始&#xff0c;到配置数据源、创建DataSource bean、定义实体和Repository&#xff0c;最后到配置事务管理器和使用多数据…...

服务器加固

1.服务器密码复杂度 密码最小长度&#xff0c;密码复杂度策略 vim /etc/pam.d/system-auth --------------- #密码配置 #ucredit&#xff1a;大写字母个数&#xff1b;lcredit&#xff1a;小写字母个数&#xff1b;dcredit&#xff1a;数字个数&#xff1b;ocredit&#xff1a;…...

探索CSS中的背景图片属性,让你的网页更加美观

导语&#xff1a;在网页设计中&#xff0c;背景图片的运用能够丰富页面视觉效果&#xff0c;提升用户体验。本文将详细介绍CSS中背景图片的相关属性&#xff0c;帮助大家更好地掌握这一技能。 一、背景图片基本属性 1、background-image 该属性用于设置元素的背景图片。语法如…...

Oracle的打开游标(OPEN_CURSORS)

一、OPEN_CURSORS 概述 OPEN_CURSORS 指定会话一次可以拥有的打开游标&#xff08;私有 SQL 区域的句柄&#xff09;的最大数量。可以使用此参数来防止会话打开过多的游标。 OPEN_CURSORS参数说明 特性 描述 参数类型 Integer 默认值 50 修改方式 ALTER SYSTEM PDB级别…...

数值分析—数值积分

研究背景 积分的数学解法为牛顿莱布尼兹公式&#xff0c;数学表示为 ∫ a b f ( x ) d x F ( b ) − F ( a ) \int_{a}^{b} f(x)dxF(b)-F(a) ∫ab​f(x)dxF(b)−F(a)&#xff0c;但应用该方法有如下困难&#xff1a; 1&#xff0c; f ( x ) f(x) f(x)的原函数有时不能用初等函…...

克服大规模语言模型限制,构建新的应用方法——LangChain

大模型 大模型的出现和落地开启了人工智能(AI)新一轮的信息技术革命&#xff0c;改变了人们的生 活方式、工作方式和思维方式。大模型的落地需要数据、算力和算法三大要素。经过几 年发展&#xff0c;大模型的数据集(包括多模态数据集)制作已经形成了规约&#xff0c;Meta、Go…...

计算机网络 —— HTTPS 协议

前一篇文章&#xff1a;计算机网络 —— HTTP 协议&#xff08;详解&#xff09;-CSDN博客 目录 前言 一、HTTPS 协议简介 二、HTTPS 工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.引入证书 三、HTTPS 常见问题 1.中间人能否篡改证书&#xff1f; 2.中间人能否调…...

React第十七章(useRef)

useRef 当你在React中需要处理DOM元素或需要在组件渲染之间保持持久性数据时&#xff0c;便可以使用useRef。 import { useRef } from react; const refValue useRef(initialValue) refValue.current // 访问ref的值 类似于vue的ref,Vue的ref是.value&#xff0c;其次就是vu…...

React第十五节useReducer使用详解差异

useReducer() 的用法注意事项 1、 概述&#xff1a; useReducer() 常用于管理复杂的状态更新逻辑&#xff0c;特别是在状态更新依赖于多个条件或动作时&#xff0c;useReducer 提供了一种更加结构化和可维护的方式来处理状态。可以将更新函数写在组件外面 它与 useState() 相…...

NanoLog起步笔记-5-客户端简要描述

nonolog起步笔记-5-客户端简要描述 客户端的简要的设计图路notify模式服务端最好分两个核 NanoLog::setLogLevel(NOTICE);从 NANO_LOG 开始NANO_LOGcompiling time的语句getNumNibblesNeeded&#xff1a;得到prompt中&#xff0c;number的数量countFmtParams&#xff1a;得到所…...

Flink:入门介绍

目录 一、Flink简介 2.1 Flink 架构 2.2 Flink 应用程序 运行模式 二、Flink 集群 部署 2.1 本地集群模式 2.1.1 安装JDK​编辑 2.1.2 下载、解压 Flink 2.1.3 启动集群 2.1.4 停止集群 2.2 Standalone 模式 2.2.0 集群规划 2.2.1 安装JDK 2.2.2 设置免密登录 2…...

目标跟踪领域经典论文解析

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在…...

网络编程 | TCP套接字通信及编程实现经验教程

1、TCP基础铺垫 TCP/IP协议簇中包含了如TCP、UDP、IP、ICMP、ARP、HTTP等通信协议。TCP协议是TCP/IP协议簇中最为常见且重要的通信方式之一&#xff0c;它为互联网上的数据传输提供了可靠性和连接管理。 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议…...

SAP导出表结构并保存到Excel 源码程序

SAP导出表结构并保存到Excel,方便写代码时复制粘贴 经常做接口,需要copy表结构,找到了这样一个程程,特别有用。 01. 先看结果...

Linux下redis环境的搭建

1.redis的下载 redis官网下载redis的linux压缩包&#xff0c;官网地址:Redis下载 网盘链接&#xff1a; 通过网盘分享的文件&#xff1a;redis-5.0.4.tar.gz 链接: https://pan.baidu.com/s/1cz3ifYrDcHWZXmT1fNzBrQ?pwdehgj 提取码: ehgj 2.redis安装与配置 将包上传到 /…...

REDMI瞄准游戏赛道,推出小屏平板

近日&#xff0c;REDMI推出了一款8.8英寸的小屏平板&#xff0c;引发市场关注。该平板采用LCD屏幕&#xff0c;搭载天玑9400处理器&#xff0c;定位游戏市场&#xff0c;意在开拓小屏平板的新领域‌。 ‌小屏平板新尝试‌ 这款REDMI平板未追随大屏潮流&#xff0c;而是选择了8…...

springai结合ollama

目录 ollama 介绍 使用 下载&#xff1a; 安装&#xff1a; 点击这个玩意next就行了。 运行 spring ai使用ollama调用本地部署的大模型 加依赖 配置yml 写代码 ollama 介绍 官网&#xff1a;Ollama Ollama是一个用于部署和运行各种开源大模型的工具&#xff1b; …...

React第十三节开发中常见问题之(视图更新、事件处理)

一、视图更新有哪些方案&#xff1f; useState用法介绍 1、对于数据变量 正常的增删改查&#xff0c;只会让数据更新&#xff0c;但是不会触发 React 视图的更新&#xff1b; 如&#xff1a; <script lang"jsx">const baseTable [{name:Andy, age: 18, id…...

【Appium报错】安装uiautomator2失败

目录 1、通过nmp安装uiautomator2&#xff1a;失败 2、通过 Appium 的平台直接安装驱动程序 3、通过pip 来安装 uiautomator2 1、通过nmp安装uiautomator2&#xff1a;失败 我先是通过npm安装的uiautomator2&#xff0c;也显示已经安装成功了&#xff1a; npm install -g …...

DataSophon集成CMAK KafkaManager

本次集成基于DDP1.2.1 集成CMAK-3.0.0.6 设计的json和tar包我放网盘了. 通过网盘分享的文件&#xff1a;DDP集成CMAK 链接: https://pan.baidu.com/s/1BR70Ajj9FxvjBlsOX4Ivhw?pwdcpmc 提取码: cpmc CMAK github上提供了zip压缩包.将压缩包解压之后 在根目录下加入启动脚本…...

如何登录我的wordpress/新手怎么做seo优化

开箱揭秘显示器戴尔UP3221Q到底怎么样&#xff1f;真的好吗&#xff1f;使用八个月反馈感受&#xff1f;这个戴尔UP3221Q可以的哈&#xff0c;才购的&#xff0c;显示器非常满意&#xff0c;支架做工精良&#xff0c;包装的泡沫非常厚&#xff0c;1500R的曲率沉浸感十足&#x…...

html制作爱心代码/kj6699的seo综合查询

目录 一、注解用法 二、实例分析 三、源码追踪 四、总结 一、注解用法 【1】Scope注解 Scope注解是用来控制实例作用域的&#xff0c;单实例还是多实例&#xff0c;该注解可以作用在类和方法上面&#xff0c;通过属性来控制作用域&#xff0c;如下&#xff1a; prototyp…...

柳江区城乡住房建设局网站/湖南关键词优化品牌价格

作者ChevyRay &#xff0c;2013年9月28日&#xff0c;snaker7译 原文地址&#xff1a;http://unitypatterns.com/introduction-to-coroutines/ 在Unity中&#xff0c;协程&#xff08;Coroutines&#xff09;的形式是我最喜欢的功能之一&#xff0c;几乎在所有的项目中&…...

阿里云轻云服务器可以放多个网站啊怎么做/深圳竞价排名网络推广

下面介绍一下 Yii2.0 对数据库 一些简单的操作 User::find()->all(); 此方法返回所有数据&#xff1b;User::find()->one(); 此方法返回一条数据&#xff1b;User::find()->limit(3) 此方法返回3条数据User::find()->count(); 此方法返回记录的数…...

b2c网站建设费用/新闻 最新消息

要说生科的水还是很深的&#xff0c;找个耗材、试剂总是被坑的事件屡见不鲜了&#xff01;所以很多人明白了一个道理&#xff0c;图便宜没好货&#xff0c;找好货还得找大牌&#xff01;就像胎牛血清&#xff08;FBS&#xff09;&#xff0c;可以说是我们科研里比较常用&#x…...

英文互动网站建设/网络关键词优化方法

ArcGIS案例学习笔记-点群密度统计 联系方式&#xff1a;向日葵&#xff0c;135-4855-4328&#xff0c;xiexiaokui#qq.com 目的&#xff1a;对于点群&#xff0c;统计分布密度 数据&#xff1a; 方法&#xff1a; 1. 生成格网 2. 统计个数&#xff0c;制作专题图 联系方式…...