k8s中的OwnerReference和Finalizers

OwnerReference和Finalizers

1.OwnerReference

设置了OwnerReference以后,会在k8s资源间建立从属关系,当删除属主(即父资源)时,其从属资源(即子资源)也会跟着删除,这就是k8s中的级联删除

1.1 OwnerReference中的属性

  • ApiVersion:属主资源的api版本
  • Kind:属主资源的类型,例如deployment,pod等
  • Name:属主资源的名称
  • Uid:属主资源的唯一标识
  • Controller:当Controller属性为true时,表示资源对象是一个控制器(如Deployment、ReplicaSet等),它管理着其他资源对象(如Pod、Service等)的创建和生命周期。个人理解为:当一个资源有多个属主时,其中为true的属主会监视该资源的变化
  • BlockOwnerDeletion:根据它来判断从属资源的删除是否会阻塞属主资源的删除;当BlockOwnerDeletion为true,并且删除策略为前台删除(foreground)时,属主资源会等待从属资源删完后,才会删除,表现在go-client接口中即为要等待该属主资源及其所有从属资源完全删除后,才会返回该删除接口的结果;当BlockOwnerDeletion设置为false时,从属资源的删除不会阻塞属主资源的删除。

1.2 k8s中的删除策略

  • foreground(前台删除):先删除从属资源,再删除属主资源(一般与BlockOwnerDeletion=true结合使用)
  • background(后台删除):先删除属主资源,再在后台删除从属资源(默认策略)
  • orphan(孤儿删除):不考虑OwnerReference,只删除该资源,不级联删除

1.3 BlockOwnerDeletion与删除策略结合使用

  • 从属资源的BlockOwnerDeletion为true,删除策略为前台删除:删除属主资源时,会等待从属资源被删除后,才会删除属主资源,然后返回删除结果;与go-client结合来看就是,等属主资源和其所有的从属资源都被删除后,删除接口才会返回结果
  • 从属资源的BlockOwnerDeletion为false,删除策略为前台删除时:删除属主资源时,不会等待从属资源的删除,会直接返回删除结果;与go-client结合来看就是,删除接口会立即返回结果
  • 删除策略为后台删除时,都会直接返回删除结果,后台删除不会等待从属资源的删除

2.Finalizers

Finalizers是metadata中的一个数组类型的标签,当k8s资源存在Finalizers标签,删除该资源时,会阻塞该资源的删除,直到Finalizers为空时,才会将该资源真正删除

2.1 Finalizers的工作原理

当删除存在Finalizers标签的资源时,处理删除请求的api会为该资源的metadata标签中添加DeletionTimeStamp标签(该标签为下发删除请求的时间),并且会更改该资源的状态为Terminating状态,此时该资源并没有被完全删除,处于只可见状态;此时控制器会尽量满足该资源的Finalizers的要求,每达到一个要求,就会删去该Finalizers,直到所有的Finalizers全被删除时,该资源才会被真正删除

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用Kubernetesk8s)管理MySQL时,有几个主要的方面需要考虑。首先,你需要部署MySQL on k8s的环境。这可以通过使用适当的Kubernetes资源(如Deployment、Pod和Service)来实现。具体的部署方法可以参考引用提到的资源。 其次,当你需要卸载MySQL时,你可以使用以下命令: ``` kubectl delete pod -n mysql kubectl patch ns mysql -p '{"metadata":{"finalizers":null}}' kubectl delete ns mysql ``` 这些命令将删除与MySQL相关的Pod和命名空间。具体的卸载方法可以参考引用提到的命令。 需要注意的是,虽然可以实现MySQL的主从复制,但目前官方还没有提供MySQL on k8s的高可用实现方案。一些网上的高可用方案存在,但我们公司尚未在生产环境使用,所以无法评价这些方案的可行性和稳定性。此外,对于大数据领域而言,MySQL通常只用作元数据存储,因此即使主节点出现故障,对于整体业务的影响也不会很大。 综上所述,Kubernetes可以用于管理MySQL,并且可以实现MySQL的主从复制。但是,要实现MySQL on k8s的高可用性,需要进一步研究和评估可行的方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [MySQL 在 K8S 环境部署与监控,一篇搞定它!](https://blog.csdn.net/m0_73311735/article/details/127282165)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值