|
本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。 |
配置选项
使用安装脚本进行配置
如 快速入门指南 中所述,您可以使用位于 https://get.k3s.io 的安装脚本在基于 systemd 和 openrc 的系统上安装 K3s 作为服务。
您可以使用 INSTALL_K3S_EXEC、K3S_ 环境变量和命令标志的组合将配置传递给服务配置。
带前缀的环境变量、INSTALL_K3S_EXEC 值和尾随的外壳参数都将保留到服务配置中。
安装后,可以通过编辑环境文件、编辑服务配置或简单地使用新选项重新运行安装程序来更改配置。
对于 SUSE® Rancher Prime: K3s,您必须使用 `INSTALL_K3S_ARTIFACT_URL`指向 主工件 URL 的。
为了说明这一点,以下命令都将导致相同的行为,即在没有 flannel 的情况下注册服务器并使用令牌:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_EXEC="server" sh -s - --flannel-backend none --token 12345
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_EXEC="server --flannel-backend none" K3S_TOKEN=12345 sh -s -
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s 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_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_EXEC="--flannel-backend none --token 12345" sh -s -
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s sh -s - --flannel-backend none --token 12345
在注册代理时,以下命令都将导致相同的行为:
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_EXEC="agent --server https://k3s.example.com --token mypassword" sh -s -
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s INSTALL_K3S_EXEC="agent" K3S_TOKEN="mypassword" sh -s - --server https://k3s.example.com
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_URL=https://k3s.example.com sh -s - agent --token mypassword
curl -sfL https://get.k3s.io | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s K3S_URL=https://k3s.example.com K3S_TOKEN=mypassword sh -s - # agent is assumed because of K3S_URL
有关所有环境变量的详细信息,请参见 环境变量。
|
脚注
如果您在运行安装脚本时设置了配置,但在重新运行安装脚本时未再次设置,则原始值将丢失。 配置文件 的内容不由安装脚本管理。 如果您希望您的配置独立于安装脚本,您应该使用配置文件,而不是将环境变量或参数传递给安装脚本。 |
使用二进制文件进行配置
安装脚本主要关注将 K3s 配置为系统服务。如果您选择不使用安装脚本,您可以通过从我们的 GitHub 发布页面 下载二进制文件,将其放置到您的路径中并执行来运行 K3s。这对于永久安装并不是特别有用,但在进行不值得将 K3s 管理为系统服务的快速测试时可能会有用。
curl -Lo /usr/local/bin/k3s <PRIME-ARTIFACTS-URL>/k3s/v1.35.1%2Bk3s1/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.`请参阅服务器配置文档(上面链接)以获取有关哪些标志必须在服务器节点上相同设置的更多信息。 |
使用容器镜像的配置
K3s容器镜像(https://hub.docker.com/r/rancher/k3s[`docker.io/rancher/k3s`])支持与GitHub发布页面上可用的二进制文件相同的配置方法。
配置文件
除了使用环境变量和CLI参数配置K3s外,K3s还可以使用配置文件。无论K3s如何安装或执行,配置文件都会被加载。
默认情况下,配置从`/etc/rancher/k3s/config.yaml`加载,插入式文件按字母顺序从`/etc/rancher/k3s/config.yaml.d/*.yaml`加载。 此路径可以通过`--config` CLI标志或`K3S_CONFIG_FILE`环境变量进行配置。 当覆盖默认配置文件名称时,插入式目录路径也会被修改。
以下是基本`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`。
也可以同时使用配置文件和命令行参数。在这些情况下,将从两个来源加载值,但命令行参数将优先。对于可重复的参数,例如`--node-label`,命令行参数将覆盖列表中的所有值。
值合并行为
如果在多个文件中存在,给定键的最后一个找到的值将被使用。可以在键后附加一个``,将值附加到现有字符串或切片,而不是替换它。后续文件中此键的所有出现也将需要一个``以防止覆盖累积的值。
从多个配置文件合并的值示例如下:
token: boop
node-label:
- foo=bar
- bar=baz
write-kubeconfig-mode: 600
node-taint:
- alice=bob:NoExecute
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 | INSTALL_K3S_ARTIFACT_URL=<PRIME-ARTIFACTS-URL>/k3s 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`
-
启用调试日志记录
Kubelet配置文件
Kubernetes 支持通过 CLI 标志和配置文件配置 kubelet。通过 CLI 标志配置 kubelet 已被长期弃用,但仍然支持,并且是设置基本选项的最简单方法。某些高级 kubelet 配置只能通过配置文件设置。有关更多信息,请参阅 Kubernetes 文档中的 kubelet 和 通过配置文件设置 kubelet 参数。
对 kubelet 的插入式文件或配置文件(下文的选项 1 和 2)的支持仅在 v1.32 及以上版本中可用。对于较旧的版本,您应该直接使用 kubelet 参数(以下选项 3)。
K3s 使用默认的 kubelet 配置,该配置存储在 /var/lib/rancher/k3s/agent/etc/kubelet.conf.d/00-k3s-defaults.conf 下。如果您想更改默认配置参数,可以通过三种方式进行:
-
将插入式文件放置在
/var/lib/rancher/k3s/agent/etc/kubelet.conf.d/(推荐)。 -
通过使用标志
--kubelet-arg=config=$PATHTOFILE,其中$PATHTOFILE是包含 kubelet 配置参数的文件的路径(例如/etc/rancher/k3s/kubelet.conf),或使用标志--kubelet-arg=config-dir=$PATHTODIR,其中$PATHTODIR是包含 kubelet 配置参数文件的目录路径(例如/etc/rancher/k3s/kubelet.conf.d)。 -
通过使用标志
--kubelet-arg=$FLAG,其中$FLAG是一个 kubelet 配置参数(例如image-gc-high-threshold=100)。
在混合使用 kubelet CLI 标志和配置文件插入式文件时,请注意 优先级顺序。