如何在kubernetes中滚动更新部署?

时间:2017-04-10 09:13:26

标签: kubernetes

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app:  test
    spec:
      containers:
      - name:  test
        image: xxx:latest 
        ports:
        - containerPort: 80
        imagePullPolicy: Always
      imagePullSecrets:
      - name: aaaa

我使用“最新”标签。当我更新图像时,新图像仍然是“最新的”。当我“kubectl set image deployments / test test = xxx:latest”时,什么都没发生。我该怎么办?

2 个答案:

答案 0 :(得分:3)

template下的PodTemplateSpec发生变化时,总会触发RollingUpdate。

虽然未建议使用:latest标记,但在使用imagePullPolicy: Always和每次图像调整时更改的标签时,仍然可以使用kubectl patch deployment test -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"date\"‌​:\"$(date +%s)\"}}}}}" 标记。是这样的:

{{1}}

答案 1 :(得分:0)

滚动更新取决于docker图像标记。如果您在部署中使用latest标记,则需要使用新版本剪切新图像。

如果您始终使用latest标记,则部署资源无法确定图像是否已更改。至于k8s,你已经运行带有标签latest的图片,所以它没有任何事情要做。

出于这个原因,强烈建议不要使用latest进行部署。如果您正确地对Docker镜像进行版本化,那么您将会更容易。