请教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。

部署的pod处于CrashLoopBackOff状态

负载均衡器 IP 和入口 IP 状态在 kubernetes 中处于挂起状态

kubernetes Pod 异常排错