【问题标题】:Add or edit label on existing node pool in GKE在 GKE 中的现有节点池上添加或编辑标签
【发布时间】:2019-08-11 23:47:24
【问题描述】:

我使用节点池创建了 GKE 集群,但我忘记标记节点... 在 Google Cloud Platform UI 中,我无法为现有节点池编辑或添加 Kubernetes 标签... 在不重新创建整个节点池的情况下如何做到这一点?

【问题讨论】:

    标签: kubernetes google-kubernetes-engine


    【解决方案1】:

    不重新创建节点就无法编辑标签,因此 GKE 不支持更新节点池上的标签。

    在 GKE 中,Kubernetes 标签通过kubelet 二进制文件应用于节点,该二进制文件将它们作为通过节点启动脚本传入的标志接收。由于重新创建节点池中的所有节点与创建新节点池一样具有破坏性(或更破坏性),因此更新标签不是更新节点池的受支持操作。

    【讨论】:

    • 但我不明白为什么这是不可能的。我只是建议您在创建节点池后添加添加污点和标签的功能。重新创建或重新启动池中的节点以添加标签或污染是没有意义的!那么有什么问题呢?
    • 当前添加标签的方式是通过 kubelet 参数。如果 kubelet 重新启动,它将重新应用它开始时使用的标签,删除您所做的任何更改(如另一个答案中所述)。 Kubernetes 社区正在努力消除 kubelet 自我标记的能力,因此这种工作方式将来会发生变化,一旦 GKE 发生这种变化,我希望更新节点池 API 能够支持动态变化的标签。
    • 酷。让我们拭目以待。
    【解决方案2】:

    您可以使用kubectl 编辑您的节点配置,包括标签:

    kubectl edit node <your node name>

    使用kubectl get node 获取您的节点列表。如果您在连接到 GKE 集群时遇到问题,请查看文档here

    【讨论】:

    • 不,这个解决方案对我没有帮助,因为如果我将节点池的大小调整为 0,然后调整为 3,标签将消失,因为会有新节点。
    • 好点。我认为我们没有选择,因为节点池更新 API doesn't handle labels
    【解决方案3】:

    创建一个您想要的新节点池,然后将您的工作负载迁移到其中。然后销毁旧池。

    根据您的工作负载,当 pod 移至新节点时,您的服务中可能会出现“短暂”。

    我定义了两个节点池:蓝色和绿色。在任何给定时间,只有一个池处于运行状态。

    如果我需要做出改变:

    1. 我确保 down 节点池的自动化至少与 up 池的配置相匹配。
    2. 然后我在停机池中进行我想要的自动化更改。
    3. 然后我调出那个游泳池。
    4. 我使用警戒线/排水管将工作负载迁移到新节点池。
    5. 然后我销毁旧池。
    6. 然后我确保旧的、现在关闭的池的自动化与新的池匹配。

    我已经准备好迎接下一次改变了。

    大卫

    【讨论】:

      猜你喜欢
      • 2021-11-21
      • 2021-06-20
      • 2021-04-19
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多