Kubernetes-匹配标签、选择器的范围
我进行了以下部署Kubernetes-匹配标签、选择器的范围,kubernetes,Kubernetes,我进行了以下部署 apiVersion: apps/v1 kind: Deployment metadata: name: hello-deploy spec: replicas: 10 selector: matchLabels: app: hello-world minReadySeconds: 10 strategy: type: RollingUpdate rollingUpdate: maxUnavailabl
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-deploy
spec:
replicas: 10
selector:
matchLabels:
app: hello-world
minReadySeconds: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
template:
metadata:
labels:
app: hello-world
spec:
containers:
- name: hello-pod
image: nginx:latest
ports:
- containerPort: 80
此选择器是否仅适用于部署管理的吊舱或具有相同标签的任何吊舱-我试图了解选择器的范围此处选择标签为app:hello world的吊舱,该吊舱也由部署管理
总的来说,我引用官方文件:
注意:必须指定适当的选择器和Pod模板标签
在本例中的部署中,app:hello world。不要重叠标签或标签
带有其他控制器的选择器,包括其他部署和
州集。Kubernetes不会阻止你重叠,如果
多个控制器与这些控制器具有重叠的选择器
可能会发生冲突和意外行为
这里选择标签为app:hello world的吊舱,该吊舱也由您的部署管理
总的来说,我引用官方文件:
注意:必须指定适当的选择器和Pod模板标签
在本例中的部署中,app:hello world。不要重叠标签或标签
带有其他控制器的选择器,包括其他部署和
州集。Kubernetes不会阻止你重叠,如果
多个控制器与这些控制器具有重叠的选择器
可能会发生冲突和意外行为
第一个注意事项:部署控制器将pod模板哈希标签添加到部署创建或采用的每个复制集
此标签确保部署的子副本集不重叠。它是通过对ReplicaSet的PodTemplate进行散列,并将生成的散列用作添加到ReplicaSet选择器、Pod template labels和ReplicaSet可能拥有的任何现有Pod中的标签值而生成的
所以现在您可以测试选择器在部署中的工作方式,如下所示
首先创建一个带有标签的nginx吊舱,如下所示
$ kubectl run nginx-1 --image=nginx --restart=Never --labels=run=nginx
$ kubectl get pods -o wide --show-labels
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
pod/nginx-1 1/1 Running 0 11m 192.168.58.198 k8s-node02 <none> <none> run=nginx
因此,现在我们将有4个吊舱的部署和一个名为nginx-1的吊舱正在运行
因此,现在如果我们编辑第一个POD以包含相同的POD模板哈希,您将看到副本集将立即缩小POD的数量,以匹配副本集的数量4
我们编辑nginx-1pod并添加pod散列模板
因此,您将看到部署已经移除了自己的一个pod,以将replicaset编号正确地保持在4
希望这个例子能帮助您理解标签和选择器是如何工作的,以及它们的作用域
第一个注意事项:部署控制器将pod模板哈希标签添加到部署创建或采用的每个复制集
此标签确保部署的子副本集不重叠。它是通过对ReplicaSet的PodTemplate进行散列,并将生成的散列用作添加到ReplicaSet选择器、Pod template labels和ReplicaSet可能拥有的任何现有Pod中的标签值而生成的
所以现在您可以测试选择器在部署中的工作方式,如下所示
首先创建一个带有标签的nginx吊舱,如下所示
$ kubectl run nginx-1 --image=nginx --restart=Never --labels=run=nginx
$ kubectl get pods -o wide --show-labels
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
pod/nginx-1 1/1 Running 0 11m 192.168.58.198 k8s-node02 <none> <none> run=nginx
因此,现在我们将有4个吊舱的部署和一个名为nginx-1的吊舱正在运行
因此,现在如果我们编辑第一个POD以包含相同的POD模板哈希,您将看到副本集将立即缩小POD的数量,以匹配副本集的数量4
我们编辑nginx-1pod并添加pod散列模板
因此,您将看到部署已经移除了自己的一个pod,以将replicaset编号正确地保持在4
希望这个例子能帮助您理解标签和选择器是如何工作的,以及它们的作用域
$ kubectl edit pod nginx-1
pod/nginx-1 edited
$ kubectl get all -o wide --show-labels
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
pod/nginx-1 1/1 Running 0 21m 192.168.58.198 k8s-node02 <none> <none> pod-template-hash=6db489d4b7,run=nginx
pod/nginx-6db489d4b7-kx6xr 1/1 Running 0 9m31s 192.168.85.200 k8s-node01 <none> <none> pod-template-hash=6db489d4b7,run=nginx
pod/nginx-6db489d4b7-s47n7 1/1 Running 0 9m31s 192.168.85.199 k8s-node01 <none> <none> pod-template-hash=6db489d4b7,run=nginx
pod/nginx-6db489d4b7-vv2t4 0/1 Terminating 0 9m31s 192.168.58.204 k8s-node02 <none> <none> pod-template-hash=6db489d4b7,run=nginx
pod/nginx-6db489d4b7-xmqns 1/1 Running 0 9m31s 192.168.58.203 k8s-node02 <none> <none> pod-template-hash=6db489d4b7,run=nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR LABELS
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d3h <none> component=apiserver,provider=kubernetes
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR LABELS
deployment.apps/nginx 4/4 4 4 9m31s nginx nginx run=nginx run=nginx
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR LABELS
replicaset.apps/nginx-6db489d4b7 4 4 4 9m31s nginx nginx pod-template-hash=6db489d4b7,run=nginx pod-template-hash=6db489d4b7,run=nginx
$ kubectl get all -o wide --show-labels
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
pod/nginx-1 1/1 Running 0 27m 192.168.58.198 k8s-node02 <none> <none> pod-template-hash=6db489d4b7,run=nginx
pod/nginx-6db489d4b7-kx6xr 1/1 Running 0 16m 192.168.85.200 k8s-node01 <none> <none> pod-template-hash=6db489d4b7,run=nginx
pod/nginx-6db489d4b7-s47n7 1/1 Running 0 16m 192.168.85.199 k8s-node01 <none> <none> pod-template-hash=6db489d4b7,run=nginx
pod/nginx-6db489d4b7-xmqns 1/1 Running 0 16m 192.168.58.203 k8s-node02 <none> <none> pod-template-hash=6db489d4b7,run=nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR LABELS
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 7d3h <none> component=apiserver,provider=kubernetes
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR LABELS
deployment.apps/nginx 4/4 4 4 16m nginx nginx run=nginx run=nginx
NAME DESIRED CURRENT READY AGE CONTAINERS IMAGES SELECTOR LABELS
replicaset.apps/nginx-6db489d4b7 4 4 4 16m nginx nginx pod-template-hash=6db489d4b7,run=nginx pod-template-hash=6db489d4b7,run=nginx