我的 docker-desktop 设置目前遇到问题。
我正在使用 docker-desktop 和 docker-compose 以及集成的 Kubernetes 集群进行调试。通常,我的工作流程包括在 docker-compose 中通过应用程序运行,并使用集成的 Visual Studio 2019 开发工作流程。这也意味着我正在使用带有卷挂载等的 VS 集成 docker 工作流。
除此之外,我偶尔会在 Release 中构建所有镜像并将它们上传到 ACR,将它们拉入我的 Kubernetes 集群。
最近我还想查看用于本地开发的工具“skaffold”,但是每当我用它构建所有镜像时,我的 Kubernetes 集群突然运行到DiskPressure
. 一旦我运行docker system prune
并清理了所有图像/容器,它就会再次运行。
我专门检查了一遍,我分配给 docker 的磁盘空间甚至还没有接近满。此外,我的 kubelet 上设置的驱逐阈值也没有达到。
但是,我注意到我的 kubernetes 集群引发了以下错误,这可能也会导致 DiskPressure 错误:
wanted to free 5694854758 bytes, but freed 5617398719 bytes space with errors in image deletion: [rpc error: code = Unknown desc = Error response from daemon: conflict: unable to remove repository reference "frontend:dev" (must force) - container f638acaa6d9c is using its referenced image 8688fb11a32a...
基本上,我在本地 docker-compose 中运行的每个容器都会发生此错误。每次我尝试运行时都会发生skaffold dev
。
我真的很想知道发生了什么事。
编辑:
我能够仔细看看发生了什么。开始部署时skaffold dev
,Kubernetes 集群会遇到 DiskPressure。我现在能够检查有关“节点临时存储不足的警告消息中引用的容器和图像 ID。在我的示例中,假设我正在frontendservice:dev
本地 docker-compose 调试会话中运行,并且容器正在运行好的。现在,我正在构建与 相同代码的单独版本myAzureCr.cr.io/frontendservice:testing
,将其上传到我的 ACR,并尝试在我的集群中使用它。
我刚刚检查的警告现在想要使用 删除和清理容器frontendservice:dev
,这与集群中发生的事情完全无关。这是怎么回事?尽管如此,已使用的磁盘空间甚至与我分配给 docker 使用的磁盘空间相差甚远。