所屬技術領域:
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/