【问题标题】:How to use local docker images with microk8s?如何在 microk8s 中使用本地 docker 镜像?
【发布时间】:2019-08-13 07:15:26
【问题描述】:

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

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

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

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

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

快速安装 microk8s

但它已经安装了。

【问题讨论】:

  • 您可以使用here 描述的内置注册表或here 描述的本地镜像

标签: docker kubernetes minikube microk8s


【解决方案1】:

很遗憾,您没有提供 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 by sudo 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(后面你可以使用别名来修改它)

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

您可以随时查看Microk8s documentation

【讨论】:

【解决方案2】:

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 了解更多信息。

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 2021-11-04
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 2021-07-05
    • 2017-11-30
    相关资源
    最近更新 更多