Kubectl apply不会更新广告连播或部署

时间:2017-11-03 17:28:56

标签: kubernetes google-kubernetes-engine kubectl

我在使用CI更新我的kubernetes群集时,只要对图像进行更新。每当图像被推送并具有最新标记时,kubectl就会应用现有部署,但不会更新任何内容。

这就是运行 $ kubectl apply --record --filename /tmp/deployment.yaml

我的目标是运行apply以执行滚动部署。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: api
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: api
    spec:
      containers:
      - name: api
        image: us.gcr.io/joule-eed41/api:latest
        imagePullPolicy: Always
        ports:
          - containerPort: 1337
        args:
          - /bin/sh
          - -c
          - echo running api;npm start
        env:        
        - name: NAMESPACE
          valueFrom:
            configMapKeyRef:
              name: config
              key: NAMESPACE

2 个答案:

答案 0 :(得分:1)

正如其他人所说,有一个特定的标签。 使用以下命令

设置新图像

kubectl set image deployment / deployment_name deployment_name = image_name:image_tag

在你的情况下,它将是

kubectl set image deployment / api api = us.gcr.io / joule-eed41 / api:0.1

答案 1 :(得分:0)

@ ksholla20提到在许多(大多数?)情况下,使用kubectl set image是一个不错的选择。

但是,如果您不能更改图片标签,请考虑使用:

1)kubectl rollout restart deployment/<name>reference)。

2)kubectl patch deployment <name> -p "{\"spec\":{\"template\":{\"metadata\":{\"labels\":{\"version\":\"$CURRENT_BUILD_HASH_OR_DATE\"}}}}}}"reference

(*)注意,patch命令允许您更改部署(或选择的任何其他对象)中的特定属性,例如标签选择器 pod标签< / em>或其他属性,例如示例中的NAMESPACE环境变量的值。