顯示頁面舊版反向連結Fold/unfold all回到頁頂 本頁是唯讀的,您可以看到原始碼,但不能更動它。您如果覺得它不應被鎖上,請詢問管理員。 ====== K3s Cluster Nodes 重啟管理 Script ====== * Script - https://github.com/tryweb/k3s/blob/main/systools/k3s-reboot-manager.sh * 這 Script 可以讓 K3s Cluster Nodes 需要重新開機 Exp. Linux kernel 更新 時, 安全重開, 降低 Downtime 時間. ===== 重開機順序 ===== ==== 情境 1:1 個 Server + 2 個 Agent(最常見)==== * 順序:Server 節點 → Agent 節點 1 → Agent 節點 2 - 先重開 Server 節點 - 等待完全啟動(etcd + API server 就緒) - 再依序重開 Agent 節點 - Agent 1 - Agent 2 * 原因:Agent 節點啟動時需要連接到 Server 的 API server,如果 Server 還沒準備好,Agent 會一直重試連接。 * {{:tech:k3s:gemini_generated_image_hsery9hsery9hser.png?400|}} ==== 情境 2:3 個 Server(HA 高可用)==== * 順序:依序重開 Server 節點,最後重開 Agent 節點 - Server 1 重開 - 等待加入叢集(可以看到其他 2 個 server) - Server 2 重開 - 等待加入叢集(可以看到其他 2 個 server) - Server 3 重開 - 等待叢集穩定(可以看到其他 3 個 server) - 所有 Agent 節點依序重開 * 關鍵:確保至少有 2 個 Server 節點在線上(etcd quorum),才重開第 3 個。 * {{:tech:k3s:gemini_generated_image_x5khi9x5khi9x5kh.png?400|}} ===== 使用 k3s-reboot-manager.sh 方式 ===== ==== 環境準備 ==== * k3s-reboot-manager.sh 可在 Server 上執行, 但要先設定好 Server 可以使用 ssh 免密碼連上所有 Nodes - 設定 SSH 免密碼登入 (在主要的 Server 上執行)<cli> # 生成 SSH key(如果還沒有) sudo ssh-keygen -t rsa -b 4096 -N "" -f /root/.ssh/id_rsa # 複製 key 到 Agent 節點(Exp. 使用 jonathan 帳號) sudo ssh-copy-id jonathan@192.168.11.172 # 測試連線 sudo ssh jonathan@192.168.11.172 "echo SSH OK" </cli> - 在 Agent 節點設定 sudo 免密碼 - SSH 到 Agent 節點:<cli>sudo ssh jonathan@192.168.11.172</cli> - 在 Agent 節點上執行:<cli> # 設定 jonathan 使用者 sudo 免密碼 echo 'jonathan ALL=(ALL) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/jonathan sudo chmod 440 /etc/sudoers.d/jonathan # 測試 sudo 免密碼 sudo -n true && echo "Sudo OK" # 登出 exit </cli> - 從 Server 測試完整流程<cli> # 測試 SSH + sudo reboot sudo ssh jonathan@192.168.11.172 "sudo -n reboot --help" # 如果上面的命令成功,表示設定正確 </cli> ==== 使用腳本對 K3s Nodes 重新開機 ==== - 下載 k3s-reboot-manager.sh <cli> sudo curl -o /usr/local/bin/k3s-reboot-manager.sh https://raw.githubusercontent.com/tryweb/k3s/refs/heads/main/systools/k3s-reboot-manager.sh sudo chmod a+x /usr/local/bin/k3s-reboot-manager.sh </cli>**環境需要安裝 jq 套件**<cli>sudo apt-get update && sudo apt-get install -y jq</cli> - 互動式模式 <cli> jonathan@k3s-master-171:~$ sudo k3s-reboot-manager.sh [INFO] === K3s Server 遠端節點重開機管理工具 === [INFO] 當前叢集節點狀態: NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME k3s-master-171 Ready control-plane,master 18d v1.33.6+k3s1 192.168.11.171 <none> Ubuntu 24.04.3 LTS 6.8.0-90-generic containerd://2.1.5-k3s1.33 k3s-worker-172 Ready <none> 18d v1.33.6+k3s1 192.168.11.172 <none> Ubuntu 24.04.3 LTS 6.8.0-90-generic containerd://2.1.5-k3s1.33 k3s-worker-173 Ready <none> 18d v1.33.6+k3s1 192.168.11.173 <none> Ubuntu 24.04.3 LTS 6.8.0-90-generic containerd://2.1.5-k3s1.33 請選擇操作: 1) 重開單一 Agent 節點 2) 重開所有 Agent 節點(依序) 3) 重開本地 Server 節點 4) 顯示節點狀態 5) 驗證叢集狀態 0) 退出 請選擇 [0-5]: </cli> - 命令列模式<cli> # 重開單一節點 sudo /usr/local/bin/k3s-reboot-manager.sh --reboot-agent k3s-worker-172 jonathan </cli> ===== FAQ ===== - Server(Master) 出現 Uncordon 狀態, Exp. k3s-master-171 可以手動恢復 <cli>kubectl uncordon k3s-master-171</cli> {{tag>k3s reboot}} tech/k3s/k3s-reboot-manager.txt 上一次變更: 2025/12/13 16:42由 jonathan