目錄
- 前言
- 一、multipass快速入門
- 安裝
- 使用
- 二、使用multipass搭建k8s叢集
- 建立3台虛拟機
- 安裝master節點
- 安裝node節點
- 測試k8s叢集
- 三、其他問題
- 不能拉取鏡像:報ImagePullBackOff錯誤
人們很少做他們相信是對的事,他們做比較友善的事,然後後悔。——鮑勃·迪倫
我相信分享技術是對的事~
multipass相當于docker版本的虛拟機,k3s是輕便版本的k8s,兩者結合讓你使用k8s就像德芙一樣縱享絲滑。下面手把手教你使用multipass和搭建k8s叢集,giao~
下載下傳位址: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 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

這裡是用的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
# 設定變量
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
我們來建立一個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/
我們分别來通路一下
教你用multipass快速搭建k8s叢集 教你用multipass快速搭建k8s叢集
OK,能正常通路,叢集搭建完畢~
參考了這篇文章: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