K8s — PVC|PV Terminating State
在本文中,我们将讨论PV和PVC一直Terminating的状态。
何时会Terminting?
在以下情况下,资源将处于Terminating状态。
- 在删除Bounded 状态的PVC之前,删除了对应的PV,PV在删除后是Terminting状态。
- 删除PVC时,仍有引用了PVC的pod在运行(pods attached to the pvc),删除后PVC是Terminting状态。
Kubernetes为了防止数据丢失,会保护当前正在使用的PVC和绑定到PVC的PV不会被从系统中删除。这种保护功能是通过Finalizers完成的。Finalizer 是带有命名空间的键,告诉 Kubernetes 等到特定的条件被满足后, 再完全删除被标记为删除的资源。 Finalizer 提醒控制器清理被删除的对象拥有的资源。
每次创建 PVC 或 PV 时,都会将 Finalizer 附加到我们的资源。 - Finalizer [kubernetes.io/pv-protection] -> 创建 PV 时
- Finalizer [kubernetes.io/pvc-protection] -> 创建 PVC 时
Terminating State 终止状态
Terminating State意味着 PVC 和/或 PV 的删除将被推迟,直到它们不再被 pod 使用或绑定到 PVC。
验证
我们将创建一个 PVC 和一个简单的应用程序,以便我们可以验证 Finalizers 并模拟 Terminating state以及如何修复它。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: example-claim
spec:storageClassName: longhornaccessModes:- ReadWriteOnceresources:requests:storage: 100Mi
apiVersion: apps/v1
kind: Deployment
metadata:name: example-deploy#namespace: examplelabels:app: example-appannotations:
spec:selector:matchLabels:app: example-appreplicas: 2strategy:type: RollingUpdaterollingUpdate:maxSurge: 1maxUnavailable: 0template:metadata:labels:app: example-appspec:containers:- name: example-appimage: nginximagePullPolicy: Alwaysports:- containerPort: 5000volumes:- name: datapersistentVolumeClaim:claimName: example-claim
验证一下一切是否已启动并正在运行:
kubectl get pvc --field-selector metadata.name=example-claim

kubectl get pv | grep -w "default/example-claim"

# claims associated with pod
kubectl get pods -o custom-columns=POD:.metadata.name,PVC:.spec.volumes[*].persistentVolumeClaim.claimName

PV PVC pod 的关系如下图:

在我们模拟Terminating state之前,让我们验证 PVC 和 PV 是否具有我们之前提到的注释 Finalizer。
#Looking for finalizer pv-protection
kubectl get pv pvc-b05c6e74-89b4-4669-8e00-5036f109a487 -o json | jq .metadata.finalizers

#Looking for finalizer pv-protectionkubectl get pvc example-claim -o json | jq .metadata.finalizers

让我们模拟Terminating state:
正如我们之前提到的,如果在 PV 绑定到 PVC ,直接删除PV 将会使PV处于Terminating state。
kubectl delete pv pvc-b05c6e74-89b4-4669-8e00-5036f109a487


同时删除 PVC:
kubectl delete pvc example-claim


因为仍然有使用 PVC 的pod,所以 PVC 也不会被删除,而是一直处于Terminating state。
删除pod:
kubectl delete pod example-deploy-75bcc94c6d-fftq2
or
kubectl delete deployment example-deploy


注意事项:
- When you delete a statefulset that have a retention policy whenDeleted:delete it will also remove the pods and the PVC.
- If you persistant volume have a retain policy Delete, when deleting the pvc the bound pv and underlying storage volume will be also deleted.
- If your PV retain policy is not Delete, you’ll have to remove the PV and storage manually.
不删除依赖项直接删除PV/PVC
如果删除终止 pv 的Finalizers,pvc 将失去 Bound,保持在 Lost 状态,并且可能会丢失数据。
kubectl patch pvc pvc_name -p '{"metadata":{"finalizers":null}}'
or
kubectl patch pv pv_name -p '{"metadata":{"finalizers":null}}'

相关文章:
K8s — PVC|PV Terminating State
在本文中,我们将讨论PV和PVC一直Terminating的状态。 何时会Terminting? 在以下情况下,资源将处于Terminating状态。 在删除Bounded 状态的PVC之前,删除了对应的PV,PV在删除后是Terminting状态。删除PVC时,仍有引用…...
C语言 --- 指针(5)
目录 一.sizeof和strlen对比 1.sizeof 2.strlen 3.strlen 和sizeof的对比 二.数组和指针笔试题目详解 回顾:数组名的理解 1.一维数组 2.字符数组 代码1: 代码2: 代码3: 代码4: 代码5: 代码6&am…...
Android Studio Iguana | 2023.2.1版本
Android Gradle 插件和 Android Studio 兼容性 Android Studio 构建系统基于 Gradle,并且 Android Gradle 插件 (AGP) 添加了一些特定于构建 Android 应用程序的功能。下表列出了每个版本的 Android Studio 所需的 AGP 版本。 如果特定版本的 Android Studio 不支持…...
并查集(蓝桥杯 C++ 题目 代码 注解)
目录 介绍: 模板: 题目一(合根植物): 代码: 题目二(蓝桥幼儿园): 代码: 题目三(小猪存钱罐): 代码: …...
MapReduce内存参数自动推断
MapReduce内存参数自动推断。在Hadoop 2.0中,为MapReduce作业设置内存参数非常繁琐,涉及到两个参数:mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦设置不合理,则会使得内存资源浪费严重&a…...
pyside6 pytq PyDracula QVideoWidget视频只有画面没有声音
解决方案: 先不使用框架,纯pyside6代码,如果添加视频有画面有声音,那可以排除是硬件问题,如果没有画面只有声音,可能是视频解码器无法解码,换个格式的视频文件如果只有使用PyDracula 出问题&am…...
Axure基础 各元件的作用及介绍
图像热区 增加按钮或者文本的点击区域,他是透明的,在预览时看不见。 动态面板 用来绘制一下带交互效果的元件,他是动态的,如轮播图,一个动态面板里可以有多个子面板,每一个子面板对应着不同的效果。 他…...
学习Java的第六天
目录 一、变量 1、变量的定义 2、变量的声明格式 3、变量的注意事项 4、变量的作用域 二、常量 三、命名规范 Java 语言支持如下运算符: 1、算术运算符 解析图: 示例: 2、赋值运算符 解析图: 示例: 3、关…...
基于Spring Boot+ Vue的房屋租赁系统
末尾获取源码作者介绍:大家好,我是墨韵,本人4年开发经验,专注定制项目开发 更多项目:CSDN主页YAML墨韵 学如逆水行舟,不进则退。学习如赶路,不能慢一步。 目录 一、项目简介 二、开发技术与环…...
多轨迹建模方法的介绍与实操-基于R语言
本文介绍了多轨迹建模方法(Group-Based Multivariate Trajectory Modeling),这是一种扩展了单指标组基轨迹建模的技术,用于分析多个疾病生物标志物或临床重要因素的联合轨迹,以更好地理解和追踪疾病进程、行为或健康状…...
【Spring】Spring状态机
1.什么是状态机 (1). 什么是状态 先来解释什么是“状态”( State )。现实事物是有不同状态的,例如一个自动门,就有 open 和 closed 两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有…...
Node.js基础---使用Express写接口
1. 创建基本的服务器 2. 创建 API 路由模块 // aoiRouter.js 路由模块 const express require(express) const apiRouter express.Router()module.exports apiRouter// ------------------------------------------// app.js 导入并注册路由模块 const apiRouter require(…...
小蓝的钥匙(蓝桥杯错排)
现在有28个小朋友,每个人手上有一把钥匙,每一个钥匙都只能打开自己的房间门,现在将所有钥匙都收上来,然后再随机打乱分给每个小朋友,也就是有28!的分法,请问现在其中14个小朋友的钥匙能恰好打开…...
【Python】科研代码学习:八 FineTune PretrainedModel (用 trainer,用 script);LLM文本生成
【Python】科研代码学习:八 FineTune PretrainedModel [用 trainer,用 script] LLM文本生成 自己整理的 HF 库的核心关系图用 trainer 来微调一个预训练模型用 script 来做训练任务使用 LLM 做生成任务可能犯的错误,以及解决措施 自己整理的 …...
SpringBoot RestTemplate远程调用总结
1、get请求 GetMapping("/searchEntryRecordPageList") public JSONObject searchEntryRecordPageList(RequestParam Map<String,Object> params){HttpHeaders requestHeaders new HttpHeaders();requestHeaders.add("Authorization","Bearer…...
Python 强大邮件处理库 Imbox
目录 IMAP Mailbox Imbox 安装 特性 提取邮件内容 处理附件 安全性 示例 1:读取收件箱中的邮件 2:搜索并下载附件 3:连接到IMAP服务器获取所有邮件 结论 IMAP Mailbox IMAP(Internet Message Access Protocol&#x…...
ElasticSearch深度分页问题如何解决
文章目录 概述解决方法深度分页方式from size深度分页之scrollsearch_after 三种分页方式比较 概述 Elasticsearch 的深度分页问题是指在大数据集上进行大量分页查询时可能导致的性能下降和资源消耗增加的情况。这种情况通常发生在需要访问大量数据的情形下,比如用…...
景安空间不支持指定运行目录tp5
/WEB/public/.htaccess配置 <IfModule mod_rewrite.c> Options FollowSymlinks -Multiviews RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php?s$1 [QSA,PT,L] </IfModule>. 2./WEB/.ht…...
开放式高实时高性能PLC控制器解决方案-基于米尔电子STM32MP135
前言 随着工业数字化进程加速与IT/OT深入融合,不断增加的OT核心数据已经逐步成为工业自动化行业的核心资产,而OT层数据具备高实时、高精度、冗余度高、数据量大等等特点,如何获取更加精准的OT数据对数字化进程起到至关重要的作用,…...
【MySQL】-MVCC多版本并发控制
1、当前读 select 不加锁状态,当前读快照读 2、快照读 在select加锁下,读取数据后,形成快照。每个事务都会形成自己的快照内容 SELECT * FROM xx_table LOCK IN SHARE MODE;SELECT * FROM xx_table FOR UPDATE;INSERT INTO xx_table ...D…...
告别零散脚本:用一款Electron工具统一管理多云AKSK与存储桶(附避坑指南)
告别零散脚本:用一款Electron工具统一管理多云AKSK与存储桶(附避坑指南) 在云计算成为基础设施标配的今天,运维工程师的日常往往被各种云平台的切换操作填满。早上检查阿里云OSS的存储桶权限,中午处理腾讯云的AKSK轮换…...
通过爱毕业aibiye的AI辅助,高重复率论文能实现自动润色,包括句式转换和术语优化,有效降低相似度
嘿,大家好!我是AI菌。今天咱们来聊聊一个让无数学生头疼的问题:论文重复率飙到30%以上怎么办?别慌,我这就分享5个实用降重技巧,帮你一次搞定,轻松压到合格线以下。这些方法都是我亲身试验过的&a…...
Qwen2.5-0.5B支持JSON输出?结构化响应部署实操手册
Qwen2.5-0.5B支持JSON输出?结构化响应部署实操手册 “5 亿参数,1 GB 显存,能跑 32 k 长文、29 种语言、JSON/代码/数学全包圆。” 看到这句话,你是不是觉得有点夸张?一个只有5亿参数的“小不点”模型,真的…...
Chandra入门必看:Chandra日志分析技巧——定位响应慢、卡顿、无响应根因
Chandra入门必看:Chandra日志分析技巧——定位响应慢、卡顿、无响应根因 你刚部署好Chandra,兴致勃勃地打开聊天界面,输入第一个问题,然后……光标在闪烁,界面却像被冻住了一样,迟迟没有回应。或者&#x…...
零基础玩转Nunchaku FLUX.1:一键生成Ghibsky风格插画,效果惊艳
零基础玩转Nunchaku FLUX.1:一键生成Ghibsky风格插画,效果惊艳 你是不是也刷到过那些美得像梦一样的插画?那种线条温柔、色彩朦胧、仿佛带着童话滤镜的画面,一看就知道是Ghibsky风格。以前想做出这种效果,要么得苦练几…...
调试问题定位方法
调试问题定位方法:高效排查程序错误的利器 在软件开发与系统维护中,调试是不可避免的环节。面对复杂的代码逻辑或隐蔽的系统错误,如何快速定位问题根源成为开发者必须掌握的技能。本文将介绍几种高效的调试问题定位方法,帮助开发…...
别再手动复制SSH公钥了,Linux服务器一键从GitHub快速导入公钥伟
一、项目背景与核心价值 1. 解决的核心痛点 Navicat的数据库连接密码并非明文存储,而是通过AES算法加密后写入.ncx格式的XML配置文件中。一旦用户忘记密码,常规方式只能重新配置连接,效率极低。本项目只作为学习研究使用,不做其他…...
链栈(链式栈) 超详细实现(C 语言 + 逐行精讲)
前言栈(Stack) 是一种后进先出(LIFO)的线性数据结构。前面我们学习了顺序栈(数组实现),今天我们学习它的兄弟 ——链栈(链式栈)。链栈 用单链表实现的栈它完美解决了顺序…...
保姆级教程:用PaLI-X和PaLM-E微调你自己的RT-2风格机器人模型(附避坑指南)
从零构建RT-2风格机器人模型:基于PaLI-X/PaLM-E的实战指南 当我在实验室第一次看到RT-2模型准确识别出"即将倾倒的杯子"并实施救援动作时,意识到具身智能的临界点已经到来。这不是简单的物体抓取,而是机器对物理世界的因果推理——…...
使用Alpine配置WSL ssh门户狙
1. 哑铃图是什么? 哑铃图(Dumbbell Plot),有时也称为DNA图或杠铃图,是一种用于比较两个相关数据点的可视化图表。 它源于人们对更有效数据比较方式的持续探索。 在传统的时间序列比较中,我们通常使用两条折…...
