apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-app
labels:
run: my-app
spec:
replicas: 3
selector:
matchLabels:
run: my-app
template:
metadata:
labels:
run: my-app
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: my-app
ports:
- containerPort: 8080
这是kubenetes网站样本YAML,有这么多my-app
,做他们都必须是一样的吗? 他们的目的是什么?
这是kubenetes网站样本YAML,有这么多我的应用程序内,做他们都必须是一样的吗? 他们的目的是什么?
不,他们不必相同至于name
字段中去,这可以是不同的。 在my-app
的可见的引用metadata
和selector
部分是标签可以用来粘上不同Kubernetes对象一起或者简单地选择查询Kubernetes当对象的子集。 他们有时是相同的。
根据你如何创造你可能已经部署run: myapp
整个部署和中来源于它的对象。 使用kubectl run my-app --image=gcr.io/google-samples/hello-app:1.0 --replicas=3
会造成你指的是相同的部署。
下面是说明如何将不同的图片run: my-app
标签的使用,使用部署上面的启示:
上图为您的部署,以及如何在template
盒(蓝色)用于创建指定副本(荚)的数量。 各承会得到一个run: my-app
的这标签的metadata
部分,从部署角度,这将被用来作为选择它负责舱体的方式。
使用吊舱的一个子集的类似的选择kubectl
将是:
kubectl get pods -l run=my-app
这会给你所有的豆荚标记run: my-app
。
为了总结了一下,标签可以用来使用例如查询时选择资源的一个子集kubectl
或其他Kubernetes资源来做选择。 你可以创建自己的标签,他们不一定是相同的整个具体部署,但如果他们是这将是很容易查询与特定标签的任何资源。
就个人而言,我认为它可以用于检查荚分组信息很有帮助。
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-app <--- Deployment object name, you can change it.
labels:
run: my-app <--- It is helpful for the management, e.g.> Deleting same label one
spec:
replicas: 3
selector:
matchLabels:
run: my-app <--- What labels are controlled over by this deployment object.
template:
metadata:
labels:
run: my-app <--- Yeah, it's pod's label. It can be used of grouping with other objects
spec:
containers:
- image: gcr.io/google-samples/hello-app:1.0
name: my-app
ports: