配置选项
本页面重点介绍首次设置 K3s 时常用的选项。有关更深入的介绍,请参考关于 高级选项和配置 的文档以及 server 和 agent 命令文档。
使用安装脚本进行配置
如 快速入门指南 中所述,您可以使用 https://get.k3s.io 提供的安装脚本将 K3s 作为系统服务安装在 systemd 和 openrc 基于的系统上。
您可以结合使用 INSTALL_K3S_EXEC
、K3S_
环境变量和命令标志将配置传递给服务配置。带前缀的环境变量、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 文件中表示为 true
或 false
。
也可以同时使用配置文件和 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
- 启用调试日志记录