Saki's 研究记录

k3s(1) Install Multipass

字数统计: 1.2k阅读时长: 5 min
2022/11/29

简介

Multipass 是一个轻量虚拟机管理器,是由 Ubuntu 运营公司 Canonical 所推出的开源项目。运行环境支持 LinuxWindowsmacOS。在不同的操作系统上,使用的是不同的虚拟化技术。在 Linux 上使用的是 KVMWindow 上使用 Hyper-VmacOS 中使用 HyperKit 以最小开销运行 VM,支持在笔记本模拟小型云。

同时,Multipass 提供了一个命令行界面来启动和管理 Linux 实例。下载一个全新的镜像需要几秒钟的时间,并且在几分钟内就可以启动并运行 VM

打开任意 MacOS 命令行,键入以下命令查看版本

1
2
3
4
5
# on your MacBook
$ multipass --version

multipass 1.10.1+mac
multipassd 1.10.1+mac

如果提示没有,则使用 brew(一个软件包管理工具)安装 Multipass:

1
2
3
# on your MacBook
$ brew search multipass
$ brew install multipass --cask

创建 Ubuntu 虚拟机

首先,在命令行键入以下指令查找可供下载的 Ubuntu 镜像

PS: 目前只支持 Ubuntu

1
2
3
4
5
6
7
8
9
10
11
12
# on your MacBook
$ multipass find

Image Aliases Version Description
18.04 bionic 20221117 Ubuntu 18.04 LTS
20.04 focal 20221115.1 Ubuntu 20.04 LTS
22.04 jammy,lts 20221117 Ubuntu 22.04 LTS
anbox-cloud-appliance latest Anbox Cloud Appliance
charm-dev latest A development and testing environment for charmers
docker latest A Docker environment with Portainer and related tools
jellyfin latest Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.
minikube latest minikube is local Kubernetes

参数说明:

  • image:镜像
  • Aliases: 别名
  • version:版本
  • Description:描述

下载最新版本的 Ubuntu 镜像运行,第一次创建时需要下载 Ubuntu 镜像,网络通畅的情况下,稍等片刻即可。

1
2
# on your MacBook
$ multipass launch -n test01 -c 2 -m 4G -d 10G

自定义配置创建可以参考如下方式:

  • -n, –name: 名称
  • -c, –cpus: cpu 核心数, 默认: 1
  • -m, –mem: 内存大小, 默认: 1G
  • -d, –disk: 硬盘大小, 默认: 5G

其他操作

查看正在运行的 VM 列表:

1
2
3
4
5
6
7
# on your MacBook
$ multipass list

Name State IPv4 Image
k3s Running 192.168.64.3 Ubuntu 22.04 LTS
10.42.0.0
10.42.0.1

这条指令可以看到虚拟机详细信息,名称,状态,地址,镜像名称等信息。

外部操作 VM

通过 multipass exec 命令在实例内执行给定的命令。第一个参数是运行命令的实例,也就是 k3s
我们通过 exec 命令,就可以在外部操作刚刚创建的虚拟机,例如查看内部所处的目录,执行 pwd 命令

1
2
3
# on your MacBook
$ multipass exec k3s pwd
/home/ubuntu

查看 VM 信息

通过 multipass info 命令,即可查看当前运行的虚拟机信息

1
2
3
4
5
6
7
8
9
10
11
12
13
# on your MacBook
$ multipass info k3s
Name: k3s
State: Running
IPv4: 192.168.64.3
10.42.0.0
10.42.0.1
Release: Ubuntu 22.04.1 LTS
Image hash: 61b29e585d5b (Ubuntu 22.04 LTS)
Load: 1.09 0.71 0.69
Disk usage: 2.5G out of 4.7G
Memory usage: 657.2M out of 961.9M
Mounts: --

登录虚拟机

通过 multipass shell 命令,即可进入到虚拟机内部

1
2
# on your MacBook
$ multipass shell k3s

运行后的结果如下所示,可以看到目前虚拟机的一些系统配置信息,以及内存和磁盘的使用情况

挂载数据卷

multipass 还提供和 Docker 一样的挂载数据卷的功能,能够与外部宿主机的文件保持同步。

multipass mount 宿主机目录 实例名: 虚拟机目录

1
2
3
# on your MacBook
$ mkdir -p ~/test/k3s
$ multipass mount ~/test/k3s k3s:~/k3s

挂载完成后,可以使用 multipass info,查看是否挂载成功:

1
2
3
4
5
6
# on your MacBook
$ multipass info k3s
...
Mounts: ~/test/k3s => ~/k3s
UID map: 501:default
GID map: 20:default

卸载数据卷

如果以后不需要用到挂载了,可以使用 unmount 命令卸载

$ multipass umount 容器名

1
2
# on your MacBook
$ multipass umount k3s

传输文件

除了使用上述的 mount 挂载卷的方式实现文件的交互,同时还可以通过 transfer 命令,将宿主机的文件,发送到虚拟机内部

$ multipass transfer 主机文件 容器名: 容器目录

例如,将 hello.txt 发送到 VM

1
2
# on your MacBook
$ multipass transfer hello.txt k3s:/home/ubuntu/bash

删除和释放实例

为了保持开发环境和线上环境一致性 同时节省部署时间 Multipass 给我们提供了 --cloud-init 选项进行容器启动初始化配置:

1
2
# on your MacBook
$ multipass launch --name ubuntu --cloud-init config.yaml

上面 config.yaml 则是容器的初始化配置文件,我们想在初始化容器的时候,自动下载安装 Node.js,内容如下:

1
2
3
runcmd:
- curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
- sudo apt-get install -y nodejs

runcmd 可以指定容器首次启动时运行的命令

凡是用户自定义的 cloud-init 的配置文件, 必须以 #cloud-config 开头,这是 cloud-init 识别它的方式。

yaml 配置文件可以参考下面的文章

更多关于 Multipass 的高阶的技巧,欢迎访问 multipass 官方文档。

以上。

CATALOG
  1. 1. 简介
  2. 2. 打开任意 MacOS 命令行,键入以下命令查看版本
  3. 3. 创建 Ubuntu 虚拟机
  4. 4. 其他操作
    1. 4.1. 查看正在运行的 VM 列表:
    2. 4.2. 外部操作 VM
    3. 4.3. 查看 VM 信息
    4. 4.4. 登录虚拟机
    5. 4.5. 挂载数据卷
    6. 4.6. 卸载数据卷
    7. 4.7. 传输文件
    8. 4.8. 删除和释放实例