AutoK3s是一款K3s集羣自動化部署工具,可以方便開發者自助管理雲環境中的K3s集羣,可支持AWS/Aliyun/TencentCloud等主流公有云,隨用隨部署,用完即釋放,對於在平時工作過程中需要各種K8s環境的開發測試人員,可以從很大程度上節省重複部署環境的時間,提升工作效率。
新發布的 v0.4.1 版本增強了本地 UI 的用戶體驗,優化了K3s常用參數的配置,使得 K3s 參數配置變得簡單起來,例如一鍵禁用組件、配置runtime、設置網絡組件等,對於新手與K8s深度用戶都有很好的兼容性。
本文將介紹如何基於 v0.4.1 版本的 AutoK3s 使用 AWS provider 快速部署 Rancher HA 環境,並創建 K3s 集羣導入 Rancher 進行統一管理。
本文依賴的相關軟件版本:
一鍵啓動
如果您是Linux或者MacOS用戶,可以使用以下腳本安裝AutoK3s並啓動UI Portal:
1. $ curl -sS http://rancher-mirror.cnrancher.com/autok3s/install.sh |
INSTALL_AUTOK3S_MIRROR=cn sh
2. $ autok3s serve
或者使用Docker一鍵啓動UI Portal:
$ docker run -itd --restart=unless-stopped -p 8080:8080 cnrancher/autok3s:v0.4.1
打開瀏覽器,輸入地址http://127.0.0.1:8080 訪問UI。
創建 Local 集羣
我們準備創建1 master和2 worker的K3s集羣,集羣配置信息如下:
- Instance Options 中的 instance-type 爲 t2.medium
- Instance Options 中的 SSH Public與SSH Private
- Instance Options 中的 security-group,由於是快速構建臨時環境,建議使用allow all規則
- K3s Options 中的 k3s-version 使用v1.18.8+k3s1
- K3s Options 中的 master-extra-args,建議禁用traefik,在下拉菜單中勾選disabled traefik,移動到右側即可實現一鍵禁用組件。
修改完配置以後,點擊創建按鈕,等待集羣創建完成。
小提示:在這裏我們可以將集羣信息保存爲模板,方便後續簡化重複配置的工作。
部署Rancher
由於Rancher HA需要配置訪問證書,本文使用最簡化的 Rancher Generated Certificates 形式,首先我們部署cert-manager應用。
點擊集羣名稱進入集羣詳情頁面,使用 Excute Shell 功能連接到master節點主機。在/var/lib/rancher/k3s/server/manifests 目錄中,增加cert-manager.yaml:
apiVersion: v1
kind: Namespace
metadata:
name: cert-manager
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: cert-manager
namespace: cert-manager
spec:
chart: https://charts.jetstack.io/charts/cert-manager-v1.2.0.tgz
targetNamespace: cert-manager
set:
installCRDs: "true"
您可以使用以下命令驗證安裝結果
$ kubectl -n cert-manager get pods
在/var/lib/rancher/k3s/server/manifests 目錄中,增加rancher.yaml:
apiVersion: v1
kind: Namespace
metadata:
name: cattle-system
---
apiVersion: helm.cattle.io/v1
kind: HelmChart
metadata:
name: rancher
namespace: kube-system
spec:
chart: https://releases.rancher.com/server-charts/stable/rancher-2.5.7.tgz
targetNamespace: cattle-system
set:
hostname: "rancher-test.jacie.work" # 域名可修改
---
apiVersion: v1
kind: Service
metadata:
labels:
app: rancher
name: rancher-lb-svc
namespace: cattle-system
spec:
ports:
- name: http
port: 80
protocol: TCP
targetPort: 80
- name: https
port: 443
protocol: TCP
targetPort: 443
selector:
app: rancher
sessionAffinity: None
type: LoadBalancer
使用K3s的servicelb來做負載均衡入口,這樣最輕量化的實現L4 Rancher HA部署模式:
#external-ip就是訪問入口
$ kubectl get svc rancher-lb-svc -n cattle-system
在域名服務商的控制檯中,配置域名(rancher-test.jacie.work)與 rancher-lb-svc的external-ips的映射關係,直接使用域名即可訪問Rancher HA環境。由於Autok3s在部署K3s時,自動幫我們設置了Node的External IP,這樣servicelb可以很自然的使用這個External IP作爲訪問入口。
注意:公有云場景請注意關機後實例IP變化的問題,以上描述針對的是隨用隨銷燬的驗證場景。
創建集羣並導入Rancher管理
接下來我們可以通過AutoK3s再創建一個使用docker runtime的1 master 1 worker的K3s集羣,並將其導入Rancher進行管理。
集羣配置信息如下:
- Instance Options 中的 instance-type 爲 t2.medium
- Instance Options 中的 SSH Public與SSH Private
- Instance Options 中的 security-group,由於是快速構建臨時環境,建議使用allow all規則
- K3s Options 中設置K3s版本爲v1.19.7+k3s1
- K3s Options 中的 master-extra-args參數,在下拉菜單中選擇docker runtime並移動到右側,AutoK3s會自動爲您在主機上安裝docker,並使用docker作爲K3s的容器運行時。
修改完配置以後,點擊創建按鈕,等待集羣創建完成。
集羣創建完成以後,使用 Launch Kubectl 功能,將該集羣導入到Rancher進行管理即可。
總結
使用AutoK3s可以很方便的部署不同版本的K3s集羣,並且UI上提供了一些常用參數配置,方便用戶個性化配置K3s集羣參數,對於新手與K8s深度用戶都有很好的兼容性。
AutoK3s面向本土環境做了一些優化,K3s 安裝腳本默認指向本土安裝源,減少重複部署工作和部署失敗機率,極大程度上提升了研發跟測試的效率。
AutoK3s 後續版本會支持自動部署mainfests特性,您可以通過指定manifests文件即可完成一鍵部署K3s 集羣並自動安裝應用的過程。
此外,還會提供APP Market Place特性,您可以通過增加自己的helm repo,自動向不同的K3s集羣發佈應用,簡化應用安裝部署的過程。
AutoK3s一切開源,歡迎試用,感興趣的用戶可以在Github上的開源地址獲取更多文檔信息:
https://github.com/cnrancher/autok3s
https://docs.rancher.cn/docs/k3s/autok3s/_index/