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}}'

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/538494.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

考研数学——高数:高斯公式

助记: 关于积分时什么时候可以将变量整体代入积分式的问题:在积分过程中,如果某一整体恒为常量,则可以直接替换为定值,常见于对线或面的积分。 而在这题,用高斯公式之前是面积分,如果有这个整体出现的话是…

C++中的STL-string类

文章目录 一、为什么学习string类?1.1 C语言中的字符串 二、准库中的string类2.2 string类2.3 string类的常用接口说明2.4 string类对象的容量操作2.5 string类对象的访问及遍历操作2.5 string类对象的修改操作2.7 string类非成员函数2.8 模拟实现string 一、为什么…

【UE5】非持枪状态蹲姿移动的动画混合空间

项目资源文末百度网盘自取 在BlendSpace文件夹中单击右键选择动画(Animation)中的混合空间(Blend Space) ,选择SK_Female_Skeleton,命名为BS_NormalCrouch 打开BS_NormalCrouch 水平轴表示角色的方向,命名为Direction,方向的最…

2024Python二级

1. 2. 前序遍历首先访问根节点再访问左子树和右子树 3. 4. sub不属于保留字 5. 6. 7. 8. continue是再重新开始进行循环,不是题目中所规定字母的话就对它进行输出 9. Python没有主函数的说法 10. 未转化为数据所要求的形式,应首先考虑eval 11. l…

Jmeter —— jmeter中元件的执行顺序作用域

元件的执行顺序: 配置元件-->前置处理程序-->定时器-->取样器-->后置处理程序(除非Sampler 得 到的返回结果为空)-->断言(除非Sampler 得到的返回结果为空)-->监听器 (除非Sampler 得到…

C++特性之一:继承

1. 派生类的成员变量、成员函数、构造、析构 2. 继承的切片 3. 重定义/隐藏 重定义/隐藏:派生类和基类有同名的成员,就叫隐藏。派生类的成员隐藏了基类的成员。 隐藏时可以通过类作用限定符来访问被隐藏的成员。 class Person { public:void Print(){…

MVC架构模式学习笔记(动力节点老杜2022)

GitHub代码笔记:laodu-mvc: 动力节点学习javaweb中的mvc笔记。 文章目录 1.视频链接 2.不使用MVC架构模式程序存在的缺陷 3.MVC架构模式理论基础 4.JavaEE设计模式-DAO模式 5.pojo & bean & domain 6.业务层抽取以及业务类实现 7.控制层 8.MVC架构模式与三…

LLM - 大语言模型的自注意力(Self-Attention)机制基础 概述

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/136623432 注意力(Attention)机制是大型语言模型中的一个重要组成部分,帮助模型决定在处理信息时,所应该关注的部…

【论文速读】| 大语言模型引导的协议模糊测试

本次分享论文为:Large Language Model guided Protocol Fuzzing 基本信息 原文作者:Ruijie Meng, Martin Mirchev, Marcel Bhme, Abhik Roychoudhury 作者单位:新加坡国立大学,MPI-SP,莫纳什大学 关键词&#xff1a…

微信小程序中点击input输入框避免唤起手机端的键盘

最近在给一个门诊部开发微信预约医生的小项目,界面如下: 希望在点击性别下面的input 输入框时后弹出如下界面: 结果总是唤起键盘输入界面如下: 用语言描述就是点击input选择男和女时候,总是会唤起手机的键盘。导致没…

Leetcode 1514 概率最大的路径

文章目录 1. 题目描述2. 我的尝试 1. 题目描述 原题链接:Leetcode 1514 概率最大的路径 给你一个由 n 个节点(下标从 0 开始)组成的无向加权图,该图由一个描述边的列表组成,其中 edges[i] [a, b] 表示连接节点 a 和 b…

【C++】inline内联函数 VS #define宏

文章目录 1. 内联概念2. 内联特点3. 宏的优缺点 1. 内联概念 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内联函数的地方展开,无函数建立栈帧的开销,内联函数提升程序运行的效率。 在release模式下,默认展开生效。 在…