跳至主要内容

RKE2 叢集配置參考

本節涵蓋了 Rancher 中新建或現有 RKE2 Kubernetes 叢集可用的配置選項。

概述​

你可以透過以下兩種方式之一配置 Kubernetes 選項:

  • Rancher UI:使用 Rancher UI 選擇設定 Kubernetes 叢集時常用的自訂選項。
  • 叢集配置檔案:進階使用者可以建立 RKE2 配置檔案,而不是使用 Rancher UI 來選擇叢集的 Kubernetes 選項。使用配置檔案可以讓你設定 RKE2 安裝可用的許多其他選項。

在 Rancher UI 中編輯叢集​

Rancher UI 提供兩種編輯叢集的方式:

  1. 使用表單。
  2. 使用 YAML。

使用表單編輯叢集​

表單涵蓋了叢集最常需要的選項。

要編輯你的叢集,

  1. 點選 ☰ > Cluster Management。
  2. 前往你想要配置的叢集並點選 ⋮ > Edit Config。

在 YAML 中編輯叢集​

有關 YAML 中 RKE2 叢集可配置選項的完整參考,請參閱 RKE2 文件。

要使用 YAML 編輯你的叢集:

  1. 點選 ☰ > Cluster Management。
  2. 前往你想要配置的叢集並點選 ⋮ > Edit as YAML。
  3. 在 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

machineSelectorFiles​

備註

此功能在 Rancher v2.7.2 及更高版本中可用。

將檔案傳遞到節點,以便在啟動 RKE2 伺服器或代理程序之前可以將檔案放置到位。 檔案的內容從 secret 或 configmap 中擷取。目標節點由 machineLabelSelector 過濾。

範例 :

machineSelectorFiles:
- fileSources:
- secret:
items:
- key: example-key
path: path-to-put-the-file-on-nodes
permissions: 644 (optional)
hash: base64-encoded-hash-of-the-content (optional)
name: example-secret-name
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
- fileSources:
- configMap:
items:
- key: example-key
path: path-to-put-the-file-on-nodes
permissions: 644 (optional)
hash: base64-encoded-hash-of-the-content (optional)
name: example-configmap-name
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

secret 或 configmap 必須滿足以下要求:

  1. 它必須在 Cluster 物件所在的 fleet-default 命名空間中。
  2. 它必須具有註解 rke.cattle.io/object-authorized-for-clusters: cluster-name1,cluster-name2,這允許目標叢集使用它。
提示

Rancher Dashboard 提供了一個易於使用的表單來建立 secret 或 configmap。

範例:

apiVersion: v1
data:
audit-policy: >-
IyBMb2cgYWxsIHJlcXVlc3RzIGF0IHRoZSBNZXRhZGF0YSBsZXZlbC4KYXBpVmVyc2lvbjogYXVkaXQuazhzLmlvL3YxCmtpbmQ6IFBvbGljeQpydWxlczoKLSBsZXZlbDogTWV0YWRhdGE=
kind: Secret
metadata:
annotations:
rke.cattle.io/object-authorized-for-clusters: cluster1
name: name1
namespace: fleet-default