前言
在云原生开发和分布式系统测试场景中,快速构建本地化集群环境是开发者的核心诉求。本文将以Windows平台为基础,结合微软Hyper-V虚拟化技术,通过Canonical出品的轻量级虚拟机管理工具Multipass,演示如何快速搭建具备静态IP、SSH互信、主机解析等企业级特性的本地集群环境。
一、环境准备与技术选型
1.1 工具矩阵
| 工具 | 版本 | 核心作用 |
|---|---|---|
| Windows | 10/11 Pro | 宿主操作系统 |
| Hyper-V | 5.0+ | 硬件虚拟化支持 |
| Multipass | 1.12+ | 轻量级虚拟机生命周期管理 |
| MobaXterm | 22.3+ | 终端连接与文件传输 |
如果没有安装Hyper-V,可以参考解决Windows没有Hyper-v
1.2 网络规划
我们采用分层网络架构设计:
-
虚拟交换机:创建独立交换机网络
k3s(CIDR:192.168.137.0/24) -
节点分配:
- Master节点:192.168.137.100
- Worker1节点:192.168.137.101
- Worker2节点:192.168.137.102
二、静态IP配置全流程
2.1 Hyper-V虚拟交换机配置
- 打开Hyper-V管理器,进入虚拟交换机管理器
2. 创建外部虚拟交换机:
* 命名:`k3s`
* 类型:内部
* 启用VLAN标识:默认关闭
3. 共享网络
- 验证,交换机IP192.168.137.1
2.2 Multipass实例初始化
# Master节点创建(资源配置:4核/8GB/40GB)
multipass launch --name master --cpus 4 --memory 8G --disk 40G \
--network name=k3s,mode=manual,mac="52:54:00:4b:ab:cd"
# Worker节点创建(资源配置:2核/2GB/10GB)
multipass launch --name worker1 --cpus 2 --memory 2G --disk 10G \
--network name=k3s,mode=manual,mac="52:54:00:4b:ab:cc"
multipass launch --name worker2 --cpus 2 --memory 2G --disk 10G \
--network name=k3s,mode=manual,mac="52:54:00:4b:ab:cb"
2.3 Netplan网络配置注入
# 主节点网络配置
multipass exec -n master -- sudo bash -c 'cat << EOF > /etc/netplan/10-custom.yaml
network:
version: 2
ethernets:
extra0:
dhcp4: no
match:
macaddress: "52:54:00:4b:ab:cd"
addresses: [192.168.137.100/24]
EOF'
# 应用网络配置
multipass exec -n master -- sudo netplan --debug apply
multipass exec -n worker1 -- sudo bash -c 'cat << EOF > /etc/netplan/10-custom.yaml
network:
version: 2
ethernets:
extra0:
dhcp4: no
match:
macaddress: "52:54:00:4b:ab:cc"
addresses: [192.168.137.101/24]
EOF'
multipass exec -n worker1 -- sudo netplan --debug apply
multipass info worker1
multipass exec -n worker2 -- sudo bash -c 'cat << EOF > /etc/netplan/10-custom.yaml
network:
version: 2
ethernets:
extra0:
dhcp4: no
match:
macaddress: "52:54:00:4b:ab:cb"
addresses: [192.168.137.102/24]
EOF'
multipass exec -n worker2 -- sudo netplan --debug apply
multipass info worker2
三、集群环境标准化
3.1 配置密码,SSH登录
sudo vim /etc/ssh/sshd_config
KbdInteractiveAuthentication yes # 终端连接必须
下面是带密码登录,但我们之后也可配置免密登录
PasswordAuthentication yes
PubkeyAuthentication yes
sudo systemctl restart ssh
3.2 集群主机解析
bash
# 批量注入hosts解析记录
for node in master worker1 worker2; do
multipass exec $node -- sudo bash -c 'echo -e "192.168.137.100 master\n192.168.137.101 worker1\n192.168.137.102 worker2" >> /etc/hosts'
done
3.3 SSH互信配置
bash
# 生成RSA密钥对
multipass exec master -- ssh-keygen -t rsa -N "" -f ~/.ssh/id_rsa
# 批量部署公钥
multipass exec master -- ssh-copy-id master
multipass exec master -- ssh-copy-id worker1
multipass exec master -- ssh-copy-id worker2
四、集群验证与管理优化
4.1 连通性测试
bash
# 跨节点网络延迟测试
multipass exec master -- ping -c 4 worker1
# SSH互信验证
multipass exec master -- ssh worker1 hostname
结语
通过本方案实现轻量级本地集群搭建,可作为Kubernetes、Hadoop等分布式系统的理想测试平台。