配置选项

配置文件

配置 RKE2 的主要方式是通过其配置文件。命令行参数和环境变量也可用,但 RKE2 作为 systemd 服务安装,因此这些不太容易利用。

默认情况下,RKE2 将使用位于 /etc/rancher/rke2/config.yaml 的 YAML 文件中的值启动。

RKE2 配置文件需要手动创建。您可以通过以特权用户身份运行 touch /etc/rancher/rke2/config.yaml 来完成此操作。如果在启动 RKE2 后更改配置,则必须重新启动服务以应用新配置。

以下是基本`server`配置文件的示例:

write-kubeconfig-mode: "0644"
tls-san:
  - "foo.local"
node-label:
  - "foo=bar"
  - "something=amazing"
debug: true

配置文件参数直接映射到 CLI 参数,可重复的 CLI 参数表示为 YAML 列表。布尔标志在YAML文件中表示为`true`或`false`。

下面展示了仅使用 CLI 参数的相同配置,以演示这一点:

rke2 server \
  --write-kubeconfig-mode "0644"    \
  --tls-san "foo.local"             \
  --node-label "foo=bar"            \
  --node-label "something=amazing"  \
  --debug

也可以同时使用配置文件和命令行参数。 在这些情况下,将从两个来源加载值,但命令行参数将优先。对于可重复的参数,例如`--node-label`,命令行参数将覆盖列表中的所有值。

最后,配置文件的位置可以通过 CLI 参数 --config FILE, -c FILE 或环境变量 $RKE2_CONFIG_FILE 更改。

多个配置文件

支持多个配置文件。默认情况下,配置文件按字母顺序从 /etc/rancher/rke2/config.yaml/etc/rancher/rke2/config.yaml.d/*.yaml 中读取。

默认情况下,将使用给定键找到的最后一个值。可以在键后附加一个``,将值附加到现有字符串或切片,而不是替换它。后续文件中此键的所有出现也将需要一个``以防止覆盖累积的值。

多个配置文件的示例如下:

# config.yaml
token: boop
node-label:
  - foo=bar
  - bar=baz


# config.yaml.d/test1.yaml
write-kubeconfig-mode: 600
node-taint:
  - alice=bob:NoExecute

# config.yaml.d/test2.yaml
write-kubeconfig-mode: 777
node-label:
  - other=what
  - foo=three
node-taint+:
  - charlie=delta:NoSchedule

这将导致最终配置为:

write-kubeconfig-mode: 777
token: boop
node-label:
  - other=what
  - foo=three
node-taint:
  - alice=bob:NoExecute
  - charlie=delta:NoSchedule

Kubelet 配置

版本门控

kubelet 配置文件的 drop-in 目录或配置文件(下文选项 1 和 2)仅在 v1.32 及以上版本中可用。对于较低的次要版本,您应该直接使用 kubelet 参数(以下选项 3)。

根据上游行为,kubelet 配置可以通过特定的 优先级顺序 以不同方式进行更改。

RKE2 使用默认的 kubelet 配置,该配置存储在 /var/lib/rancher/rke2/agent/etc/kubelet.conf.d/00-rke2-defaults.conf 下。如果您想更改默认配置参数,可以通过三种方式进行:

  1. (推荐)将配置文件放入 /var/lib/rancher/rke2/agent/etc/kubelet.conf.d/ 中。

  2. 通过使用标志 --kubelet-arg=config=$PATHTOFILE,其中 $PATHTOFILE 是包含 kubelet 配置参数的文件的路径(例如 /etc/rancher/rke2/kubelet.conf),或使用标志 --kubelet-arg=config-dir=$PATHTODIR,其中 $PATHTODIR 是包含 kubelet 配置参数文件的目录路径(例如 /etc/rancher/rke2/kubelet.conf.d)。

  3. 通过使用标志 --kubelet-arg=$FLAG,其中 $FLAG 是一个 kubelet 配置参数(例如 image-gc-high-threshold=100)。

遗留的 kubelet 日志标志

RKE2 支持额外的标志来配置 kubelet 日志,这些标志之前由 kubelet 本身支持。这些标志被 RKE2 拦截,并控制 RKE2 如何包装 kubelet 写入 stdout 和 stderr 的日志:

标志 类型 说明

logtostderr

布尔

控制日志消息是否仅写入 stderr(默认 false

alsologtostderr

布尔

控制日志消息是否除了写入指定的日志文件外,还写入 stderr(默认 false

stderrthreshold

字符串

此标志被 RKE2 拦截,但未使用(默认 FATAL

log-file

字符串

指定组件的日志消息应写入的绝对路径和文件名(默认 /var/lib/rancher/rke2/agent/logs/kubelet.log

log-file-max-size

整数

指定日志文件在旋转之前可以达到的最大大小(以兆字节为单位)(默认 50

配置 Linux 安装脚本

快速入门 中所述,您可以使用位于 https://get.rke2.io 的安装脚本将 RKE2 安装为服务。

此命令的最简单形式是以 root 用户身份或通过 sudo 运行,如下所示:

# curl -sfL https://get.rke2.io | sudo sh -
curl -sfL https://get.rke2.io | sh -

使用此方法安装 RKE2 时,可以使用以下环境变量来配置安装:

环境变量 说明

INSTALL_RKE2_VERSION

要从 GitHub 下载的 RKE2 版本。如果未指定,将尝试从 stable 通道下载最新版本。如果在 RPM 基础系统上安装且所需版本在 stable 通道中不存在,则还应设置 INSTALL_RKE2_CHANNEL

INSTALL_RKE2_TYPE

要创建的 systemd 服务类型,可以是 "server" 或 "agent",默认是 "server"。

INSTALL_RKE2_CHANNEL_URL

用于获取 RKE2 下载 URL 的通道 URL。默认值为 https://update.rke2.io/v1-release/channels

INSTALL_RKE2_CHANNEL

用于获取 RKE2 下载 URL 的通道。默认值为 stable。选项包括:stablelatesttesting

INSTALL_RKE2_METHOD

要使用的安装方法。默认情况下,在基于 RPM 的系统上 rpm,其他系统 tar

此安装脚本简单明了,将执行以下操作:

  1. 根据上述参数获取要安装的版本。如果未提供参数,将使用最新的官方版本。

  2. 确定并执行安装方法。有两种方法:rpm 和 tar。如果设置了 INSTALL_RKE2_METHOD 变量,将尊重该设置。否则,将在使用此软件包管理系统的操作系统上使用 rpm。在所有其他系统上,将使用 tar。在 Tar 包方法的情况下,脚本将简单地解压与所需版本相关的 Tar 包。在 rpm 的情况下,将设置一个 yum 储存库,并使用 yum 安装 rpm。

配置 Windows 安装脚本

Windows 支持需要选择 Calico 或 Flannel 作为 RKE2 集群的 CNI。

快速入门 中所述,您可以使用位于 https://github.com/rancher/rke2/blob/master/install.ps1 的安装脚本在 Windows Agent 节点上安装 RKE2。

此命令的最简单形式如下:

Invoke-WebRequest -Uri https://raw.githubusercontent.com/rancher/rke2/master/install.ps1 -Outfile install.ps1

使用此方法安装 Windows RKE2 代理时,可以传递以下参数以配置安装脚本:

SYNTAX

install.ps1 [[-Channel] <String>] [[-Method] <String>] [[-Type] <String>] [[-Version] <String>] [[-TarPrefix] <String>] [-Commit] [[-AgentImagesDir] <String>] [[-ArtifactPath] <String>] [[-ChannelUrl] <String>] [<CommonParameters>]

OPTIONS

-Channel           Channel to use for fetching RKE2 download URL (Default: "stable")
-Method            The installation method to use. Currently tar or choco installation supported. (Default: "tar")
-Type              Type of RKE2 service. Only the "agent" type is supported on Windows. (Default: "agent")
-Version           Version of RKE2 to download from Github
-TarPrefix         Installation prefix when using the tar installation method. (Default: `C:/usr/local` unless `C:/usr/local` is read-only or has a dedicated mount point, in which case `C:/opt/rke2` is used instead)
-Commit            (experimental/agent) Commit of RKE2 to download from temporary cloud storage. If set, this forces `--Method=tar`. Intended for development purposes only.
-AgentImagesDir    Installation path for airgap images when installing from CI commit. (Default: `C:/var/lib/rancher/rke2/agent/images`)
-ArtifactPath      If set, the install script will use the local path for sourcing the `rke2.windows-$SUFFIX` and `sha256sum-$ARCH.txt` files rather than the downloading the files from GitHub. Disabled by default.

其他 Windows 安装脚本使用示例

安装最新版本而不是稳定版本

Invoke-WebRequest -Uri https://raw.githubusercontent.com/rancher/rke2/master/install.ps1 -Outfile install.ps1
./install.ps1 -Channel Latest

使用 tar 安装方法安装最新版本

Invoke-WebRequest -Uri https://raw.githubusercontent.com/rancher/rke2/master/install.ps1 -Outfile install.ps1
./install.ps1 -Channel Latest -Method Tar

直接运行二进制文件

如前所述,安装脚本主要关注将 RKE2 配置为服务。如果您选择不使用脚本,您可以通过从我们的 发布页面 下载二进制文件,将其放置到您的路径中并执行来运行 RKE2。重要的命令包括:

命令 说明

rke2 server

运行 RKE2 管理服务器,这将启动 Kubernetes 控制平面组件,如 API 服务器、控制器管理器和调度器。仅支持 Linux。

rke2 agent

运行 RKE2 节点代理。这将使 RKE2 作为工作节点运行,启动 Kubernetes 节点服务 kubeletkube-proxy。支持 Linux 和 Windows。

rke2 --help

显示命令列表或某个命令的帮助信息。

更多信息

有关配置 RKE2 服务器的详细信息,请参阅 服务器配置参考

有关配置 RKE2 代理的详细信息,请参阅 代理配置参考

有关配置 RKE2 Windows 代理的详细信息,请参阅 Windows 代理配置参考