当前位置:   article > 正文

【云原生】M1 Mac配置docker kubernetes(k8s) colima完全指南(不使用docker desktop)_colima docker

colima docker

tags: Tips Config Docker Kubernetes

写在前面

最近一直在研究云原生等的一些内容, 当然首当其冲的就是docker,kubernetes(下称k8s)等的配置了, 本文将以macOS12.3.1为主要环境, 架构为arm64(Apple silicon m1), 详细介绍如何在Mac上配置轻量级的云原生多节点平台k8s, 官方推荐的工具是minikube, 但是就是这个软件, 在各种搜索debug与配置了一天我才终于完美安装了. 一定要详细记录一下这个历史性的时刻!

距离苹果发布m1芯片其实已经过去了快两年, 但是很多软件的适配其实还是不太好的, 例如一些虚拟化程序, virtualbox, VMware, hyperkit, 这些软件都不能作为minikube的驱动, 只是因为并没有适配arm架构. 所以这里我采用了qemu这款开源的x86模拟程序.

插句题外话, 在使用这类由活跃的开源社区和团队打造的程序时候, 如果想得到最新的版本更新日志与问题等, 第一手的资料还是GitHub issue, 其他的文章和博客大多出自这里, 当然主要还是通过Google的方式进入的, 其次才是stack overflow, 当然, 我最近又发现了几个不错的技术论坛和高质量的技术博客, 就是Hacker News (ycombinator.com)Medium, 可供大家参考.

docker without docker desktop

配置k8s主要是通过minikube完成的, 而minikube需要在docker中运行, 相当于是docker的一个组件, 之前在我的电脑上已经配置过docker, 是通过图形界面的方式, 即docker desktop. 这款软件虽然方便, 但是用起来是很占用系统资源的, 这里我就一直想去寻找一种without docker desktop的方式, 安装docker. 事实就是, 功夫不负有心人, 已经有很多前辈写了一些很有价值的文章, 这里我参考了1,2.

首先当然是需要采用brew安装两个docker的组件.

brew install docker
brew install docker-compose
  • 1
  • 2

这时候我们发现不用图形界面的docker安装并没有启动服务, 所以需要一个额外的虚拟机程序, 这个我们下面再说.

minikube的完全配置

安装minikube

这里当然是一条命令完成的, 没有什么困难的.

brew install minikube
  • 1

如果通过1中给出的方法, 即通过podman代替docker进行minikube的配置, 则需要手动编译minikube并附带其他配置, 这里就不做测试了.

配置colima虚拟机支持(daemon)

这里的配置就有的说了, 之前提到, docker并没有启动服务, 这是因为docker desktop安装时候自带了虚拟机(这在Linux上是直接集成的), 所以可以直接部署(所以同样地, 资源占用才比较大), 但是当我们直接通过brew安装了docker,实际上安装的只有docker的cli(command-line interface), 即命令行界面, 真正能让docker跑起来的话, 还需要一个虚拟机支持, 这就需要一个叫做colima的软件, 具体的介绍可以看看这里3, 在此之前我也研究过诸如podman等的容器, 但是均以失败告终4,5. 都是倒在了minikube start上…

配置的colima环境默认是一个叫做alpine的Linux发行版, 下面是具体的版本信息.

❯ colima start --cpu 2 --memory 2 --disk 10
WARN[0000] already running, ignoring

❯ colima list
PROFILE    STATUS     ARCH       CPUS    MEMORY    DISK     RUNTIME    ADDRESS
default    Running    aarch64    2       2GiB      10GiB    docker

❯ colima ssh
colima:~$ uname -a
Linux colima 5.10.109-0-virt #1-Alpine SMP Mon, 28 Mar 2022 11:20:52 +0000 aarch64 Linux
colima:~$ cat /proc/version
Linux version 5.10.109-0-virt (buildozer@build-3-14-aarch64) (gcc (Alpine 10.3.1_git20210424) 10.3.1 20210424, GNU ld (GNU Binutils) 2.35.2) #1-Alpine SMP Mon, 28 Mar 2022 11:20:52 +0000
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

从配置过程中即可看到, colima就是通过docker进行

配置docker运行环境(runtime)

有了虚拟机支持, docker就能不通过docker desktop来运行了, 下面是一个例子:

先打开配置好的colima虚拟机环境

docker run --rm -d --name nginx -p 8080:80 nginx:latest
  • 1

配置minikube的kicbase容器

这也是最让我头疼但是却很好解决的一个问题, 之前在minikube start时候总是弹出stderr6, 主要是说网址gcr.io不可达, Unable to find image 'gcr.io/k8s-minikube/kicbase:v0.0.12-snapshot3@sha256:1d687ba53e19dbe5fafe4cc18aa07f269ecc4b7b622f2251b5bf569ddb474e9b' locally, 后来我想到是不是需要更换镜像才能获取(即使我已经挂了代理), 但是并不行, 这里我看了很多CSDN的换源的文章,但是试过了并不行, 自己上网搜索发现, kicbse这个容器有两个版本, 在minikube官方的主页7上, 这里显示只支持到了0.0.17. 另外, 一篇CSDN文章8中提到的是只支持x86的版本(已经两年没有更新了anjone/kicbase Tags | Docker Hub)…

默认开启minikube时候需要的版本是0.0.32, 这就是问题所在了, 通过docker官方的容器列表9, 我才最终完成了这个包的下载… 命令如下:

docker pull kicbase/stable:v0.0.32
  • 1

注意, 这里如果速度比较慢的话, 可以切换镜像, 通过修改~/.docker/daemon.json文件, 修改键registry-mirrors的值为如下网址:

{"experimental":false,"builder":{"gc":{"enabled":true,"defaultKeepStorage":"20GB"}},"features":{"buildkit":true},"registry-mirrors":["https://registry.docker-cn.com"]}
  • 1

最后的配置

最后还有一个问题, 这也在GitHub的issue界面中有所提及10, 就是一个报错, 大致内容如下:

stderr:
W0706 14:21:42.889959    9689 initconfiguration.go:120] Usage of CRI endpoints without URL scheme is deprecated and can cause kubelet errors in the future. Automatically prepending scheme "unix" to the "criSocket" with value "/var/run/cri-dockerd.sock". Please update your configuration!
	[WARNING SystemVerification]: failed to parse kernel config: unable to load kernel module: "configs", output: "modprobe: FATAL: Module configs not found in directory /lib/modules/5.10.109-0-virt\n", err: exit status 1
	[WARNING Service-Kubelet]: kubelet service is not enabled, please run 'systemctl enable kubelet.service'
error execution phase wait-control-plane: couldn't initialize a Kubernetes cluster
To see the stack trace of this error execute with --v=5 or higher

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/567553
推荐阅读
相关标签