kubernetes annotation


Annotation

Annotation,顧名思義,就是注解。Annotation可以將Kubernetes資源對象關聯到任意的非標識性元數據。使用客戶端(如工具和庫)可以檢索到這些元數據。

關聯元數據到對象

Label和Annotation都可以將元數據關聯到Kubernetes資源對象。Label主要用於選擇對象,可以挑選出滿足特定條件的對象。相比之下,annotation 不能用於標識及選擇對象。annotation中的元數據可多可少,可以是結構化的或非結構化的,也可以包含label中不允許出現的字符。

annotation和label一樣都是key/value鍵值對映射結構:

"annotations": { "key1" : "value1", "key2" : "value2" }

 

以下列出了一些可以記錄在 annotation 中的對象信息:

  • 聲明配置層管理的字段。使用annotation關聯這類字段可以用於區分以下幾種配置來源:客戶端或服務器設置的默認值,自動生成的字段或自動生成的 auto-scaling 和 auto-sizing 系統配置的字段。
  • 創建信息、版本信息或鏡像信息。例如時間戳、版本號、git分支、PR序號、鏡像哈希值以及倉庫地址。
  • 記錄日志、監控、分析或審計存儲倉庫的指針
  • 可以用於debug的客戶端(庫或工具)信息,例如名稱、版本和創建信息。
  • 用戶信息,以及工具或系統來源信息、例如來自非Kubernetes生態的相關對象的URL信息。
  • 輕量級部署工具元數據,例如配置或檢查點。
  • 負責人的電話或聯系方式,或能找到相關信息的目錄條目信息,例如團隊網站。

如果不使用annotation,您也可以將以上類型的信息存放在外部數據庫或目錄中,但這樣做不利於創建用於部署、管理、內部檢查的共享工具和客戶端庫。

示例

如 Istio 的 Deployment 配置中就使用到了 annotation:

apiVersion: extensions/v1beta1 kind: Deployment metadata: name: istio-manager spec: replicas: 1 template: metadata: annotations: alpha.istio.io/sidecar: ignore labels: istio: manager spec: serviceAccountName: istio-manager-service-account containers: - name: discovery image: harbor-001.jimmysong.io/library/manager:0.1.5 imagePullPolicy: Always args: ["discovery", "-v", "2"] ports: - containerPort: 8080 env: - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: apiserver image: harbor-001.jimmysong.io/library/manager:0.1.5 imagePullPolicy: Always args: ["apiserver", "-v", "2"] ports: - containerPort: 8081 env: - name: POD_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace

 

alpha.istio.io/sidecar 注解就是用來控制是否自動向 pod 中注入 sidecar 的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM