即时更改 pod 的标签
Changing pod's labels on the fly
我想知道是否可以即时更改 pods 的标签,以便服务根据新标签将请求路由到那些 pods。
例如,我有两个服务 A 和 B。然后我有 10 个 pods,其中 5 个标签类型 = A(匹配服务 A),另外 5 个标签类型 = B(匹配服务 B ).在某些时候,我想更改 pods 上的标签,以实现 2 的配置,标签类型 = A,8 的配置,标签类型 = B。
我想知道我是否可以只更改标签,服务将相应更新,而无需停止并启动具有不同标签的新 pods。
您可以使用 kubectl label
命令更改个人 pods 上的标签,记录在 here。
更改 运行 pod 的标签不应导致其重新启动,服务会自动检测并处理标签更改。
所以换句话说,是的,你可以:)
步骤如下:
- 创建两个部署,每个部署都有一个标签,并提及您希望在其中包含的 pods 个部署。
Deploytask1.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: task1deploy
spec:
replicas: 5
template:
metadata:
labels:
app: task1deploy
spec:
containers:
- name: nodetask1
Deploy2task1.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: task1deploy2
spec:
replicas: 5
template:
metadata:
labels:
app: task1deploy2
spec:
containers:
- name: node2task1
image: nginx
ports:
- containerPort: 80
2.Create 两个服务:
kubectl expose deployment task1deploy --namespace=shifali --type=LoadBalancer --name=my-service
kubectl expose deployment task1deploy2 --namespace=shifali --type=LoadBalancer --name=my-service2
3.When 您描述了这些服务,您会发现每个服务有 5 个端点(即 pods):
kubectl describe service my-service --namespace=shifali
姓名:task1deploy
端点:10.32.0.12:80,10.32.0.7:80,10.32.0.8:80 + 3 个...
service2 也类似
6.Now 删除 pod new11 的标签并添加标签“app=task1deploy2”
kubectl label pods new11-68dfd7d4c8-64xhq --namespace=shifali app-
kubectl label pods new11-68dfd7d4c8-64xhq "app=task1deploy2" --namespace=Shifali
现在服务将显示目标端口数量的变化(my_service=5 和 my_service2=7)
kubectl describe service my-service --namespace=Shifali
端点:10.32.0.7:80,10.32.0.8:80,10.32.1.7:80 + 2 更多..
kubectl describe service my-service2 --namespace=Shifali
名称:我的服务2
端点:10.32.0.10:80,10.32.0.12:80,10.32.0.9:80 + 4 更多...
我想知道是否可以即时更改 pods 的标签,以便服务根据新标签将请求路由到那些 pods。
例如,我有两个服务 A 和 B。然后我有 10 个 pods,其中 5 个标签类型 = A(匹配服务 A),另外 5 个标签类型 = B(匹配服务 B ).在某些时候,我想更改 pods 上的标签,以实现 2 的配置,标签类型 = A,8 的配置,标签类型 = B。
我想知道我是否可以只更改标签,服务将相应更新,而无需停止并启动具有不同标签的新 pods。
您可以使用 kubectl label
命令更改个人 pods 上的标签,记录在 here。
更改 运行 pod 的标签不应导致其重新启动,服务会自动检测并处理标签更改。
所以换句话说,是的,你可以:)
步骤如下:
- 创建两个部署,每个部署都有一个标签,并提及您希望在其中包含的 pods 个部署。
Deploytask1.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: task1deploy
spec:
replicas: 5
template:
metadata:
labels:
app: task1deploy
spec:
containers:
- name: nodetask1
Deploy2task1.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: task1deploy2
spec:
replicas: 5
template:
metadata:
labels:
app: task1deploy2
spec:
containers:
- name: node2task1
image: nginx
ports:
- containerPort: 80
2.Create 两个服务:
kubectl expose deployment task1deploy --namespace=shifali --type=LoadBalancer --name=my-service
kubectl expose deployment task1deploy2 --namespace=shifali --type=LoadBalancer --name=my-service2
3.When 您描述了这些服务,您会发现每个服务有 5 个端点(即 pods):
kubectl describe service my-service --namespace=shifali
姓名:task1deploy
端点:10.32.0.12:80,10.32.0.7:80,10.32.0.8:80 + 3 个...
service2 也类似
6.Now 删除 pod new11 的标签并添加标签“app=task1deploy2”
kubectl label pods new11-68dfd7d4c8-64xhq --namespace=shifali app-
kubectl label pods new11-68dfd7d4c8-64xhq "app=task1deploy2" --namespace=Shifali
现在服务将显示目标端口数量的变化(my_service=5 和 my_service2=7)
kubectl describe service my-service --namespace=Shifali
端点:10.32.0.7:80,10.32.0.8:80,10.32.1.7:80 + 2 更多..
kubectl describe service my-service2 --namespace=Shifali
名称:我的服务2 端点:10.32.0.10:80,10.32.0.12:80,10.32.0.9:80 + 4 更多...