赞
踩
最近一直在研究云原生等的一些内容, 当然首当其冲的就是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, 可供大家参考.
配置k8s
主要是通过minikube
完成的, 而minikube
需要在docker
中运行, 相当于是docker
的一个组件, 之前在我的电脑上已经配置过docker, 是通过图形界面的方式, 即docker desktop
. 这款软件虽然方便, 但是用起来是很占用系统资源的, 这里我就一直想去寻找一种without docker desktop
的方式, 安装docker. 事实就是, 功夫不负有心人, 已经有很多前辈写了一些很有价值的文章, 这里我参考了1,2.
首先当然是需要采用brew
安装两个docker
的组件.
brew install docker
brew install docker-compose
这时候我们发现不用图形界面的docker
安装并没有启动服务, 所以需要一个额外的虚拟机程序, 这个我们下面再说.
这里当然是一条命令完成的, 没有什么困难的.
brew install minikube
如果通过1中给出的方法, 即通过podman
代替docker进行minikube的配置, 则需要手动编译minikube并附带其他配置, 这里就不做测试了.
这里的配置就有的说了, 之前提到, 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
从配置过程中即可看到, colima就是通过docker进行
有了虚拟机支持, docker就能不通过docker desktop
来运行了, 下面是一个例子:
先打开配置好的colima
虚拟机环境
docker run --rm -d --name nginx -p 8080:80 nginx:latest
这也是最让我头疼但是却很好解决的一个问题, 之前在minikube start
时候总是弹出stderr
6, 主要是说网址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
注意, 这里如果速度比较慢的话, 可以切换镜像, 通过修改~/.docker/daemon.json
文件, 修改键registry-mirrors
的值为如下网址:
{"experimental":false,"builder":{"gc":{"enabled":true,"defaultKeepStorage":"20GB"}},"features":{"buildkit":true},"registry-mirrors":["https://registry.docker-cn.com"]}
最后还有一个问题, 这也在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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。