教你用 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
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://www.cnblogs.com/chenqionghe/p/15227277.html