Kubernetes 中的自定义资源定义(CRD)及自定义控制器实现
在 Kubernetes 环境中,自定义资源定义(CRD)和自定义控制器是扩展集群功能的强大工具。本文将详细介绍如何构建一个 CRD 和相应的自定义控制器,以实现特定的功能,即根据设定的时间删除 Pod。
需求背景
我们的目标是在 Pod 创建后的一定时间后将其删除,这个时间我们定义为 podLiveForThisMinutes 。同时,不同的命名空间可能有不同的优先级和需求,因此需要为每个命名空间提供一种可配置的方式来定义 podLiveForThisMinutes 。
自定义资源的定义
为了实现上述需求,我们定义了一个自定义资源(CR),其结构如下:
apiVersion: "controllers.kube.book.au/v1"
kind: PodLifecycleConfig
metadata:
name: demo-pod-lifecycle
spec:
namespaceName: crddemo
podLiveForThisMinutes: 1
下面详细解释各个字段的含义:
- apiVersion :Kubernetes 用于对对象进行分组的字段。我们将版本(v1)作为组键的一部分,这种分组技术有助于我们管理对象的多个版本。例如,如果要在不影响现有用户的情况下添加新属性,可以创建一个 v2 组,v1 和 v2 版本的对象可以同时存在,不同
超级会员免费看
订阅专栏 解锁全文
1269

被折叠的 条评论
为什么被折叠?



