教你用multipass快速搭建k8s集群

目录

  • 前言
  • 一、multipass快速入门
    • 安装
    • 使用
  • 二、使用multipass搭建k8s集群
    • 创建3台虚拟机
    • 安装master节点
    • 安装node节点
    • 测试k8s集群
  • 三、其他问题
    • 不能拉取镜像:报ImagePullBackOff错误

前言

人们很少做他们相信是对的事,他们做比较方便的事,然后后悔。——鲍勃·迪伦

我相信分享技术是对的事~

multipass相当于docker版本的虚拟机,k3s是轻便版本的k8s,两者结合让你使用k8s就像德芙一样纵享丝滑。下面手把手教你使用multipass和搭建k8s集群,giao~

一、multipass快速入门

安装

下载地址:multipass.run/
这里我是安装的mac版的

使用

  • 获取版本信息
multipass version
  • 查找镜像
multipass findImage Aliases Version Descriptionsnapcraft:core18 20201111 Snapcraft builder for Core 18snapcraft:core20 20201111 Snapcraft builder for Core 20snapcraft:core 20210430 Snapcraft builder for Core 1618.04 bionic 20210817 Ubuntu 18.04 LTS20.04 focal,lts 20210825 Ubuntu 20.04 LTSanbox-cloud-appliance latest Anbox Cloud Applianceminikube 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 lsmultipass 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.04multipass launch --name worker1 --mem 1G --disk 3G 18.04multipass launch --name worker2 --mem 1G --disk 3G 18.04

创建完成,查看一下

multipass ls

image

安装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\"

image
这里我的token是

K10f1a18fb4cc78db2ef656ac22bf6881f600ac1b19024a2b00f5cc51b92c108eee::server:be939c868d27bbebf0e42cb2d856432f

安装node节点

# 设置变量K3S_URL=\"https://192.168.64.2:6443\"K3S_TOKEN=\"K10f1a18fb4cc78db2ef656ac22bf6881f600ac1b19024a2b00f5cc51b92c108eee::server:be939c868d27bbebf0e42cb2d856432f\"# 安装worker1multipass 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 -\"# 安装worker2multipass 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

image
image

这里代表都正常运行了,我们再来测试一直k8s集群是否已经正常启动,进入master节点运行

kubectl get nod

image

测试k8s集群

我们来创建一个nginx的deployment

  • nginxdemo.yaml
apiVersion: apps/v1kind: Deploymentmetadata:  name: nginxdemospec:  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

image
可以看到已经正常运行了
为了访问我们的nginx,我们部署一个service

  • nginxsvc.yaml
apiVersion: v1kind: Servicemetadata:  name: nginxsvcspec:  type: NodePort  ports:  - port: 82    protocol: TCP    targetPort: 80    name: http    nodePort: 30055  selector:    name: nginxdemo

这里的用NodePort的方式来访问,我们来创建一下

kubectl apply -f nginxsvc.yaml

image

可以看到,svc已经部署成功,并给出了CLUSTER-IP,10.43.148.7,我们可以用两种方式访问nginxdemo

  1. 在集群内用http://10.43.148.7:82/
  2. 在集群外用http://192.168.64.2:30055/、http://192.168.64.3:30055/、http://192.168.64.4:30055/
    我们分别来访问一下
    image
    image

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\"]

image
重启k3s即可

sudo systemctl restart k3s