skip to content

快速產生 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 圖, 看圖最實在

2022-03-17-10-35-26

安裝 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 學習效率…

參考