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
太多了,它们都必须相同吗?他们的目的是什么?
答案 0 :(得分:1)
这是来自kubenetes网站的示例yaml,有太多my-app,它们都必须相同吗?他们的目的是什么?
否,name
字段不必相同,可以不同。在my-app
和metadata
部分中看到的selector
参考
是labels,可用于将不同的Kubernetes对象粘合在一起,或者在查询Kubernetes时仅选择对象的子集。有时它们是相同的。
取决于您如何创建展开,您可能在整个展开中以及从其派生的对象中拥有run: myapp
。使用kubectl run my-app --image=gcr.io/google-samples/hello-app:1.0 --replicas=3
将创建您要引用的相同部署。
下面的图片展示了如何使用不同的run: my-app
标签,并以上面的Deployment为灵感:
上图显示了部署以及如何使用template
框(蓝色)来创建指定副本(Pods)的数量。从部署的角度来看,每个Pod的run: my-app
部分都会有一个metadata
标签,这将用作选择其负责的Pod的方式。
使用kubectl
对Pods子集的类似选择将是:
kubectl get pods -l run=my-app
这将为您提供所有标记为run: my-app
的Pod。
总而言之,当使用以下命令进行查询时,标签可用于选择资源的子集。 kubectl
或由其他Kubernetes资源进行选择。您可以创建自己的标签,在整个特定部署中它们不必一定相同,但是如果是这样,则可以很容易地查询带有特定标签的任何资源。
答案 1 :(得分:0)
我个人认为,这对于检查广告连播分组信息很有帮助。
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: