僅需60秒,使用k3sup快速部署高可用K3s集羣

作者簡介

Dmitriy
Akulov,連續創業者,16歲時搭建了開源CDN公共服務jsDelivr的v1版本。目前是邊緣託管平臺appfleet創始人。

原文鏈接:

https://ma.ttias.be/deploying-highly-available-k3s-k3sup/

前 言

雲原生領域正在嘗試尋找一種方法來解決在資源受限的環境中運行時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:https://github.com/alexellis/k3sup

k3sup作爲靜態Go二進制文件分發,你可以在MacOS和Linux上使用安裝程序,也可以訪問Release頁面下載適用於Windows的可執行文件。你還能夠通過k3sup README文件找到詳細的安裝說明。

$ curl -sLS https://get.k3sup.dev | sh
$ sudo install k3sup /usr/local/bin/

$ k3sup --help

Windows用戶請注意:你可以通過Windows Command Prompt(cmd)使用k3sup installk3sup 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文件,可用於遠程訪問集羣。

圖片來源:k3sup README

具體步驟:

  • 爲你的操作系統下載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中貢獻內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章