W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
注意: 此功能從v1.17.4+k3s1開始提供支持。
你可以使用 Rancher 的 system-upgrad-controller 來管理 K3s 集群升級。這是一種 Kubernetes 原生的集群升級方法。它利用自定義資源定義(CRD)、計劃和控制器,根據(jù)配置的計劃安排升級。
計劃定義了升級策略和要求。本文檔將提供適合升級 K3s 集群的默認計劃。有關(guān)更多高級計劃配置選項,請查閱CRD。
控制器通過監(jiān)控計劃和選擇要在其上運行升級 job 的節(jié)點來調(diào)度升級。計劃通過標簽選擇器定義哪些節(jié)點應(yīng)該升級。當一個 job 成功運行完成后,控制器會給它運行的節(jié)點打上相應(yīng)的標簽。
注意: 啟動的升級 job 必須是高權(quán)限的。它的配置如下:
IPC
?, ?NET
?和 ?PID
?命名空間
CAP_SYS_BOOT
?能力
/host
?的主機根目錄,具有讀寫權(quán)限關(guān)于 system-upgrade-controller 的設(shè)計和架構(gòu)或其與 K3s 集成的更多細節(jié),請參見以下 Git 倉庫:
要以這種方式進行自動升級,你必須執(zhí)行以下操作:
注意:如果正在使用 Rancher 管理k3s的話,用戶應(yīng)該使用 Rancher 來升級他們的 K3s 集群。
- 如果你選擇使用 Rancher 來升級,已經(jīng)為你解決了下面的步驟。
- 如果你選擇不使用 Rancher 來升級,你必須使用下面的步驟來進行升級。
System-upgrade-controller 可以作為 deployment 安裝到您的集群中。Deployment 需要一個 service-account、clusterRoleBinding 和一個 configmap。要安裝這些組件,請運行以下命令:
kubectl apply -f https://github.com/rancher/system-upgrade-controller/releases/latest/download/system-upgrade-controller.yaml
控制器可以通過前面提到的 configmap 進行配置和定制,但控制器必須重新部署才能應(yīng)用更改。
建議您最少創(chuàng)建兩個計劃:升級 server(master)節(jié)點的計劃和升級 agent(worker)節(jié)點的計劃。根據(jù)需要,您可以創(chuàng)建其他計劃來控制跨節(jié)點的滾動升級。以下兩個示例計劃將把您的集群升級到 K3s v1.17.4+k3s1。創(chuàng)建計劃后,控制器將接收這些計劃并開始升級您的集群。
# Server plan
apiVersion: upgrade.cattle.io/v1
kind: Plan
metadata:
name: server-plan
namespace: system-upgrade
spec:
concurrency: 1
cordon: true
nodeSelector:
matchExpressions:
- key: node-role.kubernetes.io/master
operator: In
values:
- "true"
serviceAccountName: system-upgrade
upgrade:
image: rancher/k3s-upgrade
version: v1.17.4+k3s1
---
# Agent plan
apiVersion: upgrade.cattle.io/v1
kind: Plan
metadata:
name: agent-plan
namespace: system-upgrade
spec:
concurrency: 1
cordon: true
nodeSelector:
matchExpressions:
- key: node-role.kubernetes.io/master
operator: DoesNotExist
prepare:
args:
- prepare
- server-plan
image: rancher/k3s-upgrade
serviceAccountName: system-upgrade
upgrade:
image: rancher/k3s-upgrade
version: v1.17.4+k3s1
關(guān)于這些計劃,有幾個重要的事情需要提醒:
首先,必須在部署控制器的同一命名空間中創(chuàng)建計劃。
其次,?concurrency
?字段表示可以同時升級多少個節(jié)點。
第三,?server-plan
?通過指定一個標簽選擇器來選擇帶有?node-role.kubernetes.io/master
?標簽的節(jié)點,從而鎖定 server 節(jié)點。?agent-plan
?通過指定一個標簽選擇器來選擇沒有該標簽的節(jié)點,以 agent 節(jié)點為目標。
第四,?agent-plan
?中的 ?prepare
?步驟會使該計劃等待?server-plan
?完成后再執(zhí)行升級 jobs。
第五,兩個計劃的?version
?字段都設(shè)置為 v1.17.4+k3s1?;蛘?,你可以省略 ?version
?字段,將 ?channel
?字段設(shè)置為解析到 K3s 版本的 URL。這將導(dǎo)致控制器監(jiān)控該 URL,并在它解析到新版本時隨時升級集群。因此,你可以用下面的 channel 配置你的計劃,以確保你的集群總是自動升級到 K3s 的最新穩(wěn)定版本。
apiVersion: upgrade.cattle.io/v1
kind: Plan
...
spec:
...
channel: https://update.k3s.io/v1-release/channels/stable
如上所述,一旦控制器檢測到計劃已創(chuàng)建,升級就會立即開始。更新計劃將使控制器重新評估計劃并確定是否需要再次升級。
您可以通過 kubectl 查看 plans 和 jobs 來監(jiān)控升級的進度:
kubectl -n system-upgrade get plans -o yaml
kubectl -n system-upgrade get jobs -o yaml
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: