RKE 叢集配置參考
RKE1 已達到生命週期結束,不再受支援。對於新的部署,請使用 RKE2 或 K3s。
當 Rancher 安裝 Kubernetes 時,它使用 RKE 或 RKE2 作為 Kubernetes 發行版。
本節涵蓋了 Rancher 中新建或現有 RKE Kubernetes 叢集可用的配置選項。
概述
你可以透過以下兩種方式之一配置 Kubernetes 選項:
- Rancher UI:使用 Rancher UI 選擇設定 Kubernetes 叢集時常用的自訂選項。
- 叢集配置檔案:進階使用者可以建立 RKE 配置檔案,而不是使用 Rancher UI 來選擇叢集的 Kubernetes 選項。使用配置檔案允許你透過在 YAML 中指定來設定 RKE 安裝中可用的任何選項,但 system_images 配置除外。
RKE 叢集配置選項嵌套在 rancher_kubernetes_engine_config 指令下。有關更多資訊,請參閱叢集配置檔案章節。
在 RKE 啟動的叢集中,你可以編輯以下任何剩餘選項。
有關 RKE 配置檔案語法的範例,請參閱 RKE 文件。
Rancher UI 中的表單不包括配置 RKE 的所有進階選項。有關 YAML 中 RKE Kubernetes 叢集可配置選項的完整參考,請參閱 RKE 文件。
在 Rancher UI 中使用表單編輯叢集
要編輯你的叢集,
- 在左上角,點選 ☰ > Cluster Management。
- 前往你想要配置的叢集並點選 ⋮ > Edit Config。
使用 YAML 編輯叢集
進階使用者可以建立 RKE 配置檔案,而不是使用 Rancher UI 來選擇叢集的 Kubernetes 選項。使用配置檔案允許你透過在 YAML 中指定來設定 RKE 安裝中可用的任何選項,但 system_images 配置除外。
RKE 叢集(也稱為 RKE1 叢集)的編輯方式與 RKE2 和 K3s 叢集不同。
要直接從 Rancher UI 編輯 RKE 配置檔案,
- 點選 ☰ > Cluster Management。
- 前往你想要配置的 RKE 叢集。點選並點選 ⋮ > Edit Config。這將帶你到 RKE 配置表單。注意:由於 Rancher 2.6 中的叢集佈建發生了變化,⋮ > Edit as YAML 可用於配置 RKE2 叢集,但不能用於編輯 RKE1 配置。
- 在配置表單中,向下捲動並點選 Edit as YAML。
- 在
rancher_kubernetes_engine_config指令下編輯 RKE 選項。
Rancher UI 中的配置選項
一些進階配置選項未在 Rancher UI 表單中公開,但可以透過在 YAML 中編輯 RKE 叢集配置檔案來啟用。有關 YAML 中 RKE Kubernetes 叢集可配置選項的完整參考,請參閱 RKE 文件。
Kubernetes 版本
安裝在叢集節點上的 Kubernetes 版本。Rancher 根據 hyperkube 打包自己的 Kubernetes 版本。
有關更多詳細資訊,請參閱升級 Kubernetes。
網路提供者
叢集使用的網路提供者。有關不同網路提供者的更多詳細資訊,請查看我們的網路常見問題。
啟動叢集後,你無法更改網路提供者。因此,請仔細選擇要使用的網路提供者,因為 Kubernetes 不允許在網路提供者之間切換。一旦使用網路提供者建立了叢集,更改網路提供者將需要你拆除整個叢集及其所有應用程式。
開箱即用,Rancher 與以下網路提供者相容:
Weave 已棄用,不再建議用於新部署。
當選擇 Weave 作為網路提供者時,Rancher 將透過生成隨機密碼自動啟用加密。如果你想手動指定密碼,請參閱如何使用配置檔案配置叢集以及 Weave 網路外掛選項。
專案網路隔離
如果你的網路提供者允許專案網路隔離,你可以選擇啟用或停用專案間通訊。
如果你使用任何支援強制執行 Kubernetes 網路策略的 RKE 網路外掛程式(例如 Canal 或 Cisco ACI 外掛程式),則可以使用專案網路隔離。
Kubernetes 雲端提供者
你可以配置 Kubernetes 雲端提供者。如果你想在 Kubernetes 中使用動態佈建的卷和儲存,通常你必須選擇特定的雲端提供者才能使用它。例如,如果你想使用 Amazon EBS,則需要選擇 aws 雲端提供者。
如果你想使用的雲端提供者未列為選項,則需要使用配置檔案選項來配置雲端提供者。請參閱 RKE 雲端提供者文件以了解如何配置雲端提供者。
私有登錄檔
叢集級私有登錄檔配置僅用於佈建叢集。
在 Rancher 中設定私有登錄檔有兩種主要方式:透過全域檢視中的 Settings 標籤設定全域預設登錄檔,以及在叢集級設定中的進階選項中設定私有登錄檔。全域預設登錄檔旨在用於離線設定,用於不需要憑證的登錄檔。叢集級私有登錄檔旨在用於私有登錄檔需要憑證的所有設定。
如果你的私有登錄檔需要憑證,則需要透過編輯每個需要從登錄檔拉取映像的叢集的叢集選項將憑證傳遞給 Rancher。
私有登錄檔配置選項告訴 Rancher 從哪裡拉取將在叢集中使用的系統映像或附加元件映像。
- 系統映像是維護 Kubernetes 叢集所需的元件。
- 附加元件用於部署多個叢集元件,包括網路外掛程式、Ingress 控制器、DNS 提供者或 metrics server。
有關為在叢集佈建期間應用的元件設定私有登錄檔的更多資訊,請參閱 RKE 文件中的私有登錄檔。
Rancher v2.6 引入了為 RKE 叢集配置 ECR 登錄檔的能力。
已授權叢集端點
已授權叢集端點(ACE)可用於直接存取 Kubernetes API 伺服器,而無需透過 Rancher 進行通訊。
ACE 可用於透過 Rancher 佈建或註冊的 RKE、RKE2 和 K3s 叢集。它不適用於託管 Kubernetes 提供者中的叢集,例如 Amazon 的 EKS。
在 RKE2 和 K3s 叢集上必須手動設定 ACE。在 RKE 中,Rancher 啟動的 Kubernetes 叢集中預設啟用了 ACE,使用具有 controlplane 角色的節點的 IP 和預設 Kubernetes 自簽名憑證。
有關已授權叢集端點如何工作以及為何使用它的更多詳細資訊,請參閱架構章節。
我們建議將負載平衡器與已授權叢集端點一起使用。有關詳細資訊,請參閱建議架構章節。
節點池
有關使用 Rancher UI 在 RKE 叢集中設定節點池的資訊,請參閱此頁面。
NGINX Ingress
如果你想在高可用性配置中發布應用程式,並且你的節點託管在沒有原生負載平衡功能的雲端提供者上,請啟用此選項以在叢集內使用 NGINX Ingress。
Metrics Server 監控
啟用或停用 Metrics Server 的選項。
每個能夠使用 RKE 啟動叢集的雲端提供者都可以為叢集節點收集指標和監控。啟用此選項可從雲端提供者的入口網站查看節點指標。
你必須先配置現有的 Pod 安全策略,然後才能使用此選項。
節點上的 Docker 版本
配置節點是否允許執行 Rancher 未正式支援的 Docker 版本。
如果你選擇需要支援的 Docker 版本,Rancher 將停止在未安裝支援的 Docker 版本的節點上執行 Pod。
有關每個 Rancher 版本測試了哪些 Docker 版本的詳細資訊,請參閱支援維護條款。
Docker 根目錄
如果你新增到叢集的節點已配置了非預設的 Docker 根目錄(預設為 /var/lib/docker),請在此選項中指定正確的 Docker 根目錄。
預設 Pod 安全策略
如果你啟用 Pod Security Policy Support,請使用此下拉式選單選擇應用於叢集的 Pod 安全策略。
節點端口範圍
更改可用於 NodePort 服務的端口範圍的選項。預設值為 30000-32767。
定期 etcd 快照
啟用或停用定期 etcd 快照的選項。
Agent 環境變數
為 rancher agents 設定環境變數的選項。環境變數可以使用鍵值對設定。如果 rancher agent 需要使用代理與 Rancher 伺服器通訊,則可以使用 agent 環境變數設定 HTTP_PROXY、HTTPS_PROXY 和 NO_PROXY 環境變數。
更新 ingress-nginx
在 Kubernetes 1.16 之前建立的叢集將具有 OnDelete 的 ingress-nginx updateStrategy。使用 Kubernetes 1.16 或更新版本建立的叢集將具有 RollingUpdate。
如果 ingress-nginx 的 updateStrategy 為 OnDelete,你需要刪除這些 Pod 以獲得部署的正確版本。
叢集 Agent 配置和 Fleet Agent 配置
你可以為叢集 Agent 和叢集的 Fleet Agent 配置排程欄位和資源限制。你可以使用這些欄位自訂容忍度、親和性規則和資源需求。額外的容忍度會附加到預設容忍度和控制平面節點污點的清單中。如果你定義自訂親和性規則,它們將覆蓋全域預設親和性設定。定義資源需求會在先前沒有的地方設定請求或限制。
使用此選項,可以覆蓋或刪除叢集運作所需的規則。我們強烈建議不要刪除或覆蓋這些以及任何其他親和性規則,因為這可能會導致不必要的副作用:
cattle-cluster-agent的affinity.nodeAffinity.requiredDuringSchedulingIgnoredDuringExecutioncattle-cluster-agent的cluster-agent-default-affinityfleet-agent的fleet-agent-default-affinity
如果你將 Rancher 降級到 v2.7.4 或更低版本,你的更改將丟失,並且 agent 將在沒有你的自訂的情況下重新部署。當 Fleet agent 重新部署時,它將回退到使用其內建預設值。如果在降級期間 Fleet 版本沒有更改,則重新部署不會立即發生。
RKE 叢集配置檔案參考
進階使用者可以建立 RKE 配置檔案,而不是使用 Rancher UI 來選擇叢集的 Kubernetes 選項。使用配置檔案允許你設定 RKE 安裝中可用的任何選項,但 system_images 配置除外。使用 Rancher UI 或 API 建立叢集時不支援 system_images 選項。
有關 YAML 中 RKE Kubernetes 叢集可配置選項的完整參考,請參閱 RKE 文 件。
Rancher 中的配置檔案結構
RKE(Rancher Kubernetes Engine)是 Rancher 用於佈建 Kubernetes 叢集的工具。Rancher 的叢集配置檔案過去與 RKE 配置檔案具有相同的結構,但結構已更改,因此在 Rancher 中,RKE 叢集配置項目與非 RKE 配置項目分開。因此,叢集的配置需要嵌套在叢集配置檔案中的 rancher_kubernetes_engine_config 指令下。使用早期版本的 Rancher 建立的叢集配置檔案需要針對此格式進行更新。下面包含一個範例叢集配置檔案。
叢集配置檔案範例
#
# Cluster Config
#
docker_root_dir: /var/lib/docker
enable_cluster_alerting: false
enable_cluster_monitoring: false
enable_network_policy: false
local_cluster_auth_endpoint:
enabled: true
#
# Rancher Config
#
rancher_kubernetes_engine_config: # Your RKE template config goes here.
addon_job_timeout: 30
authentication:
strategy: x509
ignore_docker_version: true
#
# # Currently only nginx ingress provider is supported.
# # To disable ingress controller, set `provider: none`
# # To enable ingress on specific nodes, use the node_selector, eg:
# provider: nginx
# node_selector:
# app: ingress
#
ingress:
provider: nginx
kubernetes_version: v1.15.3-rancher3-1
monitoring:
provider: metrics-server
#
# If you are using calico on AWS
#
# network:
# plugin: calico
# calico_network_provider:
# cloud_provider: aws
#
# # To specify flannel interface
#
# network:
# plugin: flannel
# flannel_network_provider:
# iface: eth1
#
# # To specify flannel interface for canal plugin
#
# network:
# plugin: canal
# canal_network_provider:
# iface: eth1
#
network:
options:
flannel_backend_type: vxlan
plugin: canal
#
# services:
# kube-api:
# service_cluster_ip_range: 10.43.0.0/16
# kube-controller:
# cluster_cidr: 10.42.0.0/16
# service_cluster_ip_range: 10.43.0.0/16
# kubelet:
# cluster_domain: cluster.local
# cluster_dns_server: 10.43.0.10
#
services:
etcd:
backup_config:
enabled: true
interval_hours: 12
retention: 6
safe_timestamp: false
creation: 12h
extra_args:
election-timeout: 5000
heartbeat-interval: 500
gid: 0
retention: 72h
snapshot: false
uid: 0
kube_api:
always_pull_images: false
pod_security_policy: false
service_node_port_range: 30000-32767
ssh_agent_auth: false
windows_prefered_cluster: false
預設 DNS 提供者
下表指出預設部署哪個 DNS 提供者。有關如何配置不同 DNS 提供者的更多資訊,請參閱 RKE 文件中的 DNS 提供者。CoreDNS 只能在 Kubernetes v1.12.0 及更高版本上使用。
| Rancher 版本 | Kubernetes 版本 | 預設 DNS 提供者 |
|---|---|---|
| v2.2.5 及更高版本 | v1.14.0 及更高版本 | CoreDNS |
| v2.2.5 及更高版本 | v1.13.x 及更低版本 | kube-dns |
| v2.2.4 及更低版本 | 任何 | kube-dns |
YAML 中的 Rancher 特定參數
除了 RKE 配置檔案選項之外,還可以在配置檔案(YAML)中配置 Rancher 特定設定:
docker_root_dir
請參閱 Docker 根目錄。
enable_cluster_monitoring
啟用或停用叢集監控的選項。
enable_network_policy
啟用或停用專案網路隔離的選項。
如果你使用任 何支援強制執行 Kubernetes 網路策略的 RKE 網路外掛程式(例如 Canal 或 Cisco ACI 外掛程式),則可以使用專案網路隔離。
local_cluster_auth_endpoint
請參閱已授權叢集端點。
範例:
local_cluster_auth_endpoint:
enabled: true
fqdn: "FQDN"
ca_certs: |-
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
自訂網路外掛程式
你可以使用 RKE 的使用者定義的附加元件功能新增自訂網路外掛程式。你可以定義在部署 Kubernetes 叢集後要部署的任何附加元件。
有兩種方式可以指定附加元件:
有關如何透過編輯 cluster.yml 配置自訂網路外掛程式的範例,請參閱 RKE 文件。