資源不夠想玩k8s?搭建單節(jié)點k3s與kubeSphere管理端
k3s
k8s是業(yè)界公認的有效管理容器化工作負載的服務(wù)平臺,對于企業(yè)級用戶來說,部署一套k8s是非常簡單的事情,但是對于我們一些個人用戶出于學(xué)習(xí)或者自己想搞事情的目的來說,搭建一套k8s的成本還是太高了一些。于是k3s橫空出世,k3s是由Rancher團隊搞出來的一套k8s替代方案,當年Rancher也是比較出色的容器編排平臺解決方案(但他的1.X版本的編排系統(tǒng)還是算了……)。
k3s從名字來看就知道一定是k8s的袖珍版,沒錯,根據(jù)官網(wǎng)[K3s - 輕量級 K3s - 輕量級 Kubernetes | Rancher文檔的介紹
- K3s 是一個輕量級的 Kubernetes 發(fā)行版,它針對邊緣計算、物聯(lián)網(wǎng)等場景進行了高度優(yōu)化。K3s 有以下增強功能:
- 打包為單個二進制文件。
- 使用基于 sqlite3 的輕量級存儲后端作為默認存儲機制。同時支持使用 etcd3、MySQL 和 PostgreSQL 作為存儲機制。
- 封裝在簡單的啟動程序中,通過該啟動程序處理很多復(fù)雜的 TLS 和選項。
- 默認情況下是安全的,對輕量級環(huán)境有合理的默認值。
- 添加了簡單但功能強大的`batteries-included`功能,例如:本地存儲提供程序,服務(wù)負載均衡器,Helm controller 和 Traefik Ingress controller。
- 所有 Kubernetes control-plane 組件的操作都封裝在單個二進制文件和進程中,使 K3s 具有自動化和管理包括證書分發(fā)在內(nèi)的復(fù)雜集群操作的能力。
- 最大程度減輕了外部依賴性,K3s 僅需要 kernel 和 cgroup 掛載。 K3s 軟件包需要的依賴項包括:
- containerd
- Flannel
- CoreDNS
- CNI
- 主機實用程序(iptables、socat 等)
- Ingress controller(Traefik)
- 嵌入式服務(wù)負載均衡器(service load balancer)
- 嵌入式網(wǎng)絡(luò)策略控制器(network policy controller)
與k8s最大的區(qū)別在于,系統(tǒng)占用小,對Arm架構(gòu)的支持甚至可以支持部署在樹莓派上面,這對于邊緣計算、物聯(lián)網(wǎng)平臺來說是再好不過的消息,并且因為部署及啟動集群的時間非常短,對于開發(fā)及測試環(huán)境,也特別適用。
k3s架構(gòu)圖
KubeSphere
KubeShpere集群首頁
kubeSphere工作負載監(jiān)控
KubeSphere是用于管理k8s集群的一套可視化工具,最大的特點是安裝非常便捷,官網(wǎng)提供了All-in-One安裝腳本,讓開發(fā)人員能夠快速搭建一個單節(jié)點k8s集群。
KubeSphere對用戶體驗及審美有特殊癖好的開發(fā)人員來說,也是福音。對于k8s各種配置文件都有可視化界面可以進行編輯。
按照官方文檔 部署 K3s 和 KubeSphere (https://kubesphere.io/zh/docs/installing-on-linux/on-premises/install-kubesphere-and-k3s/)所述的安裝方案,目前會遇到卡死的情況,所以采用手動方式來進行安裝。
安裝單節(jié)點k3s
curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION=v1.21.4+k3s1 sh -
如以上語句安裝了v1.21.4穩(wěn)定版本的k3s,安裝腳本通過環(huán)境變量控制腳本的執(zhí)行參數(shù),詳細的參數(shù)列表可以查看官方安裝文檔 Rancher Docs: Installation Options (https://rancher.com/docs/k3s/latest/en/installation/install-options/#options-for-installation-with-script),安裝過程中因為涉及訪問github.com,整個安裝的時間視網(wǎng)絡(luò)情況而定,在我這里也就30秒。此過程沒有太大問題,如果遇到腳本輸出以下日志
Downloading hash https://github.com/k3s-io/k3s/releases/download/{your version}/sha256sum-amd64.txt
之后便退出了,可以試著訪問日志中的這個地址,很可能是github.com訪問困難造成的,只能多多嘗試。安裝完成后可以使用以下命令查看節(jié)點信息以證明安裝成功。
k3s kubectl get node
安裝KubeSphere
使用官方文檔 在 Kubernetes 上最小化安裝 KubeSphere (
k3s kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/kubesphere-installer.yaml
k3s kubectl apply -f https://github.com/kubesphere/ks-installer/releases/download/v3.2.1/cluster-configuration.yaml
以上腳本部署了v3.2.1版本的KubeSphere,如果想要指定版本號,可以將腳本中的版本號對應(yīng)替換。
腳本會拉取幾個鏡像,在此過程中可能又會因為眾所周知的問題導(dǎo)致卡死,不能說太細只能多多嘗試幾次自行解決。安裝過程可通過以下腳本查看
k3s kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l app=ks-install -o jsonpath='{.items[0].metadata.name}') -f
Error from server (BadRequest): container "installer" in pod "ks-installer-85dcfff87d-2w9f5" is waiting to start: trying and failing to pull image
例如通過以上腳本的返回信息,可得知目前正在拉取鏡像并且正在重試。
通過以上兩部分簡單的腳本,就可以實現(xiàn)搭建一個單節(jié)點k3s+KubeSphere的服務(wù)平臺了,對于個人開發(fā)者測試使用,或者體驗DevOps來說已足夠。