始终运行一个 Kubernetes pod 实例
Posted
技术标签:
【中文标题】始终运行一个 Kubernetes pod 实例【英文标题】:Always run one instance of Kubernetes pod 【发布时间】:2020-01-25 00:13:49 【问题描述】:如何将 Kubernetes 部署配置为始终只运行一个 pod 副本?我们可以在部署文件中将副本配置为 1,但这不会阻止有人使用 kubectl 扩展 pod。
【问题讨论】:
实现这个有什么运气吗?我们在托管集群上,无法创建变异 webhook 【参考方案1】:您不能直接限制部署资源不允许多个副本。
但您可以创建一个自定义的ValidatingAdmissionWebhook 准入控制器,拒绝尝试修改此部署的replicas
字段的请求。
或者您可以创建一个自定义资源定义 (CRD),其行为与部署类似,但副本数固定为 1。
一般来说,如果您只想阻止某些用户扩展副本,您可以限制这些用户的 RBAC 权限以阻止他们更新部署对象。
【讨论】:
【参考方案2】:您可以使用mutating webhook controller。
任何 pod 都可以通过这种方式限制为特定数量的副本。
对于你想要达到的目标来说可能有点矫枉过正,但它会奏效。
【讨论】:
使用验证钩子并拒绝不匹配的更改可能更好,Open Policy Agent 是一种简单的方法。嗯,很简单。以上是关于始终运行一个 Kubernetes pod 实例的主要内容,如果未能解决你的问题,请参考以下文章
基于Kubernetes的hpa实现pod实例数量的自动伸缩