更新 kubernetes 部署将创建新的 pod
Updating kubernetes deployment will create new pod
我有一个现有的 kubernetes 部署,运行 没问题。现在我想用一些我将在 pod 中使用的新环境变量来编辑它。
编辑部署将删除并创建新的 pod,或者将更新现有的 pod。
我的要求是我想在 edit/update 部署时创建一个新的 pod。
如果您想创建一个新的 pod,则需要为其创建一个新的部署。按照设计,部署正在管理属于它们的 pods 的副本。
Kubernetes 总是会重新创建您的 pods 以防您 change/create 环境变量。
让我们一起检查一下,创建一个没有任何环境变量的部署:
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
现在让我们编辑此部署并包含一个环境变量,使清单如下所示:
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
完成编辑后,让我们检查我们的 pod 名称,看看它是否发生了变化:
$ 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 甚至删除它,也会发生相同的行为。所有 pods 都需要删除并重新创建才能进行更改。
我有一个现有的 kubernetes 部署,运行 没问题。现在我想用一些我将在 pod 中使用的新环境变量来编辑它。 编辑部署将删除并创建新的 pod,或者将更新现有的 pod。 我的要求是我想在 edit/update 部署时创建一个新的 pod。
如果您想创建一个新的 pod,则需要为其创建一个新的部署。按照设计,部署正在管理属于它们的 pods 的副本。
Kubernetes 总是会重新创建您的 pods 以防您 change/create 环境变量。
让我们一起检查一下,创建一个没有任何环境变量的部署:
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
现在让我们编辑此部署并包含一个环境变量,使清单如下所示:
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
完成编辑后,让我们检查我们的 pod 名称,看看它是否发生了变化:
$ 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 甚至删除它,也会发生相同的行为。所有 pods 都需要删除并重新创建才能进行更改。