使用 Play-With-Kubernetes 服務建立 Kubernetes Cluster

之前都是透過 Azure VM 來建立 Kubernetes 環境,使用上沒什麼問題,唯一缺點就是勞民傷財,想測個功能才來架整個 Kubernetes cluster 有點緩不濟急,但常態保留 Kubernetes Cluster 所使用的 VM 就算 VM 沒有啟動也因為佔用資源而需要計價,加上有時是要測試底層的服務 (e.g 網路套件…) 重新架設 clsuer 本來就是需要的,這時候 Play with Kubernetes 就非常實用,Play with Kubernetes 提供每次四個小時、最多 五 個 node 的環境可以用來建立 Kubernetes,每次四個小時結束後需要重新建立,適合短暫驗證功能測試

前期準備

  1. 開啟 Play with Kubernetes

    1playwithkubernetes

  2. 登入 (可以使用 GitHub or docker 帳號)

    2login

  3. 成功登入後會出現 Start 按鈕

    3start

    4startsession

建立 instance

ADD NEW INSTANCE 按鈕每次可以產生一個 node

5createinstance

建立 master

點選任一個 node 以開啟 terminal,並依序執行下列指令

6master

  1. 初始化 master node

    kubeadm init --apiserver-advertise-address $(hostname -i)
    

    初始化完成後,會顯示該如何將其他 node 加入該 cluster 的語法,需要先保存下來

    7joincluster

  2. 初始化 cluster 網路 (使用 weave)

    kubectl apply -n kube-system -f \
    "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 |tr -d '\n')"
    

將 worker 加入 master

token 每次建立 session 與 cluster 都會不同

kubeadm join 192.168.0.6:6443 --token 38nfgj.n9tol1xutiwg9qg2 --discovery-token-ca-cert-hash sha256:72d9b5130a41b5c5906523c03aec90c96dfc308ae761ad3204a0ee2c705ac332

8joined

確認各個 node 狀態

需在 master 上執行,各個 node 皆顯示 Ready 即成功完成 cluster 建立

kubectl get node

9getnode

心得

我自己頻繁使用了 Play with Kubernetes 幾天,佛心完全不收費的服務實在沒什麼好要求的,這邊就列一下有幾個需要留意的點:

  1. 台北時間下午四、五點服務穩定性會下降

    有時候會無法建立 session,有時按下 create instance 沒有反應,有時 kubectl 指令執行時間會變很長 接著出現 timeout

  2. 測試情境需要大於 4 小時的操作

    儘管可以重新建立,但時間是寶貴的

  3. 複雜的情境

    至多 5 個 node,每個 node 有 3.9 GB 左右 ram

  4. 最新功能測試

    2019/4/27 Kubernetes 版本為 v1.11.3, Docker 版本為 18.06.1-ce

參考資訊

  1. Play with Kubernetes
  2. 快速體驗kubernetes