Kubernetes 文档中第一个也是最小的部署示例有app: nginx
重复三遍的行。我知道这是一个标签,但我还没有找到任何可以解释为什么需要为所有以下内容指定此标签的内容:
metadata.labels
,spec.selector.matchLabels
, 和spec.template.metadata.labels
示例部署文件:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Run Code Online (Sandbox Code Playgroud)
所以1和3在技术上是不相关的。1 是部署对象的标签,仅对您自己的组织目的有意义。3 是将贴在生成的 pod 上的标签。至于为什么 Deployment 依赖于根据 pod 标签手动指定选择器,是为了确保保持无状态。部署控制器可以随时重新启动,一切都会安全。不过,如果有人有一个可靠的提案来处理所有边缘情况,那么它将来可能会得到改进。
归档时间: |
|
查看次数: |
326 次 |
最近记录: |