我经常需要搭建Kubernetes环境进行测试,由于使用的是ARM架构的MacBook,因此一直在寻找一种能够快速启动和销毁K8s环境的方法。下面分享我最近在使用的一套方案:Vagrant结合VMware Fusion。
一、安装VMware Fusion
- 打开博通官网:
https://www.broadcom.com/

- 注册账号登录之后进入 my downloads:
https://support.broadcom.com/group/ecx/downloads

点击跳转链接: https://support.broadcom.com/group/ecx/free-downloads
- 搜索 fusion 之后选择相应的版本下载


- 安装就是双击了,不赘述。
二、安装Vagrant
- 打开下载地址,选择 arm64 的安装包
https://releases.hashicorp.com/vagrant

- 安装 vagrant,双加下一步下一步就行,不赘述。


三、安装Vagrant VMware Utility
安装它的原因:vagrant默认不支持 vmware,支持的是 virtualbox,为了支持 vmware,需要Vagrant VMware Utility,它是系统级辅助服务程序,是插件与 VMware API 通信的「安全桥梁层」,默认监听 9922 端口。
- 下载对应的 arm64 架构版本
https://releases.hashicorp.com/vagrant-vmware-utility

- 安装,直接双击安装即可,不赘述。



- 验证
sudo netstat -an | grep 9922

四、安装VMware provider plugin
该插件的作用:Vagrant 的功能扩展插件,替代默认的 VirtualBox 驱动,让 Vagrant 能够创建、管理、控制 VMware 格式的虚拟机(VM)。是 Vagrant 与 VMware 交互的业务接口层。
- 命令行安装插件 VMware provider plugin
vagrant plugin install vagrant-vmware-desktop \
--plugin-clean-sources \
--plugin-source https://gems.ruby-china.com

- 验证
vagrant plugin list

五、下载ubuntu虚拟机模板 box
box可以理解为系统镜像,box浏览地址:https://portal.cloud.hashicorp.com/vagrant/discover
- 下载对应版本的 box 文件
https://portal.cloud.hashicorp.com/vagrant/discover/bento/ubuntu-24.04/versions/202510.26.0

- 添加,比如我这里的 box 文件是 ubuntu24.04.box
vagrant box add bento/ubuntu-24.04 ubuntu24.04.box
- 查看
vagrant box list

六、编写vagrant启动配置文件
这里主要有三个文件,由于内容比较多,这里就不放具体内容了,讲下里面的内容和功能。

settings.yml - 配置参数文件
功能:集中管理所有可配置参数
- 软件配置:镜像仓库地址、软件源等
- VMware配置:虚拟机存储位置、共享目录、克隆方式、GUI设置等
- 节点配置:主节点和工作节点的名称、CPU、内存等资源分配
- 网络配置:IP地址段、DNS服务器、Pod和Service网络等
Vagrantfile - 主配置文件
参考文档: https://www.vagrantup.com/docs/vagrantfile/
可以通过下面的命令来生成一个,然后去自定义:
vagrant init bento/ubuntu-24.0
功能:这是Vagrant的主配置文件,定义虚拟机集群的基础架构和配置
- 读取配置:从settings.yml加载所有配置参数
- 虚拟机定义:创建1个主节点(k8s-master)和2个工作节点(k8s-node1、k8s-node2)
- 网络配置:为每个虚拟机分配私有网络IP
- 资源分配:根据配置设置CPU、内存等硬件资源
- 调用初始化脚本:通过provision机制调用bootstrap.sh
bootstrap.sh - 自动化安装脚本
功能:完整的 Kubernetes 集群自动化部署脚本
- 系统配置:时区、密码、DNS、软件源等基础设置
- 容器运行时:安装Docker或containerd
- Kubernetes组件:安装kubeadm、kubelet、kubectl
- 集群初始化:主节点初始化集群,工作节点加入集群
- 网络插件:安装Calico或Cilium CNI
七、启动虚机集群
- 启动
cd vagrant-k8s
vagrant up
vagrant up
注意事项: 需要执行两遍 vagrant up, 网卡 vmnet2 会在第一次 up 时创建。


- 查看
vagrant status

- 连接
vagrant ssh <主机名>

-
其他常用管理命令
暂停/恢复:
# 暂停
vagrant suspend
# 恢复
vagrant resume


**关机/启动:**
```bash
# 关机
vagrant halt
# 启动
vagrant up
```

**重启:**
```bash
vagrant reload
```
如果不想用了直接destroy就行(注意:destroy会删除所有创建的虚机文件):
```bash
vagrant destroy -f
```
通过以上步骤,你就可以在ARM架构的Mac上,利用Vagrant和VMware Fusion快速搭建起一个用于测试的Kubernetes环境,并根据需要随时进行暂停、恢复或销毁,非常适合开发和测试场景。这种基于声明式配置和自动化脚本的搭建方式,也是现代云原生基础设施管理的典型实践。如果你在搭建过程中遇到问题,或者有更优的配置方案,欢迎在云栈社区的技术论坛与更多开发者交流讨论。
|