RKE2 集群配置参考

本文介绍 Rancher 中可用于新的或现有的 RKE2 Kubernetes 集群的配置选项。

概述

你可以通过以下两种方式之一来配置 Kubernetes 选项:

  • Rancher UI:使用 Rancher UI 来选择设置 Kubernetes 集群时常用的自定义选项。
  • 集群配置文件:高级用户可以创建一个 RKE2 配置文件,而不是使用 Rancher UI 来为集群选择 Kubernetes 选项。配置文件让你能设置更多可用于 RKE2 的其他安装选项

在 Rancher UI 中使用表单编辑集群

要编辑你的集群:

  1. 在左上角,单击 ☰ > 集群管理
  2. 转到要配置的集群,然后单击 ⋮ > 编辑配置

使用 YAML 编辑集群

高级用户可以创建一个 RKE2 配置文件,而不是使用 Rancher UI 来为集群选择 Kubernetes 选项。配置文件可以让你使用 YAML 来指定 RKE2 安装中可用的任何选项。

要直接从 Rancher UI 中编辑 RKE2 配置文件:

  1. 点击 ☰ > 集群管理
  2. 转到你要配置的集群,然后单击 ⋮ > 以 YAML 文件编辑
  3. 编辑 rkeConfig 参数下的 RKE 选项。

Rancher UI 中的配置选项

RKE2 集群配置参考 - 图1提示

一些高级配置选项没有在 Rancher UI 表单中开放,但你可以通过在 YAML 中编辑 RKE2 集群配置文件来启用这些选项。有关 YAML 中 RKE2 Kubernetes 集群的可配置选项的完整参考,请参阅 RKE2 文档

主机池

本小节介绍了通用的主机池配置。对于针对特定基础设施提供商的配置,请参阅以下页面:

池名称

主机池的名称。

主机数量

池中的主机数。

角色

将 etcd、controlplane 和 worker 角色分配给节点的选项。

高级配置

自动替换

如果节点无法访问的持续时间达到该值,则会被自动删除和替换。

删除前清空

通过在删除节点之前驱逐所有 pod 来清空节点。

Kubernetes 节点标签

标签(label)添加到节点,让对象选择更加简便。

有关标签语法的详细信息,请参阅 Kubernetes 文档

污点

污点(taint)添加到节点,防止 pod 被调度或在节点上执行(除非 pod 具有匹配的容忍度)。

集群配置

基本信息

Kubernetes 版本

这指的是集群节点上安装的 Kubernetes 版本。Rancher 基于 hyperkube 打包了自己的 Kubernetes 版本。

有关更多详细信息,请参阅升级 Kubernetes

容器网络提供商

这指的是集群使用的网络提供商

RKE2 集群配置参考 - 图2警告

启动集群后,你无法更改网络提供商。由于 Kubernetes 不允许在网络提供商之间切换,因此,请谨慎选择要使用的网络提供商。使用网络提供商创建集群后,如果你需要更改网络提供商,你将需要拆除整个集群以及其中的所有应用。

Rancher 与以下开箱即用的网络提供商兼容:

* 在 Cilium CNI 中使用项目网络隔离时,你可以开启跨节点入口路由。详情请参见 CNI 提供商文档

有关不同网络提供商以及如何配置它们的更多详细信息,请查阅 RKE2 文档

双栈网络

所有 CNI 网络插件都支持双栈网络。要在双栈模式下配置 RKE2,请为你的集群 CIDR 和/或 Service CIDR 设置有效的 IPv4/IPv6 CIDR。

额外配置

使用 ciliummultus,cilium 作为容器网络接口提供商时,请确保启用 IPv6 支持选项。

云提供商

你可以配置 Kubernetes 云提供商。如果你想在 Kubernetes 中使用动态配置的卷和存储,你通常需要选择特定的云提供商。例如,如果你想使用 Amazon EBS,则需要选择 aws 云提供商。

RKE2 集群配置参考 - 图3备注

如果你要使用的云提供商未作为选项列出,你需要使用配置文件选项来配置云提供商。请参考本文档来了解如何配置云提供商。

默认 Pod 安全策略

为集群选择默认的 pod 安全策略。请参阅 RKE2 文档来了解每个可用策略的规范。

Worker CIS 配置文件

选择一个 CIS benchmark 来验证系统配置。

项目网络隔离

如果你的网络提供商允许项目网络隔离,你可以选择启用或禁用项目间的通信。

如果你使用支持执行 Kubernetes 网络策略的 RKE2 网络插件(例如 Canal),则可以使用项目网络隔离。

CoreDNS

默认情况下,CoreDNS 会安装为默认 DNS 提供程序。如果未安装 CoreDNS,则必须自己安装备用 DNS 提供程序。有关其他 CoreDNS 配置,请参阅 RKE2 文档

NGINX Ingress

如果你想使用高可用性配置来发布应用,并且你使用没有原生负载均衡功能的云提供商来托管主机,请启用此选项以在集群中使用 NGINX Ingress。有关其他配置选项,请参阅 RKE2 文档

有关其他配置选项,请参阅 RKE2 文档

Metrics Server

这是启用或禁用 Metrics Server 的选项。

每个能够使用 RKE2 启动集群的云提供商都可以收集指标并监控你的集群节点。如果启用此选项,你可以从你的云提供商门户查看你的节点指标。

附加配置

集群启动时将应用的其他 Kubernetes 清单,会作为附加组件来管理。有关详细信息,请参阅 RKE2 文档

Agent 环境变量

Rancher agent 设置环境变量的选项。你可以使用键值对设置环境变量。有关详细信息,请参阅 RKE2 文档

etcd

自动快照

启用或禁用定期 etcd 快照的选项。如果启用,用户可以配置快照的频率。有关详细信息,请参阅 RKE2 文档。请注意,如果使用 RKE2,快照会存储在每个 etcd 节点上,这与 RKE1 不同(RKE1 每个集群只存储一个快照)。

指标

选择向公众公开或仅在集群内公开 etcd 指标的选项。

网络

集群 CIDR

用于 pod IP 的 IPv4 和/或 IPv6 网络 CIDR(默认:10.42.0.0/16)。

双栈网络

要配置双栈模式,请输入有效的 IPv4/IPv6 CIDR。例如 10.42.0.0/16,2001:cafe:42:0::/56

使用 ciliummultus,cilium 作为容器网络接口提供商时,你需要进行附加配置

Service CIDR

用于 Service IP 的 IPv4/IPv6 网络 CIDR(默认:10.43.0.0/16)。

双栈网络

要配置双栈模式,请输入有效的 IPv4/IPv6 CIDR。例如 10.42.0.0/16,2001:cafe:42:0::/56

使用 ciliummultus,cilium 作为容器网络接口提供商时,你需要进行附加配置

集群 DNS

用于 coredns 服务的 IPv4 集群 IP。应该在你的 service-cidr 范围内(默认:10.43.0.10)。

集群域名

选择集群的域。默认值为 cluster.local

NodePort 服务端口范围

更改可用于 NodePort 服务的端口范围的选项。默认值为 30000-32767

截断主机名

将主机名截断为 15 个或更少字符。该字段只能在集群初始创建时设置。创建集群后,你无法再启用或禁用 15 个字符的限制。

此设置仅影响配置了机器的集群。由于自定义集群在创建节点时设置主机名(发生在 Rancher 之外),因此该字段不限制自定义集群的主机名长度。

截断集群中的主机名可提高与基于 Windows 的系统的兼容性。虽然 Kubernetes 允许最长的主机名长度为 63 个字符,但使用 NetBIOS 的系统将主机名限制为 15 个字符之内。

TLS 可选名称

在服务器 TLS 证书上添加其他主机名或 IPv4/IPv6 地址作为 Subject Alternative Name。

授权集群端点

授权集群端点(ACE)可用于直接访问 Kubernetes API server,而无需通过 Rancher 进行通信。

在 Rancher 启动的 Kubernetes 集群中,它默认启用,使用具有 controlplane 角色的节点的 IP 和默认的 Kubernetes 自签名证书。

有关授权集群端点的工作原理以及使用的原因,请参阅架构介绍

我们建议使用具有授权集群端点的负载均衡器。有关详细信息,请参阅推荐的架构

镜像仓库

选择要从中拉取 Rancher 镜像的镜像仓库。有关更多详细信息和配置选项,请参阅 RKE2 文档

升级策略

controlplane 并发

选择可以同时升级多少个节点。可以是固定数字或百分比。

Worker 并发

选择可以同时升级多少个节点。可以是固定数字或百分比。

清空节点(controlplane)

在升级之前从节点中删除所有 pod 的选项。

清空节点(worker 节点)

在升级之前从节点中删除所有 pod 的选项。

高级配置

为不同节点设置 kubelet 选项。有关可用选项,请参阅 Kubernetes 文档

集群配置文件参考

高级用户可以创建一个配置文件,而不是使用 Rancher UI 来为集群选择 Kubernetes 选项。配置文件允许你为 RKE2 设置可用的选项,其中包括已经在 Rancher UI 配置选项中列出的选项以及 Rancher 特定的参数。

集群配置文件片段示例

  1. spec:
  2. cloudCredentialSecretName: cattle-global-data:cc-s879v
  3. kubernetesVersion: v1.23.6+rke2r2
  4. localClusterAuthEndpoint: {}
  5. rkeConfig:
  6. chartValues:
  7. rke2-calico: {}
  8. etcd:
  9. snapshotRetention: 5
  10. snapshotScheduleCron: 0 */5 * * *
  11. machineGlobalConfig:
  12. cni: calico
  13. disable-kube-proxy: false
  14. etcd-expose-metrics: false
  15. profile: null
  16. machinePools:
  17. - controlPlaneRole: true
  18. etcdRole: true
  19. machineConfigRef:
  20. kind: Amazonec2Config
  21. name: nc-test-pool1-pwl5h
  22. name: pool1
  23. quantity: 1
  24. unhealthyNodeTimeout: 0s
  25. workerRole: true
  26. machineSelectorConfig:
  27. - config:
  28. protect-kernel-defaults: false
  29. registries: {}
  30. upgradeStrategy:
  31. controlPlaneConcurrency: "1"
  32. controlPlaneDrainOptions:
  33. deleteEmptyDirData: true
  34. enabled: true
  35. gracePeriod: -1
  36. ignoreDaemonSets: true
  37. timeout: 120
  38. workerConcurrency: "1"
  39. workerDrainOptions:
  40. deleteEmptyDirData: true
  41. enabled: true
  42. gracePeriod: -1
  43. ignoreDaemonSets: true
  44. timeout: 120

chartValues

此选项用于为 RKE2/K3s 安装的 System Chart 指定值。

示例:

  1. chartValues:
  2. chart-name:
  3. key: value

machineGlobalConfig

RKE2/K3s 配置嵌套在 machineGlobalConfig 参数下。在这里所做的任何配置更改都将应用到每个节点。你可以在此处应用RKE2 的独立版本中可用的配置选项。

示例:

  1. machineGlobalConfig:
  2. etcd-arg:
  3. - key1=value1
  4. - key2=value2

machineSelectorConfig

此参数与 machineGlobalConfig 相同,只是可以在配置中指定 label 选择器。该配置仅应用于与标签选择器匹配的节点。

允许多个 config 条目,可以为每个条目指定各自的 machineLabelSelector。用户可以指定 matchExpressionsmatchLabels、指定二者或都不指定。如果你省略了 machineLabelSelector,则与将 config 放入 machineGlobalConfig 的效果相同。

示例:

  1. machineSelectorConfig
  2. - config:
  3. config-key: config-value
  4. machineLabelSelector:
  5. matchExpressions:
  6. - key: example-key
  7. operator: string # 有效的运算符:In、NotIn、Exists 和 DoesNotExist
  8. values:
  9. - example-value1
  10. - example-value2
  11. matchLabels:
  12. key1: value1
  13. key2: value2