開(kāi)篇
?? 引言:
- 三人行必有我?guī)熝?/li>
- 知識(shí)共享,天下為公
- 《K3s 系列文章》
- 《Rancher 系列文章》
方案
在騰訊云的 K3S 上安裝 Rancher
方案目標(biāo)
- 高可用
- 3 臺(tái) master 的 k3s 集群
- 高可用模式的 rancher
- 數(shù)據(jù)備份
- rancher 數(shù)據(jù)備份到 騰訊云對(duì)象存儲(chǔ) cos
- 安全加密
- 不能存在 http,全部是 https
- 面向客戶
- 公網(wǎng)可訪問(wèn);
- 域名可訪問(wèn)埃碱;
- 正式證書(shū)
- 盡量復(fù)用公有云的能力
-
Tencent Cloud Controller Manager(? 因?yàn)轵v訊云已經(jīng)放棄維護(hù)相關(guān)源碼旅挤,所以無(wú)法復(fù)用) -
SVC LoadBalancer 調(diào)用 CLB(? 因?yàn)轵v訊云已經(jīng)放棄維護(hù)相關(guān)源碼饵婆,所以無(wú)法復(fù)用) - CLB - 使用 4 層 CLB
- 備份 - 使用騰訊云 COS
-
前提條件
-
有騰訊云賬戶礼华,賬戶至少擁有如下權(quán)限:auto k3s 安裝 - 設(shè)置 CAM 以及這些權(quán)限:
QcloudTAGFullAccess
該騰訊云賬號(hào)有對(duì)應(yīng)的 API 密鑰咐鹤,地址:訪問(wèn)密鑰 - 控制臺(tái) (tencent.com) ,或者擁有相關(guān)權(quán)限:
cam:QueryCollApiKey
和cam:CreateCollApiKey
一個(gè)對(duì)象存儲(chǔ)通 cos圣絮,用于備份
Rancher 的域名
Rancher 的域名對(duì)應(yīng)的證書(shū)(如果沒(méi)有祈惶,會(huì)嘗試通過(guò) cert-manager 和 let’s encrypt 自動(dòng)生成免費(fèi)的證書(shū))
注意事項(xiàng)
Rancher 安裝注意事項(xiàng)
-
安裝前需要調(diào)整:
- 安全組
-
安裝后需要配置:
- LB
- Backup
??付費(fèi)模式,COS 按需調(diào)整付費(fèi)模式扮匠。
安裝步驟
Rancher
?? Important:
通過(guò) Helm Chart 安裝
Rancher 端口要求
??? Quote:
Rancher Server 節(jié)點(diǎn)的入站規(guī)則
協(xié)議 | 端口 | 來(lái)源 | 描述 |
---|---|---|---|
TCP | 80 | Load balancer/proxy行瑞,做外部 SSL 終端 | 使用外部 SSL 終止時(shí)的 Rancher UI/API |
TCP | 443 | server 節(jié)點(diǎn) agent 節(jié)點(diǎn)托管/注冊(cè)的 Kubernetes 任何需要能夠使用 Rancher UI 或 API 的源 | Rancher agent, Rancher UI/API, kubectl |
TCP | 6443 | K3s server 節(jié)點(diǎn) | Kubernetes API |
最后具體的安全組配置如下:(應(yīng)該可以進(jìn)一步收緊)
Rancher 高可用安裝
先安裝 helm chart 并創(chuàng)建 ns:
helm repo add rancher-stable http://rancher-mirror.oss-cn-beijing.aliyuncs.com/server-charts/stable
kubectl create namespace cattle-system
SSL 選項(xiàng)為:已有的證書(shū),通過(guò) Helm 安裝 Rancher:
??? Quote:
先添加證書(shū)到 k8s secret:
kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=tls.crt \
--key=tls.key
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=<your-rancher-domain> \
--set replicas=3 \
--set ingress.tls.source=secret \
--set systemDefaultRegistry=registry.cn-hangzhou.aliyuncs.com \
--set auditLog.level=1 \
運(yùn)行后輸出如下:
NAME: rancher
LAST DEPLOYED: Sat Feb 12 20:10:14 2022
NAMESPACE: cattle-system
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Rancher Server has been installed.
NOTE: Rancher may take several minutes to fully initialize. Please standby while Certificates are being issued, Containers are started and the Ingress rule comes up.
Check out our docs at https://rancher.com/docs/
If you provided your own bootstrap password during installation, browse to https://<your-rancher-domain> to get started.
If this is the first time you installed Rancher, get started by running this command and clicking the URL it generates:
echo https://<your-rancher-domain>/dashboard/?setup=$(kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}')
To get just the bootstrap password on its own, run:
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{ "\n" }}'
Happy Containering!
?? Notice:
注意 Rancher 域名的 443 權(quán)限要開(kāi)通血久。
?? Info:
- 要安裝一個(gè)特定的 Rancher 版本,使用
--version
標(biāo)志帮非,例如:--version 2.3.6
氧吐。
之后訪問(wèn) UI 進(jìn)行初始密碼設(shè)置等工作。
?? 至此末盔,Rancher 高可用集群安裝完成筑舅。
Rancher 中國(guó)區(qū)優(yōu)化配置
參考這里:
收尾工作
調(diào)整安全組
入站規(guī)則:
- TCP:22(SSH) 端口權(quán)限收緊
- TCP:6443(K8S API) 端口權(quán)限收緊
- UDP:8472(K3s vxlan) 只開(kāi)放給內(nèi)網(wǎng)
- TCP:10250(kube api-server) 只開(kāi)放給內(nèi)網(wǎng)
最終效果如下:(應(yīng)該可以進(jìn)一步收緊)
配置 LB
??? Quote:
我們建議將負(fù)載均衡器配置為 4 層均衡器,將普通 80/tcp 和 443/tcp 轉(zhuǎn)發(fā)到 Rancher 管理集群節(jié)點(diǎn)陨舱。集群上的 Ingress Controller 會(huì)將端口 80 上的 http 通信重定向到端口 443 上的 https翠拣。
如上面所述,所以通過(guò) 4 層 LB, 將 443/tcp 轉(zhuǎn)到后端游盲。如下圖:
配置 Rancher Backup
??? Quote:
通過(guò) UI 安裝:
先創(chuàng)建 cos 存儲(chǔ)的認(rèn)證信息 Secret:
apiVersion: v1
stringData:
accessKey: <your-ak>
secretKey: <your-sk>
kind: Secret
metadata:
name: cos-creds
namespace: cattle-resources-system
type: Opaque
然后在 應(yīng)用市場(chǎng) 選擇 Rancher Backup 安裝:
配置 對(duì)象存儲(chǔ):
安裝成功日志如下:
helm upgrade --install=true --namespace=cattle-resources-system --timeout=10m0s --values=/home/shell/helm/values-rancher-backup-crd-2.1.0.yaml --version=2.1.0 --wait=true rancher-backup-crd /home/shell/helm/rancher-backup-crd-2.1.0.tgz
...
---------------------------------------------------------------------
SUCCESS: helm upgrade --install=true --namespace=cattle-resources-system --timeout=10m0s --values=/home/shell/helm/values-rancher-backup-crd-2.1.0.yaml --version=2.1.0 --wait=true rancher-backup-crd /home/shell/helm/rancher-backup-crd-2.1.0.tgz
---------------------------------------------------------------------
helm upgrade --install=true --namespace=cattle-resources-system --timeout=10m0s --values=/home/shell/helm/values-rancher-backup-2.1.0.yaml --version=2.1.0 --wait=true rancher-backup /home/shell/helm/rancher-backup-2.1.0.tgz
...
---------------------------------------------------------------------
SUCCESS: helm upgrade --install=true --namespace=cattle-resources-system --timeout=10m0s --values=/home/shell/helm/values-rancher-backup-2.1.0.yaml --version=2.1.0 --wait=true rancher-backup /home/shell/helm/rancher-backup-2.1.0.tgz
---------------------------------------------------------------------
配置 Backup, 如下:
?? 登錄 COS 發(fā)現(xiàn)已經(jīng)成功備份误墓。
總結(jié)
?????? 至此,完成騰訊云上 K3S 高可用集群 及 Rancher 高可用集群的搭建益缎,并配置備份谜慌。
以下是安裝的相關(guān)信息:
K3s
3 個(gè) Master 和 Server 地址
K3S API Server 地址:
https://<3個(gè)master IP 地址任一個(gè)>:6443
(6443 端口目前沒(méi)有配置 CLB)K3S kubeconfig 配置:位于 k3s 的
/etc/rancher/k3s/k3s.yaml
以及操作機(jī)的/root/.autok3s/.kube/config
Rancher
- 地址:
- 公網(wǎng)訪問(wèn):
https://<your-rancher-domain>:<port>/
- 內(nèi)網(wǎng)訪問(wèn):
https://<your-rancher-domain>:443
(需要編輯自己電腦的hosts
, 將 3 個(gè) master 任一內(nèi)網(wǎng) IP 映射到該域名)
- 公網(wǎng)訪問(wèn):
- 賬號(hào):
Admin
- 密碼
安全組
使用的安全組,最終配置如下:(應(yīng)該可以進(jìn)一步收緊)
CLB
使用的 CLB
監(jiān)聽(tīng)器為:rancher(TCP:<port>)
轉(zhuǎn)到 3 臺(tái) master 的 443 端口莺奔。
備份 COS
K3S 和 Rancher 都配置了備份欣范,備份到對(duì)象存儲(chǔ) cos 中。具體的地址為:
- 桶:rancher-backup-<cos-id>
- 域名:
https://rancher-backup-<cos-id>.cos.ap-shanghai.myqcloud.com
- S3 Endpoint:
cos.ap-shanghai.myqcloud.com
- 文件夾為:
- k3s 為:
/rancher-1/rancher/rancher
(備份策略:每天 0 點(diǎn)備份令哟,保留 5 份) - rancher 為:
/rancher-1/rancher/k3s
(備份策略恼琼,每天 0 點(diǎn)備份)
- k3s 為:
- COS 生命周期為:自動(dòng)清理 1 個(gè)月前的文件。(配置 自動(dòng)清理規(guī)則)
三人行, 必有我?guī)? 知識(shí)共享, 天下為公. 本文由東風(fēng)微鳴技術(shù)博客 EWhisper.cn 編寫(xiě).