作者簡介
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: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 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 pi@raspberrypi.local復制你的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中貢獻內容。
