OS + Multipass
s
https://multipass.run/
Multipass 是由 Ubuntu 背后的 Canonical 公司开发的,因此 Multipass 所使用的镜像也都是 Ubuntu 镜像,不过对于习惯了使用 CentOS 的用户来说,还是用些许不太习惯。
Multipass,一款更轻量级的虚拟机
https://www.icode9.com/content-4-1255884.html
教你用multipass快速搭建k8s集群
https://www.likecs.com/show-233548.html
https://www.cnblogs.com/chenqionghe/p/15227277.html
教你用multipass快速搭建k8s集群
前言
人们很少做他们相信是对的事,他们做比较方便的事,然后后悔。——鲍勃·迪伦
我相信分享技术是对的事~
multipass相当于docker版本的虚拟机,k3s是轻便版本的k8s,两者结合让你使用k8s就像德芙一样纵享丝滑。下面手把手教你使用multipass和搭建k8s集群,giao~
一、multipass快速入门
安装
下载地址:multipass.run/
这里我是安装的mac版的
使用
- 获取版本信息
multipass version
- 查找镜像
multipass find Image Aliases Version Description snapcraft:core18 20201111 Snapcraft builder for Core 18 snapcraft:core20 20201111 Snapcraft builder for Core 20 snapcraft:core 20210430 Snapcraft builder for Core 16 18.04 bionic 20210817 Ubuntu 18.04 LTS 20.04 focal,lts 20210825 Ubuntu 20.04 LTS anbox-cloud-appliance latest Anbox Cloud Appliance minikube latest minikube is local Kubernetes
- 创建虚拟机
语法:multipass launch -n 虚拟机名称
-n, --name: 名称
-c, --cpus: cpu核心数, 默认: 1
-m, --mem: 内存大小, 默认: 1G
-d, --disk: 硬盘大小, 默认: 5G
multipass launch -n ubuntu-lts -c 4 -m 4G -d 40G
- 进入虚拟机
multipass shell 虚拟机名称
- 不进入虚拟机直接执行命令
语法:multipass exec 虚拟机名称 --命令
multipass exec ubuntu-lts -- ls
- 查看虚拟机列表
multipass ls multipass list
- 查看虚拟机信息
multipass info 虚拟机名称
- 重启虚拟机
multipass restart 虚拟机名称
- 删除虚拟机
# 普通删除(可恢复) multipass delete 虚拟机名称 # 彻底删除 multipass delete --purge 虚拟机名称
- 恢复删除虚拟机
multipass recover 虚拟机名称
- 启动虚拟机
multipass start 虚拟机名称
- 暂停虚拟机
multipass stop 虚拟机名称
- 挂载宿主机目录
multipass mount 宿主机目录 虚拟机名称:虚拟机目录
- 卸载挂载目录
multipass unmount 虚拟机名称:虚拟机目录
二、使用multipass搭建k8s集群
创建3台虚拟机
multipass launch --name master --mem 1G --disk 3G 18.04 multipass launch --name worker1 --mem 1G --disk 3G 18.04 multipass launch --name worker2 --mem 1G --disk 3G 18.04
创建完成,查看一下
multipass ls
安装master节点
这里是用的k3s,参考k3s文档
multipass exec master -- /bin/bash -c "curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -"
安装完成后,我们查看一下master的token,用来安装k3s-agent
multipass exec master -- /bin/bash -c "sudo cat /var/lib/rancher/k3s/server/node-token"
这里我的token是
K10f1a18fb4cc78db2ef656ac22bf6881f600ac1b19024a2b00f5cc51b92c108eee::server:be939c868d27bbebf0e42cb2d856432f
安装node节点
# 设置变量 K3S_URL="https://192.168.64.2:6443" K3S_TOKEN="K10f1a18fb4cc78db2ef656ac22bf6881f600ac1b19024a2b00f5cc51b92c108eee::server:be939c868d27bbebf0e42cb2d856432f" # 安装worker1 multipass exec worker1 -- /bin/bash -c "curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=${K3S_URL} K3S_TOKEN=${K3S_TOKEN} sh -" # 安装worker2 multipass exec worker2 -- /bin/bash -c "curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn K3S_URL=${K3S_URL} K3S_TOKEN=${K3S_TOKEN} sh -"
运行后可以用,检查一下agent是否正常启动
systemctl status k3s-agent
这里代表都正常运行了,我们再来测试一直k8s集群是否已经正常启动,进入master节点运行
kubectl get nod
测试k8s集群
我们来创建一个nginx的deployment
- nginxdemo.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginxdemo spec: replicas: 1 selector: matchLabels: name: nginxdemo template: metadata: labels: name: nginxdemo spec: containers: - name: nginxdemo image: nginx ports: - containerPort: 80
执行一下
kubectl apply -f nginxdemo.yaml
可以看到已经正常运行了
为了访问我们的nginx,我们部署一个service
- nginxsvc.yaml
apiVersion: v1 kind: Service metadata: name: nginxsvc spec: type: NodePort ports: - port: 82 protocol: TCP targetPort: 80 name: http nodePort: 30055 selector: name: nginxdemo
这里的用NodePort的方式来访问,我们来创建一下
kubectl apply -f nginxsvc.yaml
可以看到,svc已经部署成功,并给出了CLUSTER-IP,10.43.148.7,我们可以用两种方式访问nginxdemo
- 在集群内用http://10.43.148.7:82/
- 在集群外用http://192.168.64.2:30055/、http://192.168.64.3:30055/、http://192.168.64.4:30055/
我们分别来访问一下
OK,能正常访问,集群搭建完毕~
三、其他问题
不能拉取镜像:报ImagePullBackOff错误
参考了这篇文章:k3s设置国内加速源
查看
crictl info |grep registry
默认镜像源,是docker.io
我们修改一下镜像源,在/var/lib/rancher/k3s/agent/etc/containerd/config.toml添加
# 设置镜像源 [plugins.cri.registry.mirrors] [plugins.cri.registry.mirrors."docker.io"] endpoint = ["https://docker.mirrors.ustc.edu.cn"]
重启k3s即可
sudo systemctl restart k3s
end
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义