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

k8s-----20、持久化存储--PV/PVC

PV/PVC

  • 1、概念
    • 1.1 基本定义
    • 1.2 生命周期
    • 1.3 PV 卷阶段状态
  • 2、 示例
    • 2.1 创建pod和PVC 与PV
    • 2.2 绑定PV
    • 2.3 强制删除pv,pvc
    • 2.4 测试

1、概念

1.1 基本定义

  • PersistentVolume(PV)是集群中由管理员配置的一段网络存储。 它是集群中的资源,就像节点是集群资源一样。 PV 是容量插件,如 Volumes,但其生命周期独立于使用 PV 的任 何单个 pod。 此 API 对象捕获存储实现的详细信息,包括 NFS,iSCSI 或特定于云提供程 序的存储系统。
  • PersistentVolumeClaim(PVC)是由用户进行存储的请求。 它类似于 pod。 Pod 消耗节点 资源,PVC 消耗 PV 资源。Pod 可以请求特定级别的资源(CPU 和内存)。声明可以请求特 定的大小和访问模式(例如,可以一次读/写或多次只读)。
  • 虽然 PersistentVolumeClaims 允许用户使用抽象存储资源,但是 PersistentVolumes 对于 不同的问题,用户通常需要具有不同属性(例如性能)。群集管理员需要能够提供各种 PersistentVolumes 不同的方式,而不仅仅是大小和访问模式,而不会让用户了解这些卷 的实现方式。对于这些需求,有 StorageClass 资源。
  • 简单来说就是PV是用来做持久化存储的,对存储资源进行抽象,对外提供可以调用的地方。相当于是生产者。而PVC是用来实现调用功能的,相当于消费者。

1.2 生命周期

  • PV 是群集中的资源。PVC 是对这些资源的请求,并且还充当对资源的检查。PV 和 PVC 之间 的相互作用遵循以下生命周期: Provisioning ——-> Binding ——–>Using——>Releasing——>Recycling
  • 供应准备 Provisioning—通过集群外的存储系统或者云平台来提供存储持久化支持。
  • 静态提供 Static:集群管理员创建多个 PV。 它们携带可供集群用户使用的真实存储的详细信息。 它们存在于 Kubernetes API 中,可用于消费
  • 动态提供 Dynamic:当管理员创建的静态 PV 都不匹配用户的 PersistentVolumeClaim 时,集群可能会尝试为 PVC 动态配置卷。 此配置基于 StorageClasses:PVC 必须请求一个 类,并且管理员必须已创建并配置该类才能进行动态配置。 要求该类的声明有效地为自己 禁用动态配置。
  • 绑定 Binding—用户创建 pvc 并指定需要的资源和访问模式(也叫匹配模式)。在找到可用 pv 之前,pvc 会保持未绑定状态。
  • 使用 Using—用户可在 pod 中像 volume 一样使用 pvc。
  • 释放 Releasing—用户删除 pvc 来回收存储资源,pv 将变成“released”状态。由于还 保留着之前的数据,这些数据需要根据不同的策略来处理,否则这些存储资源无法被其他 pvc 使用。
  • 回收 Recycling—pv 可以设置三种回收策略:保留(Retain),回收(Recycle)和删除 (Delete)。 - 保留策略:允许人工处理保留的数据。 - 删除策略:将删除 pv 和外部关联的存储资源,需要插件支持。 - 回收策略:将执行清除操作,之后可以被新的 pvc 使用,需要插件支持

1.3 PV 卷阶段状态

PV状态
Bound卷已经被绑定到 claim 了
Available资源尚未被 claim 使用
Releasedclaim 被删除,卷处于释放状态,但未被集群回收
Failed卷自动回收失败

2、 示例

[root@master nfs-nfinx]# kubectl delete -f nfs-nginx.yaml  #先删除nfs章节中创建的pod,但是svc不用删除
[root@master nfs-nfinx]# kubectl get svc
NAME         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1        <none>        443/TCP        68d
nginx-dep1   NodePort    10.103.175.154   <none>        80:31077/TCP   7h9m

2.1 创建pod和PVC 与PV

[root@master pv-pvc]# cat pvc.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-dep1
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginxvolumeMounts:- name: wwwrootmountPath: /usr/share/nginx/htmlports:- containerPort: 80volumes:- name: wwwrootpersistentVolumeClaim:claimName: my-pvc---apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: my-pvc
spec:accessModes:   #匹配模式- ReadWriteManyresources:requests:storage: 5Gi  #存储资源[root@master pv-pvc]# cat pv.yaml 
apiVersion: v1
kind: PersistentVolume
metadata:name: my-pv
spec:capacity:storage: 5GiaccessModes:- ReadWriteManynfs:path: /data/nfsserver: 192.168.174.131

2.2 绑定PV

[root@master pv-pvc]# kubectl apply -f pv.yaml 
persistentvolume/my-pv created
[root@master pv-pvc]# kubectl apply -f pvc.yaml 
deployment.apps/nginx-dep1 created
persistentvolumeclaim/my-pvc created[root@master pv-pvc]# kubectl get pv,pvc   ##查看是否绑定
NAME                     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS   REASON   AGE
persistentvolume/my-pv   5Gi        RWX            Retain           Bound    default/my-pvc                           70sNAME                           STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/my-pvc   Bound    my-pv    5Gi        RWX                           67s
[root@master pv-pvc]# kubectl get pod   ##查看pod
NAME                         READY   STATUS    RESTARTS   AGE
nginx-dep1-69f5bb95b-jsf79   1/1     Running   0          54s
nginx-dep1-69f5bb95b-tj9hb   1/1     Running   0          54s
nginx-dep1-69f5bb95b-vvnrq   1/1     Running   0          54s

2.3 强制删除pv,pvc

$ kubectl patch pv xxx -p '{"metadata":{"finalizers":null}}'
$ kubectl patch pvc xxx -p '{"metadata":{"finalizers":null}}'

2.4 测试

##进入pod中查看
root@nginx-dep1-69f5bb95b-jsf79:/# ls /usr/share/nginx/html/
index.html

相关文章:

k8s-----20、持久化存储--PV/PVC

PV/PVC 1、概念1.1 基本定义1.2 生命周期1.3 PV 卷阶段状态 2、 示例2.1 创建pod和PVC 与PV2.2 绑定PV2.3 强制删除pv,pvc2.4 测试 1、概念 1.1 基本定义 PersistentVolume&#xff08;PV&#xff09;是集群中由管理员配置的一段网络存储。 它是集群中的资源&#xff0c;就像…...

python matplotlib 生成矢量图

import matplotlib.pyplot as plt plt.savefig(r"xxx.svg", format"svg")注意&#xff1a; plt.savefig(r"xxx.svg", format"svg") 需要放在 plt.show()前面 原因&#xff1a;如果在 plt.show()调用后&#xff0c; 实际上已经创建了一…...

机器学习中常见的特征工程处理

一、特征工程 特征工程&#xff08;Feature Engineering&#xff09;对特征进行进一步分析&#xff0c;并对数据进行处理。 常见的特征工程包括&#xff1a;异常值处理、缺失值处理、数据分桶、特征处理、特征构造、特征筛选及降维等。 1、异常值处理 具体实现 from scipy.s…...

Spring IOC 和 AOP

核心概念 咱们这节就讲完了&#xff0c;在这节中我们讲了两个大概念&#xff0c;一个叫做IOC&#xff0c;一个叫做DI IOC是什么&#xff1f;是用对象的时候不要自己用new而是由外部提供&#xff0c;而spring在进行实现的时候是谁提供&#xff0c;就是IOC容器给你提供。 DI是什…...

echarts插件-liquidFill(水球图)

echarts插件-liquidFill&#xff08;水球图&#xff09; 1.下载2.引入&#xff1a;3.使用 1.下载 echarts.js下载&#xff1a;https://cdnjs.com/libraries/echarts echarts-liquidfill.js下载&#xff1a;https://github.com/ecomfe/echarts-liquidfill 2.引入&#xff1a; …...

c++ vscode cmake debug for mac

1. 下载vscode 2. 安装c插件 参考&#xff1a;C programming with Visual Studio Code 3. 安装llvm&#xff0c;可以使用brew安装 4. 配置llvm到系统环境变量中 5. 编写c代码 6. 编写CMakeLists.txt文件&#xff08;前提安装cmake&#xff09; cmake_minimum_required(V…...

17 结构型模式-享元模式

1 享元模式介绍 2 享元模式原理 3 享元模式实现 抽象享元类可以是一个接口也可以是一个抽象类,作为所有享元类的公共父类, 主要作用是提高系统的可扩展性. //* 抽象享元类 public abstract class Flyweight {public abstract void operation(String extrinsicState); }具体享…...

创建Secret(手动)

和创建其他类型的 API 对象&#xff08;Pod、Deployment、StatefulSet、ConfigMap 等&#xff09;一样&#xff0c;您也可以先在 yaml 文件中定义好 Secret&#xff0c;然后通过 kubectl apply -f 命令创建。此时&#xff0c;您可以通过如下两种方式在 yaml 文件中定义 Secret&…...

基于PHP的线上购物商城,MySQL数据库,PHPstudy,原生PHP,前台用户+后台管理,完美运行,有一万五千字论文。

目录 演示视频 基本介绍 论文截图 功能结构 系统截图 演示视频 基本介绍 基于PHP的线上购物商城&#xff0c;MySQL数据库&#xff0c;PHPstudy&#xff0c;原生PHP&#xff0c;前台用户后台管理&#xff0c;完美运行&#xff0c;有一万五千字论文。 现如今,购物网站是商业…...

Lua 事件触发机制(注册,触发)

日常工作中经常会用到触发机制&#xff0c;这里就提供一个注册触发机制&#xff0c;在代码中在也不用专门去调用各个模块的接口&#xff1b;只需要触发即可&#xff0c;触发后会自动调用接口 直接上代码 local _EventHandle {}; _EventHandle.listenerHandleIndex 0 _EventH…...

c++ 并发与多线程(12)线程安全的单例模式-1

一、什么是线程安全 在拥有共享数据的多条数据并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况。 二、如何保证线程安全 法1、给共享的资源加把锁,保证每个资源变量每时每刻至多被一个线程占用; 法2、让线…...

Python学习笔记--迭代

一、迭代 什么叫做迭代&#xff1f; 比如在 Java 中&#xff0c;我们通过 List 集合的下标来遍历 List 集合中的元素&#xff0c;在 Python 中&#xff0c;给定一个 list 或 tuple&#xff0c;我们可以通过 for 循环来遍历这个 list 或 tuple &#xff0c;这种遍历就是迭代。…...

idea免费插件分享

分享一些在开发中常用到的idea插件&#xff0c;都是一些我自己常用的&#xff0c;希望对各位程序员有帮助吧。 1、Chinese Language 汉化插件&#xff1a;中文语言包将为您的 IntelliJ IDEA, AppCode, CLion, DataGrip, GoLand, PyCharm, PhpStorm, RubyMine, WebStorm, 和Rid…...

Pytorch使用torch.utils.data.random_split拆分数据集,拆分后的数据集状况

对于这个API,我最开始的预想是从 猫1猫2猫3猫4狗1狗2狗3狗4 中分割出 猫1猫2狗4狗1 和 猫4猫3狗2狗3 ,但是打印结果和我预想的不一样 数据集文件的存放路径如下图 测试代码如下 import torch import torchvisiontransform torchvision.transforms.Compose([torchvision.tran…...

每日一练 | 华为认证真题练习Day122

1、路由器所有的接口属于同一个广播域。 A. 对 B. 错 2、下列配置默认路由的命令中&#xff0c;正确的是&#xff08;&#xff09;。 A. [Huawei]ip route-static 0.0.0.0 0.0.0.0 192.168.1.1 B. [Huawei-Serial0]ip route-static 0.0.0.0 0.0.0.0 0.0.0.0 C. [Huawei]ip…...

SQL sever中函数(2)

目录 一、函数分类及应用 1.1标量函数&#xff08;Scalar Functions&#xff09;&#xff1a; 1.1.1格式 1.1.2示例 1.1.3作用 1.2表值函数&#xff08;Table-Valued Functions&#xff09;&#xff1a; 1.2.1内联表值函数&#xff08;Inline Table-Valued Functions&am…...

win10专业版驱动开发

我使用的系统版本如何下&#xff1a; 使用的visual studio为VS2019,使用的SDK,WDK如下&#xff1a; 在visual studio单个组件里选择SDK10.0.018362.0 在WDK里面选择版本为&#xff1a; 下载链接如下&#xff1a; 以前的 WDK 版本和其他下载 - Windows drivers | Microsoft Le…...

【JavaEE】网络编程---TCP数据报套接字编程

一、TCP数据报套接字编程 1.1 ServerSocket API ServerSocket 是创建TCP服务端Socket的API ServerSocket 构造方法&#xff1a; ServerSocket 方法&#xff1a; 1.2 Socket API Socket 是客户端Socket&#xff0c;或服务端中接收到客户端建立连接&#xff08;accept方法&…...

用 Go 访问 MySql 数据库

所有代码样例 package mainimport ("database/sql""fmt"_ "github.com/go-sql-driver/mysql" )var db *sql.DB// 初始化连接 func initDB() (err error) {db, err sql.Open("mysql", "root:mm..1213tcp(127.0.0.1:3306)/chapte…...

mac 升级node到指定版本

node版本14.15.1升级到最新稳定版18.18.2 mac系统 先查看一下自己的node版本 node -v开始升级 第一步 清除node的缓存 sudo npm cache clean -f第二步 安装n模块【管理模块 n是管理 nodejs版本】 sudo npm install -g n第三步升级node sudo n stable // 把当前系统的 Node…...

告别MySQL单打独斗:若依多数据源整合TDengine 3.0的两种姿势与性能实测

告别MySQL单打独斗&#xff1a;若依多数据源整合TDengine 3.0的两种姿势与性能实测 时序数据库正在成为物联网、金融监控等高频数据场景的标配解决方案。当每秒需要处理成千上万条设备状态记录时&#xff0c;传统关系型数据库往往显得力不从心。TDengine作为国产时序数据库的佼…...

终极指南:如何用ROFL-Player永久解决英雄联盟回放版本兼容性问题

终极指南&#xff1a;如何用ROFL-Player永久解决英雄联盟回放版本兼容性问题 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为英雄…...

你的Type-C设备为什么容易坏?可能是静电防护没做对!从手机到笔记本的防护方案拆解

Type-C设备静电防护全指南&#xff1a;从原理到实战的完整解决方案 每次插拔Type-C数据线时&#xff0c;那个微小的火花可能正在悄悄摧毁你的设备。我拆解过上百台因静电损坏的电子产品&#xff0c;发现90%的Type-C接口故障都始于那个看似无害的瞬间放电现象。这种现象在干燥季…...

Fan Control:Windows平台终极风扇控制解决方案

Fan Control&#xff1a;Windows平台终极风扇控制解决方案 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/FanCon…...

LLM从零到英雄:四阶段学习路径与实战指南

1. 项目概述&#xff1a;从零到英雄的LLM学习之旅最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“LLMs-Zero-to-Hero”。光看名字就挺带劲的&#xff0c;直译过来就是“大语言模型&#xff1a;从零到英雄”。这项目定位非常清晰&#xff0c;就是给那些想入门大语言模型&…...

终极英雄联盟工具箱:5个核心功能快速提升你的游戏体验

终极英雄联盟工具箱&#xff1a;5个核心功能快速提升你的游戏体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款专为英雄…...

米尔MA35D1核心板512MB DDR升级:工业边缘计算性能跃迁与开发实战

1. 项目概述&#xff1a;MA35D1核心板512M DDR配置的发布意味着什么&#xff1f;最近&#xff0c;米尔电子发布了其基于新唐MA35D1处理器的核心板新配置——512MB DDR。这个消息在工业控制和边缘计算圈子里引起了不少讨论。对于很多正在评估或已经使用MA35D1方案的朋友来说&…...

环境科学家都在偷偷用的NotebookLM技巧(2024中科院实测TOP5插件清单)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;NotebookLM在环境科学研究中的范式变革 传统环境科学研究长期受限于多源异构数据整合困难、跨学科知识理解门槛高、因果推断缺乏可解释性支持等瓶颈。NotebookLM 作为基于用户自有文档构建的语义增强型AI协作…...

开源阅读鸿蒙版:打造你的专属数字图书馆,重获阅读自由

开源阅读鸿蒙版&#xff1a;打造你的专属数字图书馆&#xff0c;重获阅读自由 【免费下载链接】legado-Harmony 开源阅读鸿蒙版仓库 项目地址: https://gitcode.com/gh_mirrors/le/legado-Harmony 你是否厌倦了在多个阅读应用间来回切换&#xff1f;是否对层出不穷的广告…...

Git 核心操作:rebase 与 merge 的区别,以及分支管理最佳实践

Git 核心操作&#xff1a;rebase 与 merge 的区别&#xff0c;以及分支管理最佳实践 在日常开发中&#xff0c;Git 是不可或缺的版本控制工具。而 git merge 和 git rebase 是整合分支最常用的两个命令&#xff0c;很多人对它们的概念模糊&#xff0c;不知道何时用哪个。同时&a…...