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