Deployment 如何在kubernetes中部署新的应用程序版本
在这一问题中: 询问者提到他编辑了部署以将版本更改为v2。假设容器v2已经存在,那么新版本的自动部署工作流程是什么?然后如何在不手动编辑部署配置或签入新版本的yaml的情况下部署它Deployment 如何在kubernetes中部署新的应用程序版本,deployment,kubernetes,Deployment,Kubernetes,在这一问题中: 询问者提到他编辑了部署以将版本更改为v2。假设容器v2已经存在,那么新版本的自动部署工作流程是什么?然后如何在不手动编辑部署配置或签入新版本的yaml的情况下部署它 如果您更改基础容器(如v1->另一个版本,也称为v1),Kubernetes会部署新的还是旧的?假设v1已经运行,并且您尝试使用相同的环境变量值再次部署v1。,那么k8s将看不到当前部署资源和更新部署资源之间的任何差异。 如果没有diff,k8s调度程序会假定已达到所需状态,并且不会调度任何新POD,即使设置了ima
如果您更改基础容器(如v1->另一个版本,也称为v1),Kubernetes会部署新的还是旧的?假设
v1
已经运行,并且您尝试使用相同的环境变量值再次部署v1
。,那么k8s将看不到当前部署资源和更新部署资源之间的任何差异。
如果没有diff,k8s调度程序会假定已达到所需状态,并且不会调度任何新POD,即使设置了imagePullPolicy:Always
。原因是imagePullPolicy
只对新创建的POD产生影响。因此,如果正在计划一个新的pod,那么k8s将始终再次拉取图像。尽管如此,如果您的部署没有任何差异,那么一开始就不会安排新的pod
对于我的部署,我总是设置一个虚拟环境变量,如部署时间戳deploy\u TS
,例如:
containers:
- name: my-app
image: my-app:{{ .Values.app.version }} ## value dynamically set by my deployment pipeline
env:
- name: DEPLOY_TS
value: "{{ .Values.deploy_ts }}" ## value dynamically set by my deployment pipeline
DEPLOY\u TS
的值始终设置为当前时间戳-因此它始终是不同的值。这样,k8s将在每次部署时看到差异,并计划一个新的pod-即使重新部署相同的版本
(我目前正在运行k8s 1.7)如果您不想:
- 签入新的YAML版本
- 手动更新配置文件
- 通过修补/放置新映像作为资源修改,对有问题的部署进行REST调用。i、 e.
PUT/api/extensions/v1beta1/namespaces/{namespace}/deployments-d{…使用v2进行部署}
kubectl设置映像部署/:
:v2
RESTART=
,这样我们就可以再次重新部署相同的版本(即:v1
)。