如何在 GCP 中标记 GKE/Kubernetes 节点及其磁盘?

如何在 GCP 中标记 GKE/Kubernetes 节点及其磁盘?

在我们的 GCP 项目中,我们正在为资源设置标签,以协助组织和成本管理。这是关于 GCP 标签的内容,如这里所述https://cloud.google.com/compute/docs/labeling-resources而不是 Kubernetes 标签。

对于独立资源(如实例、持久磁盘和外部 IP 地址),我们只需设置标签即可。我们有一个 Kubernetes/GKE 集群,我们也对其进行了标记。但似乎集群的标签不会被 Kubernetes 节点实例及其磁盘自动继承。而且似乎我们无法在集群的节点池上贴上标签。但我们也希望在这些资源上贴上标签,因为最终要计费的是实例和磁盘。现在我们想知道在这种情况下最佳做法是什么。

在由集群节点池管理的计算实例及其持久磁盘上手动添加标签是否安全,或者这会导致问题?如果可以并且我们添加了标签,那么如果节点池被新池替换并删除会发生什么?在这种情况下,实例会自动删除并创建新实例。新实例和磁盘会继承旧实例的标签吗?还是标签会丢失?

答案1

Google Kubernetes Engine 标签不同于 Kubernetes 中的标签。GKE 标签是附加到您的资源的任意元数据,您可以使用它来跟踪使用情况和账单信息。在 Kubernetes 中,系统在内部使用标签将集群组件和资源相互关联并管理资源生命周期。

在 GKE 中,在集群级别应用标签标记集群时,您选择的标签传播到集群的所有单个资源(例如节点和持久磁盘)。

重要的:

你应用到集群的任何标签都会通过后台进程进行传播,每小时运行标签可能需要长达一小时才能显示在与给定集群相关的所有资源上。此外,在集群标签的 Beta 版本中, 标签仅传播到 Compute Engine 实例和持久磁盘. 转发规则、IP 等其他资源未标注。

您可以在以下网址了解更多信息:GCP Kubernetes Engine 创建和管理标签


再生产:

  • 我已将标签添加labelkey:labelvalue到正在运行的集群中cluster-116
$ gcloud container clusters update cluster-116 --update-labels labelkey=labelvalue --zone us-central1-c
Updating cluster-116...done.  

笔记: 标签更新将覆盖所有预先存在的标签。如果集群中有您想要保留的现有标签,则必须将这些标签与您想要添加的任何新标签一起添加。

  • 我尝试在节点 Compute Engine VM 上立即读取标签:
$ gcloud compute instances describe gke-cluster-116-default-pool-2640aefe-87tx --zone us-central1-c | grep label
labels:
  - key: kube-labels ...
  • 我的标签还没出现。一小时后我又检查了一次:
$ gcloud compute instances describe gke-cluster-116-default-pool-2640aefe-87tx --zone us-central1-c | grep label
labels:
  labelkey: labelvalue
  - key: kube-labels ...

如您所见,标签已传播到虚拟机实例。

如果您有任何疑问,请在评论中告诉我。

相关内容