快速產生 kubernetes 測試環境(K3S)
之前文章用了 k3d 快速建立一個測試環境, 但是因為是用 docker 模擬出來的, 所以有些的 k8s 行為怪怪的(ex: service nodeType), 所以今天參考了官網文件, 實作 k3s script 在 vm 裡組出一個 cluster 的方式
緣起
之前文章用了 k3d 快速建立一個測試環境, 但是因為是用 docker 模擬出來的, 所以有些的 k8s 行為怪怪的(ex: service nodeType), 所以今天參考了官網文件, 實作 k3s script 在 vm 裡組出一個 cluster 的方式
lab 步驟
- 產生兩台 vm
- 把兩台 vm 做成 k3s 的 cluster
- 建立 workspace 操作環境
lab 圖, 看圖最實在
安裝 multipass
這裡就直接去安裝好了, 這工具對 mac/windows 都有支援, 寫的很詳細 https://github.com/canonical/multipass
建立兩個 vm, 分別為 vm0/vm1
# 建立第一台
multipass launch \
--name vm0 \
--cpus 2 \
--mem 4G \
--disk 20G
# 建立第二台
multipass launch \
--name vm1 \
--cpus 2 \
--mem 4G \
--disk 20G
# 測試是否成功了
multipass list
登入 vm0 安裝 server
# 登入 vm0
multipass shell vm0
# 換成 admin
sudo -i
# 安裝 k3s server 在 vm0
curl -sfL https://get.k3s.io | sh -s - --disable=traefik
# 取得註冊的 token
cat /var/lib/rancher/k3s/server/token
# 取得 kube/config
cat /etc/rancher/k3s/k3s.yaml
登入 vm1 安裝 agent
# 登入 vm1
multipass shell vm0
# 換成 admin
sudo -i
# 安裝 k3s server 在 vm1 (token 只需要取 server 後面的那段就可以了)
curl -sfL https://get.k3s.io | K3S_URL=https://<vm-server>:6443 K3S_TOKEN=<token> sh -
做 workspace (Kubernetes 控制環境)
為什麼我們要做 workspace 呢? 其實在 vm0 內就可以使用 kubectl 了, k3s 是有幫你安裝一些控制的命令, 注意一下安裝後的 log 檔可以知道了, 但是在正常的情形下會需要 helm 等其他有的沒有的, 所以為了不要讓 server 髒掉, 我都習慣會另外做的 workspace 環境
# 建置 workspace
docker run --rm -it \
--net=host \
dtzar/helm-kubectl:3.8.0 \
bash
# 在 vm0 內取得 cat /etc/rancher/k3s/k3s.yaml (注意 server ip)
vi ~/.kube/config
# test
kubectl get nodes
kubectl cluster-info
這裡有幾點可以說的
- 如果要修改原本的安裝, 例如啟用 traefik, 只要指令修改, 再執行一次就可了
- k3s 預設適用 containerd(cri) 來裝的, 所以移除要記得去用 crictl 處理
其他及常用指令
# k3s 安裝的目錄及其他資訊(vm0)
/var/lib/rancher/k3s
/var/lib/rancher/k3s/server/token
# k3s 設定檔位置
/etc/rancher/k3s
# 移除 k3s server(vm0)
/usr/local/bin/k3s-uninstall.sh
# 移除 k3s agent(vm1)
/usr/local/bin/k3s-agent-uninstall.sh
最後
開發環境很重要, 要練習要熟悉, 就會常常把整個環境用壞掉, 打掉重練無壓力, 學習才會更有效率。還有…夥伴又說, 操作都是一堆 command 的, 真的有點痛苦…好吧!下篇文章來介紹幾個好用的工具, 增加 kubernetes 學習效率…