【问题标题】:How to undo kubectl delete node如何撤消 kubectl 删除节点
【发布时间】:2019-07-14 17:37:24
【问题描述】:

我在 Azure 上有一个使用 asc-engine 创建的 k8s 集群。它有 4 个 windows 代理节点。

最近有 2 个节点进入未就绪状态,并在那里停留了一天多。为了纠正这种情况,我在两个未就绪的节点上都执行了“kubectl delete node”命令,认为它们只会以与重新启动部署中的 pod 相同的方式重新启动。

没有这样的运气。节点不再出现在“kubectl get nodes”列表中。支持节点的虚拟机仍然存在并且仍在运行。我尝试重新启动虚拟机,认为这可能会导致它们自行注册,但没有运气。

如何将节点恢复为 k8s 集群的一部分?否则,我该如何从这种情况中恢复过来?更糟糕的是,我可以简单地丢弃整个集群并重新创建它,但我真的很想简单地修复我所拥有的。

【问题讨论】:

    标签: azure kubernetes kubectl azure-aks


    【解决方案1】:

    您可以删除虚拟机并重新运行您的 acs 引擎模板,应该将节点带回来(虽然,我并没有真正测试您的确切场景)。或者您可以简单地创建一个新集群,这并不需要很多时间,因为您只需要运行您的模板。

    在 k8s 中无法从删除对象中恢复。可以肯定的是,一旦您删除它们,它们就会从 etcd 中清除。

    【讨论】:

    • 是的,好主意。除了如何做到这一点?我有 acs-engine 创建的 ARM 模板。该模板似乎只适用于在空资源组中创建新集群。那就是使用的命令是“az group deployment create”。没有对应的“az group 部署更新”。看来删除集群并完全重新创建它是唯一的选择。
    • deployment create 创建部署,而不是集群。部署做一些事情。您只需重新运行模板。它应该创建新节点,它应该添加节点
    • 虽然重新创建集群确实需要很少的时间,但它不仅仅是重新运行 ARM 模板。要删除集群,我必须删除整个资源组以及服务主体(根据教程的“最佳实践”是将服务主体放在 RG 中)。所以新的 RG 和新的 SP 需要再次运行 acs-engine,所以新的 ARM 模板和随之而来的涟漪效应通过了。
    • 你不需要删除资源组,你只需要重新运行模板。服务主体不能放入资源组。它是一个 Azure AD 实体,未连接到 Azure 资源管理器实体。看起来你混合了很多东西。
    • 确实如此。所以我删除了 2 个虚拟机并进行了另一次部署。它因神秘错误“CanceledAndSupersededDueToAnotherOperation”而失败。有趣的是:我删除了集群中的第 1 个和第 4 个节点,并重新创建了第一个节点,现在我可以使用 kubectl get nodes 看到它。所以你的方法很接近工作。我做错了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 2018-10-25
    • 2012-03-27
    • 2010-09-13
    • 2018-03-17
    相关资源
    最近更新 更多