在不使用 Kubectl 的情况下删除“已完成”的 pod 的命名空间 kubernetes (AKS) 集群中是否可以有一个 cronjob/pod?

问题描述

当前状态:从本地命令行,在对集群进行身份验证并设置正确的上下文后,我使用 Kubectl 获取“已完成”pod 列表,然后使用简单的单行删除它们.这可行,但我们希望实现自动化。

这些是处于“已完成”状态的 Pod,而不是作业。我知道作业的 ttl 设置,但我找不到 Pod 的类似设置。

未来状态:我们希望能够在命名空间内部署一个 pod/cronjob,它只会查找“已完成”的 pod 并删除它们,而不使用 Kubectl。我的理解是,如果我们允许 Pod 具有 Kubectl 访问权限,这将是一个安全风险。如果我错了,请纠正我。话虽如此,如果有办法,我们怎么做?

解决方法

我们希望能够在命名空间内部署一个 pod/cronjob,它只会查找“已完成”的 pod 并删除它们,而不使用 Kubectl。

这应该可以正常工作。只需确保 ServiceAccount 具有删除这些 Pod 的 RBAC 权限即可。

我的理解是,如果我们允许 Pod 访问 Kubectl,这将是一个安全风险。如果我错了,请纠正我。

这应该没问题。但是您应该练习最低权限并将RBAC权限配置为仅允许此操作,例如仅删除 Pod,且仅在同一命名空间内。

话虽如此,如果有办法,我们怎么做?

使用包含 kubectl 的图像和 ServiceAccount 的适当 RBAC 权限应该可以做到这一点。