我們可以使用 Kubernetes 註解將任意非標識元數據附加到對象。工具和庫之類的客戶端可以檢索該元數據。
將元數據附加到對象
我們可以使用標籤或註解將元數據附加到 Kubernetes 對象。標籤可用於選擇對象並查找滿足特定條件的對象的集合。相反,註解不用於標識和選擇對象。註解中的元數據可小可大,結構化或非結構化,並且可以包含標籤不允許的字符。
像標籤一樣的註解是鍵/值映射:
"metadata": {
"annotations": {
"key1" : "value1",
"key2" : "value2"
}
}
以下是一些可以記錄在註釋中的信息示例:
- 由聲明式配置層管理的字段。將這些字段附加爲註解可將其與客戶端或服務器設置的默認值,自動生成的字段以及通過自動調整大小或自動縮放系統設置的字段區分開;
- 構建、發佈或鏡像信息,例如時間戳、發行編號、git 分之、PR 號、鏡像哈希及註冊表地址;
- 指向日誌、監控、分析或審覈存儲庫的指針;
- 可用於調試目的的客戶端庫或工具信息:例如,名稱、版本和內部版本信息;
- 用戶或工具/系統出處信息,例如來自其他生態系統組件的相關對象的 URL;
- 輕量級推出工具元數據:例如,配置或檢查點;
- 負責人的電話或尋呼機號碼,或指定可在何處找到該信息的目錄條目,例如團隊網站;
- 從最終用戶到實現的指令,以修改行爲或使用非標準功能;
除了使用註解,我們還可以將這種類型的信息存儲在外部數據庫或目錄中,但這將使製作共享客戶端庫和用於部署、管理、自省等工具變得更加困難。
語法和字符集
註解是鍵/值對。有效的註解鍵分爲兩部分:可選的前綴和名稱,用斜槓(/
)分隔。名稱段是必須的,並且必須爲 63 個字符或更少,以字母數字字符([a-z0-9A-Z]
)開頭和結尾,並帶有破折號(-
)、下劃線(_
)、點(.
)以及之間有字母數字。前綴是可選的。如果指定,則前綴必須是 DNS 子域:一系列由點(.
)分隔的 DNS 標籤,總計不超過 253 個字符,後跟斜槓(/
)。
如果省略了前綴,則假定註解鍵對用戶是私有的。向最終用戶對象添加註解的自動化系統組件(例如 kube-scheduler
、kube-controller-manager
、kube-apiserver
、kubectl
或其他第三方自動化)必須指定前綴。
kubernetes.io/
和 k8s.io/
前綴是爲 Kubernetes 核心組件保留的。
例如,這是具有註解 imageregistry: https://hub.docker.com/
的 Pod 的配置文件:
apiVersion: v1
kind: Pod
metadata:
name: annotations-demo
annotations:
imageregistry: "https://hub.docker.com/"
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
下一步怎麼做
- 瞭解有關標籤和選擇器的更多信息。