僅需60秒,使用k3sup快速部署高可用K3s集群
作者簡介
Dmitriy
Akulov,連續創業者,16歲時搭建了開源CDN公共服務jsDelivr的v1版本。目前是邊緣託管平台appfleet創始人。
原文鏈接:
前 言
雲原生領域正在嘗試尋找一種方法來解決在資源受限的環境中運行時Kubernetes資源消耗過多的問題。這一嘗試的結果是創建了一個輕量級Kubernetes發行版K3s,該發行版精簡了K8S的功能,可以滿足在邊緣計算環境中、在小型設備上運行Kubernetes集群的需求。發布之後,K3s在社區中迅速流行,短短几個月內Github Star已經達到10,000(目前已經超過12,000)。 這種受歡迎程度為這一項目帶來了很大的優勢,一些社區用戶主動為K3s貢獻了周邊工具。本文中,我將介紹由Alex Ellis創建的k3sup(發音為「ketchup」),它將幫助你在基礎架構中啟動K3s。
什麼是k3sup?
儘管安裝K3s已經十分簡單,並且你也可以使用bash輕鬆啟動類似的程式,但是K3s的開發就是為了讓原本需要手動操作以及令人困惑的流程自動化,以節省開發人員本來就不多的時間。
當你使用你喜歡的工具配置好一個VM之後,k3sup意味著你只需要60秒即可在自己的電腦上運行kubectl get pod。在0.2.0版本中,你甚至可以將其他節點加入任何現有的K3s集群中。
以下是在README中提到的k3sup用例:
-
將K3s的Kubernetes引導(bootstrap)到任何VM——在CI期間或通過
cloudinit
手動進行 -
在Raspberry Pi(RPi)、VM、AWS EC2、Packet裸機、DigitalOcean、Civo、Scaleway等上使用K3s直接與kubectl連接
-
從現有的K3s集群中獲取可用的KUBECONFIG
-
使用
k3sup join
,將節點加入現有K3s集群
安裝k3sup
k3sup Github://github.com/alexellis/k3sup
k3sup作為靜態Go二進位文件分發,你可以在MacOS和Linux上使用安裝程式,也可以訪問Release頁面下載適用於Windows的可執行文件。你還能夠通過k3sup README文件找到詳細的安裝說明。
$ curl -sLS //get.k3sup.dev | sh
$ sudo install k3sup /usr/local/bin/
$ k3sup --help
Windows用戶請注意:你可以通過Windows Command Prompt(cmd)使用k3sup install
和k3sup join
命令。
用 法
k3sup主要在台式機/筆記型電腦電腦上運行,但是也提供了針對MacOS、Windows和Linux(包括ARM)的二進位文件。
使用k3sup設置K8S server
你可以設置一個server並在此處停止,或者繼續使用join命令將一些agent,或者稱為節點或worker添加到集群中以擴展其計算能力。
配置一個運行在兼容作業系統(如Ubuntu、Debian、Raspbian等)上的新VM,確保你選擇了將要註冊的SSH密鑰自動複製到新的VM或主機上。
注意:你可以使用
ssh-copy-id user@IP
將ssh密鑰遠程複製到VM上。
假設IP是192.168.0.1
並且用戶名是ubuntu,然後你可以運行以下命令:
運行k3sup:
$ export IP=192.168.0.1
$ k3sup install --ip $IP --user ubuntu
現在嘗試訪問:
$ export KUBECONFIG=`pwd`/kubeconfig
$ kubectl get node
加入一些agent到K8S server
假設你有一台server,並且已經運行以下內容:
$ export SERVER_IP=192.168.0.100
$ export USER=root
$ k3sup install --ip $SERVER_IP --user $USER
接下來,加入一個或更多的agent到集群中:
$ export AGENT_IP=192.168.0.101
$ export SERVER_IP=192.168.0.100
$ export USER=root
$ k3sup join --ip $AGENT_IP --server-ip $SERVER_IP --user $USER
大功告成!因此,無論使用的是本地VM、Raspberry Pi、64位ARM還是EC2上的Cloud VM,使用以上命令你都可以啟動並運行兩個節點的集群。
創建multi-master(HA)設置
從k3s 1.0開始,可通過sqlite獲得HA multi-master配置,這將需要quorum的master,這意味著至少具有三個節點。
用第一台server初始化集群,請注意--cluster
標誌:
$ export SERVER_IP=192.168.0.100
$ export USER=root
$ k3sup install \
--ip $SERVER_IP \
--user $USER \
--cluster
加入額外的server,注意新的--server
標誌:
$ export USER=root
$ export SERVER_IP=192.168.0.100
$ export NEXT_SERVER_IP=192.168.0.101
$ k3sup join \
--ip $NEXT_SERVER_IP \
--user $USER \
--server-user $USER \
--server-ip $SERVER_IP \
--server
現在檢查kubectl get node
:
$ kubectl get node
NAME STATUS ROLES AGE VERSION
paprika-gregory Ready master 8m27s v1.16.3-k3s.2
cave-sensor Ready master 27m v1.16.3-k3s.2
在樹莓派上部署K8S(2、3或4版本均適用)
完成以下步驟後,你將在樹莓派2、3或4上啟動一個Kubernetes,並且安裝迅速。最後,你將在本地電腦上擁有一個KUBECONFIG文件,可用於遠程訪問集群。
具體步驟:
-
為你的作業系統下載etcher.io
-
使用Raspbian Lite flash你的SD卡
-
在啟動分區中通過創建一個名為ssh的空文件啟動SSH
-
如果你還沒有ssh-keygen,請生成一個ssh-key
-
使用ping -c raspberrypi.local尋找RPi IP,然後使用IP設置
export SERVER_IP=""
-
使用
ssh-copy-id [email protected]
複製你的ssh密鑰 -
運行命令
k3sup install --ip $SERVER_IP --user pi
-
指向配置文件並獲取節點的狀態:
$ export KUBECONFIG=`pwd`/kubeconfig
$ kubectl get node -o wide
現在,你可以從你的筆記型電腦電腦使用kubectl訪問運行K3s的樹莓派。如果你想加入一些節點,為每個附加的RPi運行export IP=""
,如下:
$ k3sup join --ip $IP --server-ip $SERVER_IP --user pi
下一步
現在下一步呢?這完全取決於你。這是一個快速發展的項目,每天都有更多更新的內容問世。你可以嘗試查看可以將哪些標誌和配置合併到集群中以demo該工具,甚至嘗試在Github repo中貢獻內容。