教你用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

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"
# 安裝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

image
image

這里代表都正常運行了,我們再來測試一直k8s集群是否已經正常啟動,進入master節點運行

kubectl get nod

image

測試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

image
可以看到已經正常運行了
為了訪問我們的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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM