使用 multipass 搭建本地容器开发环境

背景

Multipass 是在本地环境管理 ubuntu 虚拟机的一个工具,简单易用轻量。

最近打算使用 Multipass 代替掉 Docker Desktop,原因有以下几点:

  • laf 的开发需要 kubernetes,Docker Desktop 内置的 kubernetes 和生产上还是有一些差异的,且只是单机
  • 使用 sealos 部署 kubernetes 必须在 linux 上才可以, Mac Docker Desktop 无法满足需求
  • multipass 简单轻便

安装 Multipass

@see https://multipass.run/docs/installing-on-macos

Docker: 启动一个有 docker 环境的虚拟机

1
2
3
4
5
6
7
8
9
10
11
12
# 创建并启动一个虚拟机,名为 primary
multipass launch -n primary docker

# 连接虚拟机(默认使用 ubuntu 用户)
multipass shell primary

# 使用 root 用户连接虚拟机
multipass exec primary -- sudo -i

# [可选] 安装 docker compose
apt-get install docker-compose-plugin
docker compose version

@see https://multipass.run/docs/docker-tutorial

Kubernetes: 使用 sealos 启动一个单节点 kubernetes 集群

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 创建 Master 节点 1,命名为 k1 (2cpu, 4gb内存, 20gb硬盘)
multipass launch -n k1 -c 2 -d 20G -m 4G

# 查看虚拟机运行状态
multipass list

# 连接使用 root 连接 master 节点
multipass exec k1 -- sudo -i

# 安装 sealos
# @see https://www.sealos.io/docs/getting-started/installation
echo "deb [trusted=yes] https://apt.fury.io/labring/ /" | sudo tee /etc/apt/sources.list.d/labring.list
sudo apt update
sudo apt install sealos

# 创建集群
sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1 --single

# 查看集群状态
kubectl get nodes

Kubernetes: 使用 sealos 启动一个多节点 kubernetes 集群

创建 Master 节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# 创建 Master 节点 1,命名为 k1 (2cpu, 4gb内存, 20gb硬盘)
multipass launch -n k1 -c 2 -d 20G -m 4G

# 查看虚拟机运行状态
multipass list

# 连接使用 root 连接 master 节点
multipass exec k1 -- sudo -i

# 在主节点(Master)生成 ssh 密钥对
ssh-keygen -t rsa -b 4096

# 需自行将 ssh 公钥添加到 master 节点: `~/.ssh/authorized_keys`

# 安装 sealos
# @see https://www.sealos.io/docs/getting-started/installation
echo "deb [trusted=yes] https://apt.fury.io/labring/ /" | sudo tee /etc/apt/sources.list.d/labring.list
sudo apt update
sudo apt install sealos


# 启动 kuernetes 集群,将 IP 改为刚创建节点的 IP
sealos run kubernetes:v1.24.0 calico:v3.22.1 --masters 192.168.64.12

# 查看集群节点状态
kubectl get nodes -o wide

@see https://github.com/labring/sealos/releases

为集群添加 Worker 节点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 创建一个节点虚拟机: k2
multipass launch -n k2 -c 2 -m 2g -d 10g

# 查看虚拟机运行状态
multipass list

# 连接使用 root 连接 worker 节点
multipass exec k2 -- sudo -i

# 需自行将 Master 节点的 ssh 公钥添加到 Worker 节点: `~/.ssh/authorized_keys`

# 退出 worker 节点
exit

# 连接使用 root 连接 master 节点
multipass exec k1 -- sudo -i

# 使用 sealos 添加 worker 节点,将 IP 修改为刚创建 worker 节点的 IP
sealos add --nodes 192.168.64.13