Kubernetes--资源注解
资源注解
除了标签(label)之外,Pod与其他各种资源还能使用资源注解(annotation)。与标签类似,注解也是“键值”类型的数据,不过它不能用于标签及挑选Kubernetes对象,仅可用于为资源提供“元数据”信息。另外,注解中的元数据不受字符数量的限制,它可大可小,可以为结构化或非结构化形式,也支持使用在标签中禁止使用的其他字符。
资源注解可由用户手动添加,也可由工具程序自动附加并使用它们。在Kubernetes的新版本中(alpha或beta阶段)为某资源引入新字段时,常以注解的方式提供,以避免其增删等变动对用户带来困扰,一旦确定支持使用它们,这些新增字段就将再引人到资源中并淘汰相关的注解。另外,为资源添加注解也可让其他用户快速了解资源的相关信息,例如其创建者的身份等。以下为常用的场景案例。
-
由声明式配置层(如apply命令)管理的字段:将这些字段定义为注解有助于识别由服务器或客户端设定的默认值、系统自动生成的宇段以及由自动伸缩系统生成的字段。
-
构建、发行或镜像相关的信息,例如,时间戳、发行ID、Git分支、PR号码、镜像哈希及仓库地址等。
-
指向日志、监控、分析或审计仓库的指针。
-
由客户端库或工具程序生成的用于调试目的的信息:如名称、版本、构建信息等。
-
用户或工具程序的来源地信息,例如来自其他生态系统组件的相关对象的url。
-
轻量化滚动升级工具的元数据,如config及checkpoints。
-
相关人员的电话号码等联系信息,或者指向类似信息的可寻址的目录条目,如网站站点。
查看资源注解
“kubectl get -o yaml”和“kubectl describe”命令均能显示资源的注解信息。例如下面的命令显示的pod-example的注解信息:
kubectl describe pods pod-example Name: pod-example Nameapace: default Node: node02.ilinux.io/172.16.0.67 Start Time: Mon,······ Labels: env=production Annotation: kubectl.kubernetes.io/······ ······ Status: Running
pod-example此前由声明式配置命令apply创建,因此它在注解中保存了如上的相关信息以便在下次资源变动时进行版本比对。
管理资源注解
annotation可在资源创建时使用“metadata.annotations”字段指定,也可随时按需在活动的资源上使用“kubectl annotate”命令进行附加。比如为pod-example重新进行注解:
kubectl annotate pods pod-example ilinux.io/created-by=“cluster admin” pod “pod-example” annotated
查看生成的注解信息:
kubectl describe pods pod-example | grep “Annotations” Annotations: ilinux.io/created-by=cluster admin
如果需要在资源创建时的清单中指定,那么使用类似如下的方式即可:
apiVersion:v1 kind:Pod metadata: name:pod-example annotations: ilinux.io/created-by:cluster admin spec: ···