更新kubernetes部署将创建新的Pod

时间:2020-03-24 12:34:17

标签: kubernetes kubernetes-pod

我有一个运行良好的现有kubernetes部署。现在,我想用一些新的环境变量来编辑它,我将在pod中使用它。 编辑部署将删除并创建新的Pod,或者它将更新现有Pod。 我的要求是,每当我编辑/更新部署时,我都想创建一个新容器。

2 个答案:

答案 0 :(得分:1)

如果您更改/创建环境变量,Kubernetes始终会重新创建您的Pod。

让我们一起检查一下,创建一个没有任何环境变量的部署:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

让我们检查并记下这些pod名称,以便以后进行比较:

$ kubectl get pod 
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-56db997f77-9mpjx   1/1     Running   0          8s
nginx-deployment-56db997f77-mgdv9   1/1     Running   0          8s
nginx-deployment-56db997f77-zg96f   1/1     Running   0          8s

现在让我们编辑此部署,并包含一个使清单看起来像这样的env var:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        env:
          - name: STACK_GREETING
            value: "Hello from the MARS"
        ports:
        - containerPort: 80

完成版本后,让我们检查广告连播名称,看看它是否更改:

$ kubectl get pod 
nginx-deployment-5b4b68cb55-9ll7p   1/1     Running   0          25s
nginx-deployment-5b4b68cb55-ds9kb   1/1     Running   0          23s
nginx-deployment-5b4b68cb55-wlqgz   1/1     Running   0          21s

如我们所见,所有pod名称均已更改。让我们检查一下是否应用了我们的环境变量:

$ kubectl exec -ti nginx-deployment-5b4b68cb55-9ll7p -- sh -c  'echo $STACK_GREETING'
Hello from the MARS

如果您更改或什至删除var,也会发生相同的行为。需要删除并重新创建所有吊舱才能进行更改。

答案 1 :(得分:0)

如果您要创建一个新的Pod,则需要为此创建一个新的部署。根据设计,部署将管理属于它们的Pod的副本。