使用 Portainer 圖形化工具管理 K3s / K8s 叢集
前言:
本文的目標為安裝 Portainer 圖形化工具來管理 K3s / K8s 環境,並簡單快速的用 yaml 設定來將容器自動部署到叢集上。
還沒有建好叢集的讀者請先參考我的另一篇文章:
先到 server 虛擬機內安裝 portainer:
1 | multipass shell k8s-server |
安裝完後確認是否成功:
1 | sudo kubectl get pods -n portainer |
回到本機,連到以下網址:
1 | http://<your_server_node_ip>:30777/ |
第一次啟動服務要設定帳號,如下圖:
設定完成就可以看到以下介面:
點選 Get Started 即可開始。
點選 local 進入 Dashboard:
點選 Services,然後選右上的 create from manifest:
選擇 Web editor 並輸入設定的 yaml:
這裡提供我用的 yaml 設定,用 nginx 官方 image 當簡單範例。
1 | apiVersion: apps/v1 |
若有部署成功但發生 external ip always pending 或無法連線的問題,要注意 port 的設定。
成功部署會像這樣:
從圖中可以看到設定的 LoadBalancer 正常運作,有兩個 External IP 可以通:
使用 External IP 即可正常連線:
以筆者案例是 http://192.168.64.2:38383/ 和 http://192.168.64.3:38383/ 。
額外補充:
在原叢集正常運作時加開一個 worker2 虛擬機並加入叢集:
卡在這裡快二十分鐘都沒顯示完成:
然後查看狀態發現 Portainer 已無法連線到 k3s 叢集:
這邊注意,由於 Portainer 也是作為一個 pod 安裝在 master 上的,若是 master 主機掛了是連 Portainer 介面都看不到的,所以這裡的問題是 k3s 叢集卡住無法回應。
但依然可以正常訪問節點:
由於卡了二十分鐘都沒好,嘗試把 k8s-server 關掉,可以發現打其中一個 External IP 會變成「無法連上這個網站」了,但另一個正常,所以 LoadBalancer 的兩個端口確實是對應兩個不同節點上的服務,並且就算 master 掛掉 worker 還是能讀取。這也是因為 pod 是分散在兩個節點才能正常讀,不然 3 個 pod 都集中在 master 的話就算 worker 活著也讀不了。
最後把 k8s-server 重啟,一切正常,但中間還是等待了不少時間,可能開給他的資源真的太少了。
進入介面可以看到 LoadBalancer 自動的產生第三個端口,所以是隨著節點數量自動增減的:
嘗試把 k8s-worker2 關掉,大概要 2 分鐘才會顯示異常:
如果您喜歡我的文章,歡迎幫我在下面按5下讚!感謝您的鼓勵和支持!