210 字
1 分钟
Kubernetes Label与分层模型
三个 Labels 相关字段
分别是 metadata.labels,spec.template.metadata.labels 和 spec.selector.matchlabels
区别
| 位置 | 属于谁 | 作用 |
|---|---|---|
metadata.labels | Deployment / Service 本身 | 标识“这个对象是什么” |
spec.template.metadata.labels | Pod | 真正打在 Pod 上的标签 |
spec.selector.matchLabels | Deployment | 声明具有哪些标签的Pod被此Deployment所管理 |
也就是说
kubectl get pods --show-labels = spec.template.metadata.labels
kubectl get deployments --show-labels = metadata.labels另外,在创建Deployment Manifest时,spec.template.metadata.labels与spec.selector.matchLabels必须相等,否则apply会失败,因为Pod与Deployment没有建立起耦合关系。
Service 的 Selector 选择的是哪个 Label?
kind: Servicespec: selector: app: myapp version: blue其行为是等价于查找所有 Pod 中, spec.template.metadata.labels存在 app=myapp,version=blue 的 Pod。
标签分层模型
服务身份 - 稳定
app: myapp发布维度 - 会变
version: v1 / v2 / canary管理 / 组织维度
owner: team-aenv: prod使用
- Pod: 1+2
- Deployment selector: 1+2
- Deployment metadata: 1+3
- Service selector: 1 或 1+2,取决于是否要做蓝绿部署
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
Kubernetes Label与分层模型
https://white-festa.net/posts/kubernetes-tutorial/kubernetes-labels-model/ 最后更新于 2025-06-09,距今已过 255 天
部分内容可能已过时