6

我正在 Linux 工作站上使用 podman 和 minikube 探索和学习容器和 kubernetes。我使用 podman 在工作站上构建映像,并希望将这些映像部署在 minikube 中,也使用 kvm2 虚拟机驱动程序在工作站上运行。我还使用 CRI-O 容器运行时启动 minikube。

在这种情况下,将这些图像从工作站部署到 minikube 的有效工作流程是什么?Docker 未在 minikube VM 上运行,因此无法按照 minikube 文档中的说明重用 Docker 守护进程。在使用 kvm2 时,此时与 minikube 共享主机文件系统似乎也不可行。

运行工作站和 minikube vm 都可见的本地注册表是最佳选择吗?如何在Minikube中使用本地 docker 镜像?并且(Kubernetes + Minikube) 无法从本地注册表获取 docker 映像似乎为配置本地注册表提供了很好的解决方案。

skopeo 会是一个解决方案吗?

编辑:这是一篇很好的文章,描述了如何使用 podman 设置注册表:https ://computingforgeeks.com/create-docker-container-registry-with-podman-letsencrypt/

谢谢你

布拉德

4

1 回答 1

4

Minikube 文档为https://minikube.sigs.k8s.io/docs/tasks/docker_registry/上的潜在工作流提供了基础。为了使用 podman 代替 docker 我做了以下

按照指示,使用--insecure-registry标志启动 minikube。我专门用

minikube start --network-plugin=cni --enable-default-cni --bootstrapper=kubeadm --container-runtime=cri-o --cpus 4 --memory 4g --insecure-registry "192.168.39.0/24"

启用 minikube 注册表插件。

minikube addons enable registry

通过将注册表添加到/etc/containers/registries.conf. 这部分现在看起来像

[registries.insecure]
registries = ['192.168.39.175:5000']

其中 192.168.39.175 是 minikube ip。此 ip 可能会在 minikube 重新启动后发生变化。

按照 https://minikube.sigs.k8s.io/docs/tasks/docker_registry/ 中的构建、推送和运行命令,podman 代替 docker。这假设 test-img 容器文件存在。

建造:podman build --tag $(minikube ip):5000/test-img .

推:podman push $(minikube ip):5000/test-img

跑:kubectl run test-img --image=$(minikube ip):5000/test-img

这可行,但有一个严重的问题:在使用 kvm2 时,目前还没有明显的方法来设置 minikube VM 的 IP 地址。IP 将始终位于 192.168.39.0/24 子网中,但这是唯一确定的。每次启动 minikube 时,注册表的 IP 地址都会发生变化,这对 podman 和整个工作流程都有重大影响。

更多的是另一个解决方案。

于 2020-01-19T22:21:18.830 回答