请教kubernetes部署问题,pod一直处于pending状态
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教kubernetes部署问题,pod一直处于pending状态相关的知识,希望对你有一定的参考价值。
从Docker层面有一个可能的思路是在Dockerfile指定ENTRYPOINT为一个脚本文件,然后在脚本文件里加上特定信号的捕捉器,在捕捉器里面处理Pod退出时的逻辑。例如这个入口脚本就用了类似的功能。functionshutdown->退出时的清理工作trapshutdownSIGTERMSIGINT#注册信号捕捉器不确定Kubernetes关闭Pod时候,容器的入口程序会不会收到特定的信号。只是想到这么个点子,提供一个思路,没有实际测试过,不一定可行。 参考技术A 从 Docker 层面有一个可能的思路是在 Dockerfile 指定 ENTRYPOINT 为一个脚本文件,然后在脚本文件里加上特定信号的捕捉器,在捕捉器里面处理 Pod 退出时的逻辑。 例如这个入口脚本就用了类似的功能。 function shutdown -> 退出时的清理工作.。始终运行一个 Kubernetes pod 实例
【中文标题】始终运行一个 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一直处于pending状态的主要内容,如果未能解决你的问题,请参考以下文章
请教kubernetes部署问题,pod一直处于pending状态
请教kubernetes部署问题,pod一直处于pending状态
Kubernetes强制删除一直处于Terminating状态的pod。