gpt4 book ai didi

kubernetes - 标记 k8s 资源然后在同一 k8s 资源的规范中的标签上应用选择器的重要性是什么?

转载 作者:行者123 更新时间:2023-12-02 11:35:15 28 4
gpt4 key购买 nike

以下是我在k8s网站上遇到的例子。

apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx

选择器: 运行:my-nginx无法弄清楚在规范中标记它然后在规范定义上应用相同的选择器背后的基本原理是什么。找到了大量示例但没有对它们进行解释。

apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
selector:
matchLabels:
run: load-balancer-example
replicas: 2
template:
metadata:
labels:
run: load-balancer-example
spec:
containers:
- name: hello-world
image: gcr.io/google-samples/node-hello:1.0
ports:
- containerPort: 8080
protocol: TCP

** 选择器:

matchLabels:

run: load-balancer-example**

最佳答案

这是 Kubernetes 的基本设计理念之一:

资源由 labels and selectors 链接.

必须引用其他资源的服务或部署等资源具有定义一组标签的选择器。这些资源选择具有与该选择器匹配的标签的所有(特定类型的)资源。

例如,选择器为 a=b 的 Deployment 指的是恰好具有标签 a=b 的所有 Pod。

这就是为什么在您的部署规范中,您必须在 Pod 模板(template 部分)中定义相同的标签(run=load-balancer-example),如部署的选择器。因为您希望 Deployment 管理这些 Pod:

apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world
spec:
selector:
matchLabels:
run: load-balancer-example # <<<<<----- must match
replicas: 2
template: # <- you define a template for the Pods that will be created here
metadata:
labels:
run: load-balancer-example # <<<<------ must match
spec:
containers:
- name: hello-world
image: gcr.io/google-samples/node-hello:1.0
ports:
- containerPort: 8080
protocol: TCP

如果您有任何其他具有 run=load-balancer-example 的 Pod,Deployment 也会管理这些 Pod。另一方面,如果 Deployment 规范的 Pod 模板中的标签与选择器不同,则 Deployment 不会管理这些 Pod,因为它们的标签与 Deployment 的选择器不匹配。

在您的第一个示例中,服务规范中的标签定义是不相关的。第一个 (labels) 是服务的标签(如果你愿意,你可以省略它),第二个 (selector) 是服务的选择器:

apiVersion: v1
kind: Service
metadata:
name: my-nginx
labels:
run: my-nginx # <<<<<---- unrelated to the other 'run: my-nginx'
spec:
ports:
- port: 80
protocol: TCP
selector:
run: my-nginx # <<<<<---- unrelated to the other 'run: my-nginx'

但是,选择器与任何 Pod 的标签相关。特别是,此服务将适用于所有具有 run=my-nginx 标签的 Pod。

关于kubernetes - 标记 k8s 资源然后在同一 k8s 资源的规范中的标签上应用选择器的重要性是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59260866/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com