一、現狀分析
在當今的云計算和容器化領域,Kubernetes(K8S)已經成為了容器編排和管理的事實標準。根據 Gartner 的數據,超過 70% 的企業在生產環境中使用 K8S 來管理容器化應用。然而,K8S 的安裝和管理對于許多企業來說仍然是一個挑戰,尤其是在需要部署多套不同版本 K8S 集群的場景下。
K3S 作為一個輕量級的 K8S 發行版,以其快速部署、資源占用少等特點,受到了越來越多企業的青睞。而 Rancher 則提供了一個統一的管理平臺,可以方便地在不同的基礎設施上部署和管理 K8S 集群。通過結合 K3S 和 Rancher,我們可以實現高效、靈活的多套 K8S 集群部署。
(我們生產的業務也是這樣部署的)
二、核心原理
K3S 原理
K3S 是一個經過簡化的 K8S 發行版,它去除了一些不必要的組件,如 cloud provider 等,同時采用了 SQLite 作為默認的 etcd 替代方案,從而大大減少了資源占用。K3S 的架構主要包括 Server 和 Agent 兩部分,Server 負責管理集群的狀態和調度,Agent 則負責運行容器化應用。
Rancher 原理
Rancher 是一個開源的容器管理平臺,它通過提供一個統一的用戶界面和 API,允許用戶在不同的基礎設施上部署、管理和監控 K8S 集群。Rancher 采用了多租戶架構,可以為不同的用戶和團隊提供獨立的管理空間。
架構原理
我們的架構采用 K3S 作為底層的 K8S 發行版,通過 Rancher 來管理多套 K8S 集群。物理節點作為 Agent 加入到 K8S 集群中,Rancher 則可以在這些集群上部署K8S集群和節點
+---------------------+
| K8S節點 |
+---------------------+ | |
+---------------------+
| Rancher |
| (管理多套 K8S) |
+---------------------+ | |
+---------------------+
| K3S |
+---------------------+
三、環境準備
硬件環境
- 至少 3 臺物理節點,每臺節點需要滿足以下配置:
- CPU:2 核以上
- 內存:4GB 以上
- 硬盤:20GB 以上
軟件環境
- 操作系統:Ubuntu 18.04 或以上版本
- Docker:安裝最新穩定版本
- 網絡:節點之間需要能夠互相通信
安裝 Docker
# 更新系統包
sudo apt update
# 安裝必要的依賴
sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
# 添加 Docker 官方 GPG 密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加 Docker 軟件源
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新系統包
sudo apt update
# 安裝 Docker
sudo apt install docker-ce docker-ce-cli containerd.io -y
# 啟動 Docker 并設置開機自啟
sudo systemctl start docker
sudo systemctl enable docker
四、分步實現
1 安裝 K3S
在一臺虛擬機安裝 K3S Server:
curl -sfL https://get.k3s.io | sh -
在其他物理節點上安裝 K3S Agent,并加入到 K3S Server:
# 獲取 K3S Server 的 token
sudo cat /var/lib/rancher/k3s/server/node-token
# 在 Agent 節點上安裝 K3S Agent
curl -sfL https://get.k3s.io | K3S_URL=https://<server_ip>:6443 K3S_TOKEN=<token> sh -
2 安裝 Rancher
在 K3S 集群上安裝 Rancher:
# 創建命名空間
kubectl create namespace cattle-system
# 安裝 Cert-Manager
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.crds.yaml
kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.5.4/cert-manager.yaml
# 安裝 Rancher
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm install rancher rancher-stable/rancher \ --namespace cattle-system \ --set hostname=rancher.yourdomain.com \ --set ingress.tls.source=letsEncrypt \ --set letsEncrypt.email=your_email@example.com
3 通過 Rancher 部署多套 K8S 集群
3.1 硬件資源
-
、基礎硬件配置規范
- 控制平面節點(Master)
- CPU:4核(推薦 Intel Xeon Silver 4210 或同級)
- 內存:16GB DDR4 ECC(支持內存糾錯)
- 存儲:2×480GB SSD RAID1(系統盤)+ 2×1TB NVMe SSD RAID0(數據盤)2
- 網絡:雙萬兆網卡(建議 Mellanox ConnectX-5)
- master也可以使用虛擬機 配置低點也可以
- Worker 節點(物理機)
- CPU:16核(推薦 AMD EPYC 7302P 或同級,支持 NUMA 架構)
- 內存:64GB DDR4(根據業務負載可擴展至 256GB)
- 存儲:
- 系統盤:2×480GB SSD RAID1
- 數據盤:
- 場景1(常規應用):4×3.84TB SATA SSD RAID10(IOPS 50萬+)
- 場景2(AI/大數據):4×7.68TB NVMe SSD RAID0(順序讀寫 6GB/s+)1
- 網絡:25Gbps 雙端口網卡(支持 RDMA 加速)
- work 節點配置一定要高點 (這里配提供GPU顯卡,可以單獨選配)
3.2軟件系統
- 操作系統:所有節點需安裝相同的 Linux 發行版,推薦使用 CentOS 7.x 或 Ubuntu 18.04 及以上版本。安裝時確保系統是最新狀態,可通過執行系統更新命令更新軟件包。
3.3?訪問控制臺
通過?https://rancher.yourdomain.com
?訪問,首次登錄需執行:
3.3.1?自定義集群配置 (這里比較重要的是K8S的模版,涉及一些重點參數)
cluster:name: prod-cluster kubernetesVersion: v1.24.9 network:plugin: calico cloudProvider:name: external
nodes:- address: 192.168.1.101 role: [controlplane,etcd,worker]- address: 192.168.1.102 role: [worker]
3.3.2 通過頁面添加自定義集群 (WEB來配置 )實際也是用于生成自定義集群配置 YML文件的
通過UI導入YAML或使用Rancher CLI創建5
3.4?節點注冊流程
- 在Rancher UI選擇添加集群?→?自定義
- 復制生成的注冊命令:
# Control Plane節點執行
docker run -d --privileged --restart=unless-stopped \--net=host -v /etc/kubernetes:/etc/kubernetes \-v /var/run:/var/run rancher/rancher-agent:v2.7.0 \--server https://rancher.yourdomain.com \--token <YOUR_TOKEN> \--etcd --controlplane --worker
五、故障排查
5.1 常見問題處理
現象 | 解決方案 |
---|---|
節點注冊超時 | 檢查防火墻規則和端口開放情況2 |
證書錯誤 | 更新cert-manager至最新版1 |
鏡像拉取失敗 | 配置國內鏡像加速源4 |
資源不足 | 調整kubelet參數--kube-reserved 5 |
5.2 診斷命令集
# 檢查集群狀態
kubectl get nodes -o wide
# 查看組件日志
journalctl -u kubelet -f
# 網絡連通性測試
kubectl run -it --rm test --image=alpine ping <pod-ip>
六、延伸實踐
- 混合云管理:通過Rancher Fleet同步管理多個集群5
- 安全加固:集成OPA/Gatekeeper策略引擎
- CI/CD流水線:結合Jenkins實現自動部署
- 監控告警:部署Prometheus-Operator監控棧
完整部署示例代碼庫:rancher-examples
生產檢查清單:Rancher Hardening Guide高可用安裝指南 | Rancher文檔