当前位置:网站首页>Kubernets Pod 存在 Finalizers 一直处于 Terminating 状态
Kubernets Pod 存在 Finalizers 一直处于 Terminating 状态
2022-07-04 13:19:00 【富士康质检员张全蛋】
Metadata
定义了对象的原数据,namespace是用来放置对象的,对象可以通过namespace做隔离。
任何的kubernetes的对象会分为两类,一类像节点这种对象,一个计算节点是属于整个集群的,这类对象是nonnamespace,它的namespace值永远都是空的。
还有一种是pod,service,都是归属于某个租户/用户的,这些对象属于namespace。
一个对象namespace+name就代表了在整个集群当中唯一值。
typemeta定义了我是啥,metadata定义了我是谁。
Finalizer
如果只接触社区的kubernetes,那么对Finalizer可能没有太多的概念,Finalizer本身是资源锁。
一个对象,当我们创建的时候,把这个对象的请求发送到apiserver,apiserver经过认证鉴权存入到etcd,如果删除这个对象,也是经过一样的链路,它最后从etcd中删除掉,这个删除本身是物理删除,相当于etcd当中这条数据就抹掉了,这个对象就消失了。
如果写了控制器监控这个对象,那么会监听这个对象的创建,这个对象创建了就去做一些事情,对象删除了就会去做另外一些事情,我们不能够相信系统永远都在工作,假设控制器出错了,或者控制器在升级,这个时候控制器没有在工作,这个时候去删除对象,假设这个对象消失了,那么这个事件已经消失了,在这个对象删除之后,再去启动我的控制器,控制器是看不到之前这个对象删除的事件,因为在控制器启动之前这个事件已经发生了,在启动新的控制器实例的时候,没有这个消息通知,所以就丢失了对象删除的这样一个事件。
所以fanalizer本质上是资源锁,一个对象加了finalizer,在删除对象的时候不会做物理删除,它会做逻辑删除,其实也就是在它属性的事件戳里面deletetimestamp置为在删除那一刻的时间戳。
这样的好处是当用户去删除对象,如果这个对象有finalizer,那么这个对象不会消失,然后这个控制器可以捕获这个事件,即使是控制器在维护,然后重新启动之后就能够看到这个事件了,当发现一个对象deletetimestamp不为空,说明用户想删除它,那么控制器里面就可以去做一些逻辑处理。
当我们去配置外部资源的时候,比如创建一个pod,这个pod创建完之后,要去配置外部的一些网络,或者配置外部的dns,外部的负载均衡,这个时候就需要为对象加finalizer,那么这需要我写一个控制器,控制器去配置外部dns,配置外部dns之前就要给这个对象加上finalizer,由我都配置控制器去加的,加好finalizer之后这个对象就被锁住了,它只要有finalizer就不会被物理删除,当我去删除这个对象的时候,控制器会看到update的事件,看到这个对象的deletetimestamp不为空,那么这个controller要去清除外部配置,当完成外部配置的清除之后,那么由controler将finalizer删除掉,清除掉之后,k8s发现这个对象finalizer为空了,那么自动由逻辑删除变为物理删除,这个对象就消失了。
所以finalizer是个资源锁。
Pod 一直处于 Terminating 状态 存在 Finalizers
边栏推荐
- Nowcoder rearrange linked list
- 利用Shap值进行异常值检测
- Gin integrated Alipay payment
- Solutions to the problems of miui12.5 red rice k20pro using Au or povo2
- 【云原生】我怎么会和这个数据库杠上了?
- 现代控制理论入门+理解
- Opencv3.2 and opencv2.4 installation
- Combined with case: the usage of the lowest API (processfunction) in Flink framework
- 为什么国产手机用户换下一部手机时,都选择了iPhone?
- STM32F1与STM32CubeIDE编程实例-MAX7219驱动8位7段数码管(基于GPIO)
猜你喜欢
Data Lake (13): spark and iceberg integrate DDL operations
Transplant tinyplay for imx6q development board QT system
leetcode:6110. The number of incremental paths in the grid graph [DFS + cache]
Leetcode 61: rotating linked list
Ultrasonic distance meter based on 51 single chip microcomputer
Sqlserver functions, creation and use of stored procedures
leetcode:6110. 网格图中递增路径的数目【dfs + cache】
[C language] Pointer written test questions
No servers available for service: xxxx
如何搭建一支搞垮公司的技术团队?
随机推荐
【MySQL从入门到精通】【高级篇】(四)MySQL权限管理与控制
leetcode:6110. The number of incremental paths in the grid graph [DFS + cache]
LVGL 8.2 text shadow
Compile oglpg-9th-edition source code with clion
LVGL 8.2 Line
LVGL 8.2 Sorting a List using up and down buttons
电商系统中红包活动设计
Popular framework: the use of glide
LVGL 8.2 List
Programmer turns direction
实时数据仓库
《opencv学习笔记》-- 线性滤波:方框滤波、均值滤波、高斯滤波
codeforce:C. Sum of Substrings【边界处理 + 贡献思维 + 灵光一现】
统计php程序运行时间及设置PHP最长运行时间
LVGL 8.2 text shadow
Leetcode t49: grouping of alphabetic words
数据湖(十三):Spark与Iceberg整合DDL操作
LVGL 8.2 keyboard
金额计算用 BigDecimal 就万无一失了?看看这五个坑吧~~
流行框架:Glide的使用