其名称应该是相同的在这个K8S YAML(Which names should be same in

2019-09-28 07:36发布

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 ,做他们都必须是一样的吗? 他们的目的是什么?

Answer 1:

这是kubenetes网站样本YAML,有这么多我的应用程序内,做他们都必须是一样的吗? 他们的目的是什么?

不,他们不必相同至于name字段中去,这可以是不同的。 在my-app的可见的引用metadataselector部分是标签可以用来粘上不同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资源来做选择。 你可以创建自己的标签,他们不一定是相同的整个具体部署,但如果他们是这将是很容易查询与特定标签的任何资源。



Answer 2:

就个人而言,我认为它可以用于检查荚分组信息很有帮助。

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:


文章来源: Which names should be same in this k8s yaml
标签: kubernetes