iT邦幫忙

2025 iThome 鐵人賽

DAY 12
1

牧場主今日工作

經過昨天的基礎設施整合,我們的數位牧場已經有了完整的網路架構!今天要施展 Custom Cluster 的魔法,透過 Rancher 的 Web 介面召喚出第一個工作叢集。這就像是在牧場中圍出新的牧區,讓更多的工作負載能夠在不同的節點上安全運行!

技術背景與概念

https://ithelp.ithome.com.tw/upload/images/20250825/201417949ZsYIirdeH.png

Custom Cluster 是什麼?

Custom Cluster 是 Rancher 的叢集建立方式之一,讓你可以:

  • 使用現有節點:將任何 Linux 機器轉換成 Kubernetes 節點
  • 彈性部署:支援各種雲端和地端環境
  • 簡單管理:透過 Rancher UI 統一管理
  • 自動化配置:一行指令完成節點加入

叢集角色分離

在生產環境中,建議將節點角色分離:

  • Control Plane + etcd 節點:負責叢集管理,不運行工作負載
  • Worker 節點:專門運行應用程式 Pod

前置準備

確認節點狀態

# 檢查各節點的基本狀態
ssh calvin@192.168.0.234  # rancher-master-1
ssh calvin@192.168.0.238  # rancher-worker-1

# 在每個節點上檢查
sudo systemctl status docker
free -h
df -h

安裝必要工具

在所有節點上安裝基本工具:

# 在 rancher-master-1 和 rancher-worker-1 上執行
sudo apt update
sudo apt install -y vim dnsutils iptables

# 檢查 iptables 安裝
iptables --version

# 確認 DNS 解析
nslookup ithome-rancher.duckdns.org

重要提醒:iptables 是 RKE2 網路功能的必要組件!

透過 Rancher UI 建立 Custom Cluster

步驟 1:登入 Rancher 管理介面

# 開啟瀏覽器前往
https://ithome-rancher.duckdns.org

# 使用管理員帳號登入

步驟 2:建立新叢集

  1. 點擊右上角的 「Create」 按鈕
  2. 選擇 「Custom」 叢集類型
  3. 填寫叢集基本資訊:
    • Cluster Name: ithome-dev
    • Description: 開發測試用叢集
    • Kubernetes Version: 選擇最新穩定版

步驟 3:配置網路選項

重要設定:

  • Container Network: 選擇 Cilium
  • Nginx Ingress: 啟用

為什麼選擇 Cilium?

  • 高效能網路處理
  • 內建 Network Policy 支援
  • 先進的負載均衡功能
  • eBPF 技術優化

步驟 4:完成叢集建立

點擊 「Create」 按鈕,Rancher 會生成節點註冊指令。

節點註冊

Control Plane 節點設定

在 rancher-master-1 (192.168.0.234) 執行:

  1. 只勾選 etcd 和 Control Plane 角色
  2. 不要勾選 Worker 角色
  3. 複製生成的 RKE2 安裝指令
# SSH 到 rancher-master-1
ssh calvin@192.168.0.234

# 執行 Rancher 生成的 RKE2 安裝指令(範例)
curl -fL https://ithome-rancher.duckdns.org/system-agent-install.sh | sudo sh -s - \
  --server https://ithome-rancher.duckdns.org \
  --label 'cattle.io/os=linux' \
  --token <your-cluster-token> \
  --etcd --controlplane

Worker 節點設定

在 rancher-worker-1 (192.168.0.238) 執行:

  1. 只勾選 Worker 角色
  2. 不要勾選 etcd 和 Control Plane 角色
  3. 複製生成的 RKE2 安裝指令
# SSH 到 rancher-worker-1
ssh calvin@192.168.0.238

# 執行 Rancher 生成的 RKE2 安裝指令(範例)
curl -fL https://ithome-rancher.duckdns.org/system-agent-install.sh | sudo sh -s - \
  --server https://ithome-rancher.duckdns.org \
  --label 'cattle.io/os=linux' \
  --token <your-cluster-token> \
  --worker

監控叢集建立進度

在 Rancher UI 中觀察

  1. 前往 「Machines」 頁面
  2. 觀察節點狀態變化:
    • RegisteringProvisioningActive
  3. 等待所有節點變成 Active 狀態

使用指令檢查進度

# 在各節點檢查 RKE2 服務狀態
sudo journalctl -xef -u rke2-server    # Control Plane 節點
sudo journalctl -xef -u rke2-agent     # Worker 節點
sudo journalctl -xef -u rancher-system-agent  # 所有節點

# 檢查 rancher-system-agent 狀態
sudo systemctl status rancher-system-agent

驗證叢集功能

下載 kubeconfig

  1. 在 Rancher UI 中,前往 ithome-dev 叢集
  2. 點擊右上角的 「Kubeconfig File」
  3. 複製內容

配置本地 kubectl

# 在 MacBook 上編輯 kubeconfig
vim ~/.kube/config

# 按照 Kubernetes 標準格式加入新叢集配置
# 範例結構:
apiVersion: v1
kind: Config
clusters:
- cluster:
    certificate-authority-data: <certificate-data>
    server: https://ithome-rancher.duckdns.org/k8s/clusters/<cluster-id>
  name: ithome-dev
contexts:
- context:
    cluster: ithome-dev
    user: ithome-dev
  name: ithome-dev
current-context: ithome-dev
users:
- name: ithome-dev
  user:
    token: <your-token-here>

# 測試連線
kubectl get nodes -o wide
kubectl get pods -A

使用 Lens 管理叢集

推薦工具:Lens Desktop 是優秀的 Kubernetes IDE

  1. 安裝 Lens Desktop
  2. Lens 會自動讀取 ~/.kube/config 檔案
  3. 連線到 ithome-dev 叢集
  4. 透過圖形化介面管理叢集

資源限制說明

硬體資源說明

  • 目前實驗環境:32GB RAM,已使用約 24GB
  • 基於資源考量,本實驗不會再擴增更多節點
  • 重點在於學習多叢集管理概念

故障排除

節點無法加入叢集

# 檢查網路連通性
ping ithome-rancher.duckdns.org

# 檢查 DNS 解析
nslookup ithome-rancher.duckdns.org

# 檢查 rancher-system-agent 狀態
sudo systemctl status rancher-system-agent

叢集建立卡住

# 檢查 rancher-system-agent 日誌
sudo journalctl -u rancher-system-agent -f

# 檢查 RKE2 服務日誌
sudo journalctl -u rke2-server -f  # Control Plane
sudo journalctl -u rke2-agent -f   # Worker

移除叢集(如需重建)

# 在每個節點上執行清理指令
sudo rke2-killall.sh
sudo rm -rf /etc/rancher
sudo rm -rf /var/lib/rancher

# 停止 rancher-system-agent
sudo systemctl stop rancher-system-agent
sudo systemctl disable rancher-system-agent

今日總結與明日預告

今天我們成功施展了 Custom Cluster 魔法!透過 Rancher 的直覺化介面,輕鬆建立了第一個工作叢集,並將兩個節點以適當的角色分工加入其中。

重點回顧:

  • 了解 Custom Cluster 的概念和角色分離
  • 透過 Rancher UI 建立新叢集
  • 學會正確的節點角色配置(Control Plane vs Worker)
  • 掌握節點註冊和監控技巧
  • 配置 kubectl 和 Lens 管理工具
  • 認識硬體資源限制的重要性

明天我們將整合第三方登入系統,學習如何串接 GitHub、GitLab 或 Azure AD 等企業級認證服務,提升 Rancher 的安全性和使用便利性!


💡 牧場主小提示:節點角色分離是生產環境的最佳實務!Control Plane 負責大腦功能,Worker 負責勞動工作,分工合作效率更高。記住 iptables 是必裝的,沒有它 RKE2 的網路功能會出問題!另外,如果叢集建立太慢,耐心等待是必要的,急不得!


上一篇
Day 11: 基礎設施整合與 Rancher 優化設定
下一篇
Day 13: 第三方登入整合 - GitHub 串接實戰
系列文
牧場主的 K8s 放牧日記18
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言