跳至主要内容

配置选项

本页面重点介绍首次设置 K3s 时常用的选项。有关更深入的介绍,请参考关于 高级选项和配置 的文档以及 serveragent 命令文档。

使用安装脚本进行配置

快速入门指南 中所述,您可以使用 https://get.k3s.io 提供的安装脚本将 K3s 作为系统服务安装在 systemd 和 openrc 基于的系统上。

您可以结合使用 INSTALL_K3S_EXECK3S_ 环境变量和命令标志将配置传递给服务配置。带前缀的环境变量、INSTALL_K3S_EXEC 值和尾随的 shell 参数都会被持久保存到服务配置中。安装后,可以通过编辑环境文件、编辑服务配置或简单地使用新选项重新运行安装程序来更改配置。

为了说明这一点,以下命令都将导致相同的行为,即注册一个没有 flannel 且带有令牌的服务器

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server" sh -s - --flannel-backend none --token 12345
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --flannel-backend none" K3S_TOKEN=12345 sh -s -
curl -sfL https://get.k3s.io | K3S_TOKEN=12345 sh -s - server --flannel-backend none
# server is assumed below because there is no K3S_URL
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--flannel-backend none --token 12345" sh -s -
curl -sfL https://get.k3s.io | sh -s - --flannel-backend none --token 12345

在注册代理时,以下命令都会导致相同的行为

curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent --server https://k3s.example.com --token mypassword" sh -s -
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent" K3S_TOKEN="mypassword" sh -s - --server https://k3s.example.com
curl -sfL https://get.k3s.io | K3S_URL=https://k3s.example.com sh -s - agent --token mypassword
curl -sfL https://get.k3s.io | K3S_URL=https://k3s.example.com K3S_TOKEN=mypassword sh -s - # agent is assumed because of K3S_URL

有关所有环境变量的详细信息,请参见 环境变量

注意

如果您在运行安装脚本时设置了配置,但在重新运行安装脚本时没有再次设置,则原始值将丢失。

配置文件 的内容不受安装脚本管理。如果您希望您的配置独立于安装脚本,则应使用配置文件,而不是将环境变量或参数传递给安装脚本。

使用二进制文件进行配置

如前所述,安装脚本主要负责配置 K3s 以作为服务运行。
如果您选择不使用脚本,您可以简单地从我们的 发布页面 下载二进制文件,将其放在您的路径上,然后执行它。这对于永久安装并不特别有用,但在执行不需要将 K3s 作为系统服务管理的快速测试时可能有用。

curl -Lo /usr/local/bin/k3s https://github.com/k3s-io/k3s/releases/download/v1.26.5+k3s1/k3s; chmod a+x /usr/local/bin/k3s

您可以通过设置 K3S_ 环境变量来传递配置

K3S_KUBECONFIG_MODE="644" k3s server

或命令标志

k3s server --write-kubeconfig-mode=644

K3s 代理也可以通过这种方式配置

k3s agent --server https://k3s.example.com --token mypassword

有关配置 K3s 服务器的详细信息,请参见 k3s server 文档
有关配置 K3s 代理的详细信息,请参见 k3s agent 文档
您也可以使用 --help 标志查看所有可用选项及其对应的环境变量列表。

匹配标志

在您的服务器节点上匹配关键标志非常重要。例如,如果您在主节点上使用标志 --disable servicelb--cluster-cidr=10.200.0.0/16,但在其他服务器节点上没有设置它,这些节点将无法加入。它们将打印错误,例如:failed to validate server configuration: critical configuration value mismatch. 有关必须在服务器节点上设置哪些标志的更多信息,请参见服务器配置文档(链接在上面)。

配置文件

版本门

v1.19.1+k3s1 起可用

除了使用环境变量和 CLI 参数配置 K3s 之外,K3s 还可以使用配置文件。

默认情况下,安装时将使用位于 /etc/rancher/k3s/config.yaml 的 YAML 文件中的值。

下面是一个基本 server 配置文件的示例

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

这等同于以下 CLI 参数

k3s server \
--write-kubeconfig-mode "0644" \
--tls-san "foo.local" \
--node-label "foo=bar" \
--node-label "something=amazing" \
--cluster-init

通常,CLI 参数映射到其相应的 YAML 键,可重复的 CLI 参数以 YAML 列表的形式表示。布尔标志在 YAML 文件中表示为 truefalse

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

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

多个配置文件

版本门

v1.21.0+k3s1 起可用

支持多个配置文件。默认情况下,配置文件从 /etc/rancher/k3s/config.yaml/etc/rancher/k3s/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

综合示例

以上所有选项都可以组合到一个示例中。

/etc/rancher/k3s/config.yaml 中创建一个 config.yaml 文件

token: "secret"
debug: true

然后使用环境变量和标志的组合运行安装脚本

curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" INSTALL_K3S_EXEC="server" sh -s - --flannel-backend none

或者,如果您已经安装了 K3s 二进制文件

K3S_KUBECONFIG_MODE="644" k3s server --flannel-backend none

这将导致一个带有以下配置的服务器

  • 具有 644 权限的 kubeconfig 文件
  • Flannel 后端设置为 none
  • 令牌设置为 secret
  • 启用调试日志记录