Kubernetes必备知识: Annotations

简介: Annotations(注解) 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象,Annotations 则是用来记录一些附加信息,用来辅助应用部署、安全策略以及调度策略等。比如 deployment 使用 annotations 来记录 rolling update 的状态。

所属技术领域:

K8s

|名词定义|

Annotations(注解) 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象,Annotations 则是用来记录一些附加信息,用来辅助应用部署、安全策略以及调度策略等。比如 deployment 使用 annotations 来记录 rolling update 的状态。

|技术特点|

 将metadata附加到对象
您可以使用标签或注释将元数据附加到Kubernetes对象。标签可用于选择对象并查找满足特定条件的对象的集合。相反,注释不用于标识和选择对象。批注中的元数据可以是大小的,结构化的或非结构化的,并且可以包含标签不允许的字符。
像标签一样的注释是键/值映射:
"metadata": {
"annotations": {

"key1" : "value1",
"key2" : "value2"

}
}
以下是一些可以记录在注释中的信息示例:
 由声明性配置层管理的字段。将这些字段附加为注释可以将它们与客户端或服务器设置的默认值,自动生成的字段以及通过自动调整大小或自动缩放系统设置的字段区分开。
 生成,发布或映像信息,例如时间戳,发行ID,git分支,PR号,图像哈希和注册表地址。
 指向日志,监视,分析或审核存储库的指针。
 可用于调试目的的客户端库或工具信息:例如,名称,版本和内部版本信息。
 用户或工具/系统出处信息,例如来自其他生态系统组件的相关对象的URL。
 轻量级推出工具元数据:例如,配置或检查点。
 负责人的电话或寻呼机号码,或指定可在何处找到该信息的目录条目,例如团队网站。
 从最终用户到实现的指令,以修改行为或使用非标准功能。
除了使用批注,您还可以将这种类型的信息存储在外部数据库或目录中,但这将使制作共享的客户端库和用于部署,管理,自省等工具变得更加困难。
 语法和字符集
注释是键/值对。有效的注释键分为两部分:可选的前缀和名称,用斜杠(/)分隔。名称段是必需的,并且必须为63个字符或更少,以字母数字字符([a-z0-9A-Z])开头和结尾,并以短划线(-),下划线(_),点(.)和之间的字母数字组成。前缀是可选的。如果指定,则前缀必须是DNS子域:一系列由点(.)分隔的DNS标签,总计不超过253个字符,后跟斜杠(/)。
如果省略了前缀,则假定注释键对用户是私有的。自动化系统组件(例如kube-scheduler,kube-controller-manager,kube-apiserver,kubectl,或其他第三方自动化),这说明添加到最终用户的对象都必须指定一个前缀。
在kubernetes.io/和k8s.io/前缀保留给Kubernetes核心组件。
例如,这是带有注释的Pod的配置文件imageregistry: https://hub.docker.com/
apiVersion: v1
kind: Pod
metadata:
name: annotations-demo
annotations:

imageregistry: "https://hub.docker.com/"

spec:
containers:

  • name: nginx
    image: nginx:1.7.9
    ports:

    • containerPort: 80
       annotations 的例子

一般是系统或者工具用来存储资源的非标示性信息,可以用来扩展资源的 spec/status 的描述,这里给了几个 annotations 的例子:
第一个例子,存储了阿里云负载器的证书 ID,我们可以看到 annotations 一样可以拥有域名的前缀,标注中也可以包含版本信息。第二个 annotation存储了 nginx 接入层的配置信息,我们可以看到 annotations 中包括“,”这样无法出现在 label 中的特殊字符。第三个 annotations 一般可以在 kubectl apply 命令行操作后的资源中看到, annotation 值是一个结构化的数据,实际上是一个 json 串,标记了上一次 kubectl 操作的资源的 json 的描述。

|资料来源|

名词定义:https://www.cnblogs.com/wplvqj/p/10535060.html
技术特点:https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
存储 Kubernetes 安全
Kubernetes必备知识: PersistentVolumeClaim
PersistentVolumeClaim(简称PVC)是用户存储的请求,PVC消耗PV的资源,可以请求特定的大小和访问模式,需要指定归属于某个Namespace,在同一个Namespace的Pod才可以指定对应的PVC。 当需要不同性质的PV来满足存储需求时,可以使用StorageClass来实现。 每个 PVC 中都包含一个 spec 规格字段和一个 status 声明状态字段。
3756 0
Kubernetes必备知识: PersistentVolumeClaim
|
Kubernetes 容器
Kubernetes 的Ingress的Rewrite annotations
Kubernetes 的Ingress的Rewrite annotations
288 0
Kubernetes 的Ingress的Rewrite annotations
|
canal Kubernetes 负载均衡
Kubernetes必备知识: 主流网络方案
常见的容器网络方案可以从协议栈层级、穿越形态、隔离方式这三种形式进行划分。 协议栈层级: 第一种:协议栈二层。 第二种:协议栈三层(纯路由转发)。 第三种:协议栈二层加三层。
1099 0
Kubernetes必备知识: 主流网络方案
|
Kubernetes 算法 容灾
Kubernetes必备知识: 调度流程
scheduler 是k8s master的一部分,作为插件存在于k8s生态体系。
927 0
Kubernetes必备知识: 调度流程
|
存储 Kubernetes Linux
Kubernetes必备知识: 容器接口CRI
每种容器运行时各有所长,许多用户都希望Kubernetes支持更多的运行时。在Kubernetes 1.5发布版里,我们引入了CRI–一个能让kubelet无需编译就可以支持多种容器运行时的插件接口。CRI包含了一组protocol buffers,gRPC API,相关的库,以及在活跃开发下的额外规范和工具。CRI目前是Alpha版本。 支持可替换的容器运行时在Kubernetes中概念中并非首次。在1.3发布版里,我们介绍了rktnetes项目,它可以让rkt容器引擎作为Docker容器运行时的一个备选。然而,不管是Docker还是Rkt都需要通过内部、不太稳定的接口直接集成到kubele
738 0
Kubernetes必备知识: 容器接口CRI
|
Kubernetes 算法 API
Kubernetes必备知识: 配置调度器
Kubernetes调度程序是一项策略丰富,可感知拓扑,特定于工作负载的功能,会显着显著影响可用性,性能和容量。调度程序需要考虑单个和集体的资源需求,服务质量需求,硬件/软件/策略约束,亲和力和反亲和力规范,数据位置,工作负载间的干扰,期限等。特定于工作负载的需求将在必要时通过API公开。
614 0
Kubernetes必备知识: 配置调度器
|
数据采集 缓存 Kubernetes
Kubernetes必备知识: 扩展调度器
Kubernetes 自带了一个默认调度器kube-scheduler,其内置了很多节点预选和优选的调度算法,一般调度场景下可以满足要求。但是在一些特殊场景下,默认调度器不能满足我们复杂的调度需求。我们就需要对调度器进行扩展,以达到调度适合业务场景的目的。
1006 0
Kubernetes必备知识: 扩展调度器
|
存储 Kubernetes 容器
Kubernetes必备知识: StorageClass
StorageClass提供了一种描述存储类(class)的方法,不同的class可能会映射到不同的服务质量等级和备份策略或其他策略等。 StorageClass 对象中包含 provisioner、parameters 和 reclaimPolicy 字段,当需要动态分配 PersistentVolume 时会使用到。当创建 StorageClass 对象时,设置名称和其他参数,一旦创建了对象就不能再对其更新。也可以为没有申请绑定到特定 class 的 PVC 指定一个默认的 StorageClass 。
1991 0
Kubernetes必备知识: StorageClass
|
存储 Kubernetes 网络协议
Kubernetes必备知识: StatefulSet
StatefulSet是为了解决有状态服务的问题(对应Deployments和ReplicaSets是为无状态服务而设计),其应用场景包括  稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现  稳定的网络标志,即Pod重新调度后其PodName和HostName不变,基于Headless Service(即没有Cluster IP的Service)来实现  有序部署,有序扩展,即Pod是有顺序的
725 0
Kubernetes必备知识: StatefulSet
|
Kubernetes 网络协议 安全
Kubernetes必备知识: pod网络模型
k8s对Pods之间如何进行组网通信提出了要求,k8s对集群的网络有以下要求: • 所有的Pods之间可以在不使用NAT网络地址转换的情况下相互通信 • 所有的Nodes之间可以在不使用NAT网络地址转换的情况下相互通信 • 每个Pod自己看到的自己的ip和其他Pod看到的一致
3854 0
Kubernetes必备知识: pod网络模型