RKE2 叢集配置參考
本節涵蓋了 Rancher 中新建或現有 RKE2 Kubernetes 叢集可用的配置選項。
概述
你可以透過以下兩種方式之一配置 Kubernetes 選項:
- Rancher UI:使用 Rancher UI 選擇設定 Kubernetes 叢集時常用的自訂選項。
- 叢集配置檔案:進階使用者可以建立 RKE2 配置檔案,而不是使用 Rancher UI 來選擇叢集的 Kubernetes 選項。使用配置檔案可以讓你設定 RKE2 安裝可用的許多其他選項。
在 Rancher UI 中編輯叢集
Rancher UI 提供兩種編輯叢集的方式:
- 使用表單。
- 使用 YAML。
使用表單編輯叢集
表單涵蓋了叢集最常需要的選項。
要編輯你的叢集,
- 點選 ☰ > Cluster Management。
- 前往你想要配置的叢集並點選 ⋮ > Edit Config。
在 YAML 中編輯叢集
有關 YAML 中 RKE2 叢集可配置選項的完整參考,請參閱 RKE2 文件。
要使用 YAML 編輯你的叢集:
- 點選 ☰ > Cluster Management。
- 前往你想要配置的叢集並點選 ⋮ > Edit as YAML。
- 在
rkeConfig指令下編輯 RKE 選項。
Rancher UI 中的配置選項
機器池配置
本小節涵蓋通用機器池配置。有關特定基礎設施提供者配置,請參閱以下內容:
池名稱
機器池 的名稱。
機器數量
池中的機器數量。
角色
為節點分配 etcd、控制平面和 worker 角色的選項。
進階
自動替換
節點在自動刪除和替換之前可以無法存取的時間量。
刪除前清空
在刪除節點之前透過驅逐所有 pod 來啟用清空節點。
Kubernetes 節點標籤
新增標籤到節點,以幫助組織和物件選擇。
有關標籤語法要求的詳細資訊,請參閱 Kubernetes 文件。
污點
新增污點到節點,以防止 pod 被排程到節點或在節點上執行,除非 pod 具有匹配的容忍度。
叢集配置
基礎
Kubernetes 版本
安裝在叢集節點上的 Kubernetes 版本。
有關升級或回滾 Kubernetes 的詳細資訊,請參閱本指南。
容器網路提供者
叢集使用的網路提供者。
啟動叢集後,你無法更改網路提供者。因此,請仔細選擇要使用的網路提供者,因為 Kubernetes 不允許在網路提供者之間切換。一旦使用網路提供者建立了叢集,更改網路提供者將需要你拆除整個叢集及其所有應用程式。
開箱即用,Rancher 與以下網路提供者相容:
* 在 Cilium CNI 中使用專案網路隔離時,可以啟用跨節點 ingress 路由。點選 CNI 提供者文件以了解更多資訊。
有關不同網路提供者以及如何配置它們的更多詳細資訊,請查看我們的 RKE2 文件。
當使用 cilium 或 multus,cilium 作為容器網路介面提供者時,請確保同時啟用 Enable IPv6 Support 選項。
雲端提供者
你可以配置 Kubernetes 雲端提供者。如果你想在 Kubernetes 中使用動態佈建的卷和儲存,通常你必須選擇特定的雲端提供者才能使用它。例如,如果你想使用 Amazon EBS,則需要選擇 aws 雲端提供者。
Pod 安全准入配置範本
叢集的預設 pod 安全准入配置範本。
Worker 合規性配置檔案
選擇一個合規性基準來驗證系統配置。
專案網路隔離
如果你的網路提供者允許專案網路隔 離,你可以選擇啟用或停用專案間通訊。
如果你使用任何支援強制執行 Kubernetes 網路策略的 RKE2 網路外掛程式(例如 Canal),則可以使用專案網路隔離。
CoreDNS
預設情況下,CoreDNS 作為預設 DNS 提供者安裝。如果未安裝 CoreDNS,則必須自行安裝備用的 DNS 提供者。有關其他 CoreDNS 配置,請參閱 RKE2 文件。
NGINX Ingress
如果你想在高可用性配置中發布應用程式,並且你的節點託管在沒有原生負載平衡功能的雲端提供者上,請啟用此選項以在叢集內使用 NGINX Ingress。有關其他配置選項,請參閱 RKE2 文件。
有關其他配置選項,請參閱 RKE2 文件。
Metrics Server
啟用或停用 Metrics Server 的選項。
每個能夠使用 RKE2 啟動叢集的雲端提供者都可以為叢集節點收集指標和監控。啟用此選項可從雲端提供者的入口網站查看節點指標。
Add-On 配置
要在啟動時應用於叢集的其他 Kubernetes 清單,作為 Add-on 管理。有關詳細資訊,請參閱 RKE2 文件。
Agent 環境變數
為 Rancher agents 設定環境變數的選項。環境變數可以使用鍵值對設定。有關更多詳細資訊,請參閱 RKE2 文件。
etcd
自動快照
啟用或停用定期 etcd 快照的選項。如果啟用,使用者可以選擇配置快照的頻率。有關詳細資訊,請參閱 RKE2 文件。請注意,使用 RKE2,快照儲存在每個 etcd 節點上。這與 RKE1 不同,RKE1 每個叢集只儲存一個快照。
指標
選擇是將 etcd 指標公開到公共還是僅在叢集內公開的選項。
網路
叢集 CIDR
用於 pod IP 的 IPv4 和/或 IPv6 網路 CIDR(預設值:10.42.0.0/16)。
範例值:
- 僅 IPv4:
10.42.0.0/16 - 僅 IPv6:
2001:cafe:42::/56 - 雙堆疊:
10.42.0.0/16,2001:cafe:42::/56
有關與雙堆疊或僅 IPv6 網路相關的其他要求和限制,請參閱以下資源:
你必須在首次建立叢集時配置 Service CIDR。在叢集啟動後,你無法在現有叢集上啟用 Service CIDR。
當使用 cilium 或 multus,cilium 作為容器網路介面提供者時,請確保同時啟用 Enable IPv6 Support 選項。
Service CIDR
用於服務 IP 的 IPv4/IPv6 網路 CIDR(預設值:10.43.0.0/16)。
範例值:
- 僅 IPv4:
10.43.0.0/16 - 僅 IPv6:
2001:cafe:43::/112 - 雙堆疊:
10.43.0.0/16,2001:cafe:43::/112
有關與雙堆疊或僅 IPv6 網路相關的其他要求和限制,請參閱以下資源:
你必須在首次建立叢集時配置 Service CIDR。在叢集啟動後,你無法在現有叢集上啟用 Service CIDR。
當使用 cilium 或 multus,cilium 作為容器網路介面提供者時,請確保同時啟用 Enable IPv6 Support 選項。
叢集 DNS
coredns 服務的 IPv4 叢集 IP。應該在你的 service-cidr 範圍內(預設值:10.43.0.10)。
叢集域
選擇叢集的域。預設為 cluster.local。
NodePort Service 端口範圍
更改可用於 NodePort 服務的端口範圍的選項。預設值為 30000-32767。
截斷主機名稱
將主機名稱截斷為 15 個字元或更少的選項。你只能在叢集的初始建立期間設定此欄位。在叢集建立後,你無法啟用或停用 15 個字元限制。
此設定僅影響機器佈建的叢集。由於自訂叢集在其自己的節點建立過程中設定主機名稱,該過程發生在 Rancher 之外,因此此欄位不會限制自訂叢集的主機名稱長度。
在叢集中截斷主機名稱可以提高與基於 Windows 的系統的相容性。雖然 Kubernetes 允許主機名稱長度最多為 63 個字元,但使用 NetBIOS 的系統將主機名稱限制為 15 個字元或更少。
TLS 替代名稱
在伺服器 TLS 憑證上新增主機名稱或 IPv4/IPv6 位址作為主體替代名稱。
已授權叢集端點
已授權叢集端點可用於直接存取 Kubernetes API 伺服器,而無需透過 Rancher 進行通訊。
在 Rancher 啟動的 Kubernetes 叢集中,預設啟用此功能,使用具有 controlplane 角色的節點的 IP 和預設 Kubernetes 自簽名憑證。
有關已授權叢集端點如何工作以及為何使用它的更多詳細資訊,請參閱架構章節。
我們建議將負載平衡器與已授權叢集端點一起使用。有關詳細資訊,請參閱建議架構章節。
堆疊偏好
為叢集選擇網路堆疊。此選項影響:
- 用於元件(如 Calico、etcd、kube-apiserver、kube-scheduler、kube-controller-manager 和 kubelet)的健康和就緒探測的位址。
- 已授權叢集端點的
authentication-token-webhook-config-file中的伺服器 URL。 - 快照還原期間 etcd 的
advertise-client-urls設定。
選項為 ipv4、ipv6、dual:
- 當設定為
ipv4時,叢集使用127.0.0.1 - 當設定為
ipv6時,叢集使用[::1] - 當設定為
dual時,叢集使用localhost
堆疊偏好必須與叢集的網路配置匹配:
- 對於僅 IPv4 叢集,設定為
ipv4 - 對於僅 IPv6 叢集,設定為
ipv6 - 對於雙堆疊叢集,設定為
dual
確保環回位址配置正確對於成功的叢集佈建至關重要。 有關更多資訊,請參閱節點要求頁面。
登錄檔
選擇要從中拉取 Rancher 映像的映像倉庫。有關更多詳細資訊和配置選項,請參閱 RKE2 文件。
升級策略
控制平面並發
選擇 可以同時升級多少個節點。可以是固定數量或百分比。
Worker 並發
選擇可以同時升級多少個節點。可以是固定數量或百分比。
清空節點(控制平面)
在升級之前從節點中移除所有 pod 的選項。
清空節點(Worker 節點)
在升級之前從節點中移除所有 pod 的選項。
進階
為不同節點設定 kubelet 選項的選項。有關可用選項,請參閱 Kubernetes 文件。
叢集配置檔案參考
在 YAML 中編輯叢集允許你設定 RKE2 安裝中可用的選項,包括已經在 Rancher UI 中的配置選項中列出的選項,以及設定 Rancher 特定的參數。
叢集配置檔案範例片段
apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
cloudCredentialSecretName: cattle-global-data:cc-s879v
kubernetesVersion: v1.25.12+rke2r1
localClusterAuthEndpoint: {}
rkeConfig:
additionalManifest: ""
chartValues:
rke2-calico: {}
etcd:
snapshotRetention: 5
snapshotScheduleCron: 0 */5 * * *
machineGlobalConfig:
cni: calico
disable-kube-proxy: false
etcd-expose-metrics: false
profile: null
kube-apiserver-arg:
- audit-policy-file=/etc/rancher/rke2/user-audit-policy.yaml
- audit-log-path=/etc/rancher/rke2/user-audit.logs
machinePools:
- controlPlaneRole: true
etcdRole: true
machineConfigRef:
kind: Amazonec2Config
name: nc-test-pool1-pwl5h
name: pool1
quantity: 1
unhealthyNodeTimeout: 0s
workerRole: true
machineSelectorConfig:
- config:
protect-kernel-defaults: false
machineSelectorFiles:
- fileSources:
- configMap:
name: ''
secret:
name: audit-policy
items:
- key: audit-policy
path: /etc/rancher/rke2/user-audit-policy.yaml
machineLabelSelector:
matchLabels:
rke.cattle.io/control-plane-role: 'true'
registries: {}
upgradeStrategy:
controlPlaneConcurrency: "1"
controlPlaneDrainOptions:
deleteEmptyDirData: true
enabled: true
gracePeriod: -1
ignoreDaemonSets: true
timeout: 120
workerConcurrency: "1"
workerDrainOptions:
deleteEmptyDirData: true
enabled: true
gracePeriod: -1
ignoreDaemonSets: true
timeout: 120
additionalManifest
指定要傳遞到控制平面節點的其他清單。
值為字串,將放置在目標節點上的路徑 /var/lib/rancher/rke2/server/manifests/rancher/addons.yaml。
範例:
additionalManifest: |-
apiVersion: v1
kind: Namespace
metadata:
name: name-xxxx
如果你想要自訂系統圖表,你應該使用如下所述的 chartValues 欄位。
替代方案,例如使用 HelmChartConfig 透過 additionalManifest 自訂系統圖表,可能會因為對同一圖表有多個 HelmChartConfig 而導致意外行為。
chartValues
指定 RKE2 安裝的系統圖表的值。
有關 RKE2 如何管理打包元件的更多資訊,請參閱 RKE2 文件。
範例:
chartValues:
chart-name:
key: value
machineGlobalConfig
指定 RKE2 配置。在此處所做的任何配置更改都將應用於每個節點。獨立版本的 RKE2 中可用的配置選項可以在此處應用。
範例:
machineGlobalConfig:
etcd-arg:
- key1=value1
- key2=value2
有一些配置選項在透過 Rancher 佈建時無法更改:
- data-dir(保存狀態的資料夾),預設為
/var/lib/rancher/rke2。
為了更容易事先將檔案放在節點上,Rancher 期望配置中包含以下值,而 RKE2 期望將值輸入為檔案路徑:
- audit-policy-file
- cloud-provider-config
- private-registry
Rancher 將檔案傳遞到目標節點中的路徑 /var/lib/rancher/rke2/etc/config-files/<option>,並在 RKE2 伺服器中設定適當的選項。
範例:
apiVersion: provisioning.cattle.io/v1
kind: Cluster
spec:
rkeConfig:
machineGlobalConfig:
audit-policy-file:
apiVersion: audit.k8s.io/v1
kind: Policy
rules:
- level: RequestResponse
resources:
- group: ""
resources:
- pods
machineSelectorConfig
machineSelectorConfig 與 machineGlobalConfig 相同,只是可以使用配置指定標籤選擇器。配置將僅應用於與提供的標籤選擇器匹配的節點。
允許多個 config 條目,每個條目指定自己的 machineLabelSelector。使用者可以指定 matchExpressions、matchLabels,兩者都指定,或兩者都不指定。省略此欄位的 machineLabelSelector 部分與將配置放在 machineGlobalConfig 部分中具有相同的效果。
範例:
machineSelectorConfig
- config:
config-key: config-value
machineLabelSelector:
matchExpressions:
- key: example-key
operator: string # Valid operators are In, NotIn, Exists and DoesNotExist.
values:
- example-value1
- example-value2
matchLabels:
key1: value1
key2: value2