基于Multipass与Hyper-V的轻量级本地集群搭建实战

257 阅读3分钟

前言

在云原生开发和分布式系统测试场景中,快速构建本地化集群环境是开发者的核心诉求。本文将以Windows平台为基础,结合微软Hyper-V虚拟化技术,通过Canonical出品的轻量级虚拟机管理工具Multipass,演示如何快速搭建具备静态IP、SSH互信、主机解析等企业级特性的本地集群环境。


一、环境准备与技术选型

1.1 工具矩阵

工具版本核心作用
Windows10/11 Pro宿主操作系统
Hyper-V5.0+硬件虚拟化支持
Multipass1.12+轻量级虚拟机生命周期管理
MobaXterm22.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虚拟交换机配置

  1. 打开Hyper-V管理器,进入虚拟交换机管理器

image.png 2. 创建外部虚拟交换机

*   命名:`k3s`
*   类型:内部
*   启用VLAN标识:默认关闭

3. 共享网络

image.png

  1. 验证,交换机IP192.168.137.1

image.png

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等分布式系统的理想测试平台。

延伸阅读
Multipass静态网络官方配置指南
Multipass hyper-v固定ip