我遇到了
pending-update
头盔问题,即。在 CI 管道中,我们有时会一次又一次地部署一个特定的应用程序。第一个 helm 部署仍处于 pending-update
状态,而同一应用程序的其他部署(例如 1 分钟后运行)无法部署,导致众所周知的错误:Error: UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress
.
我知道这是一个众所周知的问题,一个可能的解决方案是在
helm upgrade
命令之前删除与 Helm 相关的 k8s 秘密删除(在 CI 管道中自动删除),但这是解决这个问题的好方法吗?您如何处理 CI 管道中的这些场景?
是的,您可以通过秘密删除解决它,在我们的一个案例中它也不起作用。
所以我建议检查
kubetl get events
如果有人无法启用未获取调试日志的日志,它也会指出错误。
我因 helm 部署创建 service
Type: LoadBalancer
而面临问题,我们在 tenancy/account 中没有 LoadBalancer 的Quota。
我们主要检查 POD 状态,但 helm 可能在 service、secret、configmap 等方面存在问题,因此请确保您这样做,而不是正确猜测调试。
您可以做的另一个解决方法是回滚到以前的发布版本,这会将状态从pending-update更改为deployed即使您是第一次部署。
如果有任何悬而未决的东西被安装,它可能会将发布标记为已部署。所以你升级或安装一个新的而不是得到一个错误。
helm -n [NAMESPACE ] rollback <RELEASE> [REVISION]
例子
helm -n default rollback service 1
这会将您的发布标记为 已部署 作为解决方法,如果卡在状态中。