如何从 minikube 中删除现有下载的 docker 镜像

vit*_*_li 3 docker kubernetes minikube devspace

我正在使用DevSpace 工具minikube将多个服务部署到我的本地集群 ( ) 。一旦有人对其中一项服务进行更改并将图像推送到我们的私人存储库,我就需要这些更改在我的本地可用。我现在要做的就是完全删除集群并启动一个新集群。在这种情况下,所有具有相同标签的图像都会更新为最新版本,而不是缓存的版本。minikube

但我相信有一些更优雅的方法来克服这个问题。因此,在重新部署服务之前,我需要以某种方式从本地集群中清理/删除/删除过时的映像。

有人可以指出它们的存储位置,我如何查看和删除它们?谢谢。

Luk*_*ele 7

这里是 DevSpace 维护者。你需要的是两件事:

  1. 每次运行时都会强制重新创建 pod 的东西devspace dev。因此,如果您使用 Deployment 或 StatefulSet,您可以添加标签之类的内容,例如包含 DevSpace 内置时间戳变量作为 pod 模板的值。
  2. imagePullPolicy: AlwaysPod 规范中,确保 Kubernetes 始终为每个新创建的 Pod 提取最新的映像。否则 Kubernetes 将使用已经缓存的图像。

组合起来,文件中的内容可能如下所示devspace.yaml(如果您使用的是组件图部署):

deployments:
- name: my-component
  helm:
    componentChart: true
    values:
      labels:
        timestamp: $!{DEVSPACE_TIMESTAMP}  # here is 1.
      containers:
      - image: "YOUR_IMAGE:latest"         # specify any tag here that you want
        imagePullPolicy: Always            # here is 2.
Run Code Online (Sandbox Code Playgroud)

$!{DEVSPACE_TIMESTAMP}=$!{}强制将此 var 的值作为字符串放置(因为 k8s 只允许标签使用字符串值),并且DEVSPACE_TIMESTAMP是 DevSpace 中预定义变量的名称。更多详细信息请参见:https://devspace.sh/cli/docs/configuration/variables/basics#predefined-variables