在GKE中的现有节点池上添加或编辑标签

时间:2019-03-21 06:44:20

标签: kubernetes google-kubernetes-engine

我创建了带有节点池的GKE集群,但是我忘了给节点加标签... 在Google Cloud Platform用户界面中,我无法为现有节点池编辑或添加Kubernetes标签... 在不重新创建整个节点池的情况下该怎么办?

The label field is unchangeable

3 个答案:

答案 0 :(得分:1)

您可以使用public class FooterProblem { public static void main(final String[] args) throws Exception { final XWPFDocument docx = new XWPFDocument(); final XWPFParagraph para = docx.createParagraph(); final XWPFRun paraRun = para.createRun(); paraRun.setText("Email: "); appendExternalHyperlink("mailto:me@example.com", "me@example.com", para); final XWPFParagraph footer = docx.createFooter(HeaderFooterType.DEFAULT).createParagraph(); final XWPFRun footerRun = footer.createRun(); footerRun.setText("Email: "); appendExternalHyperlink("mailto:me@example.com", "me@example.com", footer); final FileOutputStream out = new FileOutputStream("FooterProblem.docx"); docx.write(out); out.close(); docx.close(); } public static void appendExternalHyperlink(final String url, final String text, final XWPFParagraph paragraph) { // Add the link as External relationship final String id = paragraph.getDocument().getPackagePart() .addExternalRelationship(url, XWPFRelation.HYPERLINK.getRelation()).getId(); // Append the link and bind it to the relationship final CTHyperlink cLink = paragraph.getCTP().addNewHyperlink(); cLink.setId(id); // Create the linked text final CTText ctText = CTText.Factory.newInstance(); ctText.setStringValue(text); final CTR ctr = CTR.Factory.newInstance(); ctr.setTArray(new CTText[] { ctText }); // Insert the linked text into the link cLink.setRArray(new CTR[] { ctr }); } } 编辑节点配置,包括标签:

kubectl

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

按照您的方式创建新的节点池,然后将工作负载迁移到该节点池。然后摧毁旧游泳池。

根据工作量,将pod移到新节点时,服务中可能会出现“斑点”。

我定义了两个节点池:蓝色和绿色。在任何给定时间,只有一个池可用。

如果我需要进行更改:

  1. 我确保下行节点池的自动化至少与上行池的配置匹配。
  2. 然后,我在关闭的池中进行所需的自动化更改。
  3. 然后我打开那个游泳池。
  4. 我使用警戒线/流水线将工作负载迁移到新的节点池。
  5. 然后我摧毁了旧游泳池。
  6. 然后,我确保旧的(现在已关闭)池的自动化与新的新池匹配。

我已经准备好进行下一次更改。

大卫