为什么要为k8s deployment添加标签?

107次阅读
没有评论

问题描述

在下面的部署(deployment)YAML文件中,部署本身有一个标签 “app: hello”。如果我删除该行(第6行),会发生什么情况?
我理解需要为Pods添加标签的功能需求,因为部署可以通过标签引用这些Pods。在下面的示例中,这意味着我理解为什么第11-12行和第16-17行存在。但这并不能解答为什么部署(deployment)应该添加标签。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloweb
  labels:
    app: hello
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello
      tier: web
  template:
    metadata:
      labels:
        app: hello
        tier: web
    spec:
      containers:
        - name: hello-app
          image: registry.gitlab.com/itential/cloud-team/applications/hello-app
          ports:
            - containerPort: 8080
      imagePullSecrets:
        - name: gitlab-reg

解决方案

请注意以下操作可能因版本差异而有所不同。
标签(Labels)让你可以查询特定的对象;从官方文档中可以得知:
标签使用户能够以松散耦合的方式将自己的组织结构映射到系统对象上,而不需要客户端存储这些映射。

例如,如果你使用像Spinnaker这样的部署工具,该工具会为每个操作过的对象添加标签,以便了解它并对其进行管理。
当你查询标签时,你可以使用等式操作符(=,==和!=)。K8s文档应该是一个很好的起点,或者可以查阅关于标签的这篇文章

综上所述,尽管你在部署(deployment)中删除 “app: hello” 这一行标签,但这个标签在Kubernetes中仍然具有重要作用。标签不仅用于标识和查询对象,还可以让工具和系统更好地管理和跟踪这些对象。如果你的部署工具或系统需要使用标签来管理部署,保留 “app: hello” 标签可能是有益的。

正文完