M1芯片下运行Kubernetes
买了一个新Mac, 是M1芯片。本来想打算安装一下Minikube用来练习一下。(Minikube是一个本地安装的K8S集群,可以低成本学习)理想的步骤是按部就班:
1. 安装 brew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. brew 安装 docker brew install docker
3. 安装 VirtualBox brew install virtualbox --cask
4. 安装 K8S 客户端 kubectl
5. 安装 minikube
没想到在第3步就卡住了。出现了错误
Error: Cask virtualbox depends on hardware architecture being one of [{:type=>:intel, :bits=>64}], but you are running {:type=>:arm, :bits=>64}.
原来是Mac M1 芯片架构不在virtualbox的支持范围之内。怎么办呢?搜索了一下, 看到一个比较好使用的本地K8S,是基于Docker的, 名字叫做kind (Kubernetes in Docker). 安装起来也是相当的简单, 只要装上Docker就可以运行。
1. 安装 brew
2. brew install kind
完成✅
可以自己敲一下kind命令。 kubectl可以直接连接上去操作
划一下重点:
进行K8S部署的时候需要多做一下步骤。我们知道正常的K8S可以直接从docker hub上去拉image, 或者你也可以配置一下私有registry. 不过在kind上运行的话, 你需要做两步。 打比方你需要运行MySQL镜像 bitnami/mysql:8.0.31-debian-11-r0。
1. 你需要先把image拉到本地机器 docker pull bitnami/mysql:8.0.31-debian-11-r0
2. 需要把镜像导入到 docker 容器里边(里边就是运行kind的) kind load docker-image bitnami/mysql:8.0.31-debian-11-r0 -n devopscluster
做完这两步, 你就可以在kind里吧使用这个MySQL镜像了
这样, 利用Docker容器化技术, 我们也可以在不同架构的芯片中构建K8S. 很庆幸, Docker已经成为很多厂商必须支持的中间件技术。