22

我一直在使用 minikube 在本地测试 Kubernetes。在 minikube 中,我们可以通过eval $(minikube docker-env)命令使用本地 docker 镜像。

我开始探索 microk8s。在我运行 Ubuntu 18 的机器上使用 snap 安装了 microk8s。

除了创建本地 docker 注册表之外,还有什么方法可以将本地 docker 镜像与 microk8s 一起使用,就像我们使用 minikube 进行测试和开发一样?

microk8s.docker命令也不起作用,它显示:

找不到命令“microk8s.docker”,但可以安装:

快速安装 microk8s

但它已经安装了。

4

2 回答 2

12

microk8s 有一个私有注册表,可用于此目的。

您必须先启用注册表,使用以下命令

$ microk8s.enable 注册表

注册表将流量映射到端口 32000,因此您必须将 docker 映像推送到注册表。如果图像已经存在于本地,您可以使用 docker tag 命令。

$docker tag <imageName:version> localhost:32000/<imageName:version>

$docker push localhost:32000/<imageName:version>.

使用https://microk8s.io/docs/registry-built-in了解更多信息。

于 2020-02-22T07:41:19.020 回答
3

不幸的是,您没有提供 microk8 版本和您的步骤。

我以为您使用sudo snap install microk8s --classic命令进行安装。目前它将下载v1.14.0。
您可以使用检查您的版本snap info microk8s

1.14.0 版本引入了microk8s.daemon-docker 的更改并将其更改为microk8s.daemon-containerd。由于此更改,microk8s 无法执行 docker 命令。Microk8s 包含1.11 和 1.13 版本之间的 daemon- docker。

如果你习惯使用 docker install microk8s v1.13 bysudo snap install microk8s --classic --channel=1.13/stable

供将来使用:

1) 安装 microk8s - sudo snap install microk8s --classic --channel=1.13/stable(如果还想使用 docker)

2)确保 microk8s 已启动 - microk8s.start(您可以通过 停止它microk8s.stop

3)检查哪些服务正在运行 -microk8s.inspect

4)microk8s中的命令前缀不同,即代替-kubectl get all --all-namespaces你需要使用microk8s.kubectl get all --all-namespaces(稍后你可以使用别名来chage它)

5) 您可以使用 Dockerfile 创建镜像microk8s.docker build .(不要忘记在命令末尾添加 Dockerfile 和“.”)。

您可以随时查看Microk8s 文档

于 2019-04-02T15:14:38.743 回答