即时更改pod的标签

时间:2015-02-13 17:30:33

标签: kubernetes

我想知道是否可以动态更改pod的标签,以便服务根据新标签将请求路由到这些pod。

例如,我有两个服务A和B.然后我有10个pod,其中5个标签类型= A(匹配服务A),另外5个标签类型= B(匹配服务B)。在某些时候,我想更改pods上的标签,以获得标签类型= A的8和标签类型= B的8的配置。

我想知道我是否可以更改标签和服务将相应更新,而无需停止并启动具有不同标签的新pod。

2 个答案:

答案 0 :(得分:8)

您可以使用kubectl label命令更改各个广告连播的标签,记录为here

更改正在运行的pod的标签不应导致它重新启动,服务将自动检测并处理标签更改。

换句话说,是的,你可以:)

答案 1 :(得分:3)

步骤如下:

  1. 创建两个带有标签的部署,并提及您希望包含在其中的Pod的数量。

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。创建两个服务:

kubectl expose deployment task1deploy --namespace=shifali --type=LoadBalancer --name=my-service
kubectl expose deployment task1deploy2 --namespace=shifali --type=LoadBalancer --name=my-service2

3。描述这些服务时,您会发现每个服务有5个端点(即pod):

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。现在删除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

名称:my-service2 端点:10.32.0.10:80,10.32.0.12:80,10.32.0.9:80 +另外4个...