基于 Rancher 部署 Kubernetes 集群的工程實踐指南

一、現狀分析

在當今的云計算和容器化領域,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?節點注冊流程

  1. 在Rancher UI選擇添加集群?→?自定義
  2. 復制生成的注冊命令:
# 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-reserved5

5.2 診斷命令集

# 檢查集群狀態 
kubectl get nodes -o wide 
# 查看組件日志 
journalctl -u kubelet -f 
# 網絡連通性測試 
kubectl run -it --rm test --image=alpine ping <pod-ip>

六、延伸實踐

  1. 混合云管理:通過Rancher Fleet同步管理多個集群5
  2. 安全加固:集成OPA/Gatekeeper策略引擎
  3. CI/CD流水線:結合Jenkins實現自動部署
  4. 監控告警:部署Prometheus-Operator監控棧

完整部署示例代碼庫:rancher-examples
生產檢查清單:Rancher Hardening Guide

高可用安裝指南 | Rancher文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78034.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78034.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78034.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Windows服務器提權實戰:常見方法、場景與防御指南

在滲透測試中&#xff0c;??權限提升&#xff08;提權&#xff09;??是從低權限賬戶&#xff08;如IIS、Apache運行賬戶&#xff09;獲取系統管理員&#xff08;如SYSTEM&#xff09;權限的關鍵步驟。本文將從實戰角度解析Windows服務器提權的常見技術&#xff0c;并結合真…

C# | 基于C#實現的BDS NMEA-0183數據解析上位機

以下是一個基于C#實現的BDS NMEA-0183數據解析上位機的示例代碼,包含基礎功能和界面: using System; using System.Collections.Generic; using System.IO.Ports; using System.Windows.Forms; using System.Drawing; using System.Globalization;namespace BDS_NMEA_Viewer…

圖像增強技術:從基礎原理到企業級開發實戰

簡介 圖像增強技術是提升圖像質量、改善視覺效果和提高后續處理效果的核心方法。本文將全面解析圖像增強的五大核心技術:灰度級修正、圖像平滑、圖像銳化、圖像偽彩色處理和圖像幾何校正,并提供基于OpenCV和Elasticmagic的完整企業級開發實戰代碼。通過系統化的知識整理和可…

解決中文亂碼:字符編碼全攻略 - ASCII、Unicode、UTF-8、GB2312詳解

&#x1f9d1; 博主簡介&#xff1a;CSDN博客專家&#xff0c;歷代文學網&#xff08;PC端可以訪問&#xff1a;https://literature.sinhy.com/#/?__c1000&#xff0c;移動端可微信小程序搜索“歷代文學”&#xff09;總架構師&#xff0c;15年工作經驗&#xff0c;精通Java編…

體系學習1:C語言與指針1——預定義、進制打印、傳參為數組

1、不對一段代碼進行編譯 #if 0 statement #endif2、輸出地址 int d[3]{1,2,3}; printf("%p",(void*)d);//p期待的是void*類型的數據3、不同進制的打印 int data 1200; char hed[9];//為\0預留位置&#xff01;&#xff01;&#xff01; sprintf(hed,"%08X&…

Java 基礎--數組(Array):存儲數據的“排排坐”

作者&#xff1a;IvanCodes 發布時間&#xff1a;2025年5月1日&#x1f913; 專欄&#xff1a;Java教程 大家好&#xff01;&#x1f44b; 咱們在編程時&#xff0c;經常需要處理一批相同類型的數據&#xff0c;比如班級里所有同學的成績 &#x1f4af;、一周每天的最高氣溫 …

CSS常用屬性_(進階)

目錄 1.尺寸單位與顏色 &#xff08;1&#xff09;尺寸 &#xff08;2&#xff09;顏色 常用2種 &#xff08;3&#xff09;顏色屬性值&#xff08;透明度&#xff09; 例如&#xff1a; 2.字體屬性font 例如&#xff1a; **順序 3.文本屬性 ?編輯例如&#xff1a; …

【RabbitMQ】保證消息不丟失

要確保 RabbitMQ 在消費者&#xff08;Python 服務&#xff09;重啟或掛掉時消息不丟失&#xff0c;需結合 消息持久化、確認機制&#xff08;ACK&#xff09; 和 死信隊列&#xff08;DLX&#xff09; 實現高可靠性&#xff1a; 1. 消息持久化&#xff08;Durability&#xff…

Python基本語法(控制語句)

#控制語句 Python語言的控制語句和其他編程語言類似&#xff0c;常用的有if…else、while、for語句。 案例2一7控制語句 第1組代碼&#xff0c;說明if-else語句&#xff1a; #1 print(\n1,if) x,y,z10,20,5 if x>y:print(x>y) else:print(x<y)輸出結果: 1,if x<…

并發設計模式實戰系列(10):Balking(猶豫模式)

&#x1f31f; 大家好&#xff0c;我是摘星&#xff01; &#x1f31f; 今天為大家帶來的是并發設計模式實戰系列&#xff0c;第10章Balking&#xff08;猶豫模式&#xff09;&#xff0c;廢話不多說直接開始~ 目錄 一、核心原理深度拆解 1. 狀態守護機制 2. 與狀態模式的…

【強化學習系列】貝爾曼方程

首先回顧狀態價值函數和動作價值函數的定義&#xff1a; 狀態價值函數 v π ( s ) v_\pi(s) vπ?(s)是從狀態 s s s出發&#xff0c;直至一幕結束后獲得的回報的期望值 動作價值函數 q π ( s , a ) q_\pi(s,a) qπ?(s,a)是從狀態 s s s出發&#xff0c;采取動作 a a a后&…

donet使用指定版本sdk

ps:來自微軟官方方案,實測可行,就是在項目任意目錄下在新建 global.json,并配置sdk版本 SDK 使用最新安裝的版本 SDK 命令包括 dotnet new 和 dotnet run。 .NET CLI 必須為每個 dotnet 命令選擇一個 SDK 版本。 即使在以下情況下&#xff0c;它也會默認使用計算機上安裝的最新…

x-cmd install | Orbiton:極簡至上的終端文本編輯器與輕量級 IDE

目錄 核心特點安裝適用場景優勢 厭倦了臃腫復雜的 IDE&#xff1f;渴望一個輕巧、快速、專注的編碼環境&#xff1f;Orbiton&#xff0c;一款極簡主義的終端文本編輯器與輕量級 IDE&#xff0c;將帶給你前所未有的編碼體驗。 核心特點 極簡主義&#xff0c;專注編碼&#xff1…

大腦、機器人與貝葉斯信念及AI推理

在機器不再局限于重復性任務的世界里&#xff0c;機器人技術已經大膽地邁入了感知、學習和決策的領域。這篇文章探討了智能機器人系統是如何構建的——從理解它們嘈雜的傳感器和不確定的環境&#xff0c;到使它們能夠做出明智的選擇并隨著時間的推移調整自己的行為。 AI推理 …

線上婚戀相親小程序源碼介紹

?基于ThinkPHP、FastAdmin和UniApp開發的線上婚戀相親小程序源碼&#xff0c;這款小程序源碼采用了ThinkPHP作為后端框架&#xff0c;其強大的功能與良好的擴展性為程序的穩定運行提供了保障。 ?FastAdmin作為后臺管理框架&#xff0c;使得管理員能夠便捷地對用戶信息、相親…

長短期記憶(LSTM)簡介

RNN 的主要限制在于它無法記住很長的序列&#xff0c;并且會陷入梯度消失的問題。 什么是梯度消失問題&#xff1f; 當添加更多具有某些激活函數的層時&#xff0c;神經網絡中損失函數的梯度趨近于零&#xff0c;這使得網絡難以訓練。 長短期記憶&#xff08;LSTM&#xff09;…

JESD204B 探究

JESD204B協議是高速串行接口標準,主要用于ADC/DAC與邏輯器件(如FPGA)之間的數據傳輸。以下為綜合解析: 一、協議概述 ?核心作用? 通過高速SERDES技術實現數模轉換器與邏輯器件間的高效數據傳輸,支持多通道同步和確定性延遲,適用于GB級吞吐量場景23。?版本演進? JESD2…

Flutter PIP 插件 ---- 新增PipActivity,Android 11以下支持自動進入PIP Mode

接上文 Flutter PIP 插件 ---- Android 項目地址 PIP&#xff0c; pub.dev也已經同步發布 pip 0.0.3&#xff0c;你的加星和點贊&#xff0c;將是我繼續改進最大的動力 開發文檔 Add videos using picture-in-picture (PiP)介紹PIP功能從 Android 8.0 (API level 26) 引入&…

【Java開發日記】6個Java 工具,輕松分析定位 JVM 問題 !

目錄 使用 JDK 自帶工具查看 JVM 情況 jps jinfo jvisualvm jcm 使用 JDK 自帶工具查看 JVM 情況 JDK 自帶了很多命令行甚至是圖形界面工具&#xff0c;幫助查看 JVM 的一些信息。比如&#xff0c;在機器上運行 ls 命令&#xff0c;可以看到 JDK 8 提供了非常多的工具或程…

動態規劃簡單題2

leetcode91題&#xff08;解碼方法&#xff09; 分析題目&#xff1a; 1.這是一種解碼&#xff0c;就是給多個數字組成的字符串&#xff0c;把這些數字解碼成字母&#xff0c;看看一共有多少種 2.如果一個數字前有前導0就不合法&#xff0c;比如06&#xff0c;這與6不同&…