通过新的Docker映像升级JupyterHub掌舵版本,但正在使用旧映像吗?

时间:2019-03-08 21:24:08

标签: amazon-web-services docker jupyter-notebook kubernetes-helm

我有一个JupyterHub笔记本服务器,并且正在aws(EKS)上的托管kubernetes上运行。我的docker存储库是AWS ECR。

我正在迭代开发用于测试的docker映像。

我的工作流程是:

  1. 更新docker映像
  2. 在头盔发布配置config.yaml中更新docker image标签
  3. 升级头盔版本helm upgrade jhub jupyterhub/jupyterhub --version=0.7.0 --values config.yaml
  4. 测试对docker映像的更改

但是,旧的docker映像仍在使用吗?

如何更改开发工作流程,以便可以简单地更新docker映像并进行测试?

其他信息:

编辑:

已采取的其他故障排除步骤:

试图删除头盔版本并重新安装:

helm delete --purge jhub && helm upgrade --install jhub jupyterhub/jupyterhub --namespace jhub --version=0.7.0 --values config.yaml

尝试删除helm版本的AND名称空间,然后重新安装:

helm delete --purge jhub && kubectl delete namespace jhub && helm upgrade --install jhub jupyterhub/jupyterhub --namespace jhub --version=0.7.0 --values config.yaml

还尝试将imagePullPolicy的值覆盖为Always(根据莫斯塔法在其回答中的建议)

hub:
  imagePullPolicy: Always

这些都不起作用。旧的原始docker映像仍在使用。

奇怪的是,当我检查当前在kubernetes集群中使用的docker映像时,我看到了新的docker映像。但这不是正在使用的那个。

kubectl get pods --all-namespaces -o jsonpath="{.items[*].spec.containers[*].image}"

# output:
...
<AWS_ACCOUNT>.dkr.ecr.eu-west-1.amazonaws.com/<REPO>:NEW_TAG  # <-- not actually being used in jupyerhub
...

编辑(2): 我检查了pod的描述,发现奇怪的事件消息: 我查看了一个广告连播说明,并看到一条奇怪的事件消息

  Normal  Pulled                  32m   kubelet,  <<REDACTED>>  Container image "<AWS_ACCOUNT>.dkr.ecr.eu-west-1.amazonaws.com/<REPO>:NEW_TAG" already present on machine

上面提到的图像是我刚刚上传到图像仓库的新图像。该映像不可能已经下载到群集上。不知何故,原始图像和新图像的哈希值都相同,或者这是一个错误?

1 个答案:

答案 0 :(得分:1)

由于将imagePullPolicy设置为IfNotPresent,因此docker镜像可能不会更新,这意味着根据kubernetes documentation,以下内容:

  

默认的拉取策略是IfNotPresent,如果该图像已经存在,它将导致Kubelet跳过拉取图像。如果您想始终强制拉动,则可以执行以下操作之一:

     
      
  • 将容器的imagePullPolicy设置为“始终”。
  •   
  • 省略imagePullPolicy并使用:latest作为要使用的图像的标签。
  •   
  • 省略imagePullPolicy和要使用的图像标签。
  •   
  • 启用AlwaysPullImages准入控制器
  •   

在您的情况下,可以在部署新图表时在imagePullPolicy内将Awlays的值设置为config.yaml,以使其提取代码的最新docker镜像

# Add this in your config.yaml (check if hub: is already exist to avoid overriding it)
hub:
  imagePullPolicy: Always