这个问题在这里已经有了答案:
Why labels are mentioned three times in a single deployment
(4 个回答)
2年前关闭。
第一个也是最小的example of a Deployment in the Kubernetes documentation有 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
最佳答案
所以 1 和 3 在技术上是不相关的。 1 是部署对象的标签,仅适用于您自己的组织目的。 3 是将放在生成的 pod 上的标签。至于为什么部署依赖于针对 pod 标签手动指定选择器,是为了确保保持无状态。部署 Controller 可以随时重启,一切都会安全。不过,如果有人有一个可靠的建议来处理所有边缘情况,那么它将来可能会得到改进。
关于kubernetes - 为什么 Kubernetes 部署 YAML 文件如此重复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54954437/