我使用 Juju 在 MaaS 上运行机器。其中一些机器部署失败,因为我在配置中设置的(无效)设置导致钩子未运行。在 Jju UI 中,我尝试将它们标记为已解决,然后尝试删除它们(并重复几次,让它们先变绿,然后又变红)。
(我相信执行 resolve + remove 将使 juju 不会因钩子不起作用而陷入困境,并让 juju 摆脱机器。)
现在我有一些单位似乎卡住了,并且说
agent-state: error
agent-state-info: 'hook failed: "install"'
agent-version: 1.16.0.1
life: dying
处于 juju 状态。我尝试过摧毁这些单位和它们所在的机器。有没有办法放弃这些单位并回收它们所在的机器以备下次尝试?
我也尝试在命令行上标记单元已解决,但我收到了冲突的消息。ERROR cannot set resolved mode for unit "ceph-osd/1": already resolved
当我尝试将其标记为已解决时,我收到了消息,但之后当我运行juju status
agent-state: error
agent-state-info: 'hook failed: "install"'
life: dying
更新:一两个小时后我回来了,发现我遇到问题的一个单元不见了。所以,等待确实有效。
答案1
我有同样的问题,这里是解决方案:
1)在 MAAS 中重新启动节点
2)Charms 将进入错误状态
3)juju 解析“你的单位”
4)juju destroy-service“你的服务”
它对我有用!
答案2
我发现杀死它们的唯一方法(快速)就是破坏环境。
juju destroy-environment
当然,由于从头开始重建环境可能相当激烈,我建议等待一段时间再执行此操作。有时,所有钩子只需要一段时间才能完成执行,然后希望服务不再处于垂死状态。请注意,要真正释放机器,在销毁单元(juju destroy-unit
)后,您需要运行juju destroy-machine
(使用机器编号)来释放它。请注意,juju destroy-machine
不会终止当前充当单元的机器,因此如果单元当前处于垂死状态,它不会释放单元。
我假设你开始构建你的环境。检查机器的日志文件会很有帮助(我也检查它们,但不是为了找出它们为什么没有死机,而是为了找出它们为什么没有完成)。
答案3
在部署服务之前备份 Juju 的数据库。如果出现问题而你无法修复,只需从备份数据库恢复 Juju 即可。