本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

管理打包组件

自动部署清单(AddOns)

在服务器节点上,/var/lib/rancher/k3s/server/manifests 中找到的任何文件将以类似于 kubectl apply 的方式自动部署到 Kubernetes,无论是在启动时还是在文件在磁盘上更改时。从此目录中删除文件不会从集群中删除相应的资源。

清单被跟踪为 AddOn 自定义资源,位于 kube-system 名称空间中。在应用清单文件时遇到的任何错误或警告可以通过在相应的 AddOn 上使用 kubectl describe 查看,或者通过使用 kubectl get event -n kube-system 查看该名称空间的所有事件,包括来自部署控制器的事件。

打包组件

K3s 附带了一些打包组件,这些组件通过清单目录作为附加组件进行部署:corednstraefiklocal-storagemetrics-server。嵌入式 servicelb 负载均衡器控制器没有清单文件,但出于历史原因,可以像 AddOn 一样被禁用。

打包组件的清单由 K3s 管理,不应被更改。每当 K3s 启动时,文件会被重新写入磁盘,以确保其完整性。

用户附加组件

您可以在清单目录中放置额外的文件,以作为 AddOn 进行部署。每个文件可以包含多个 Kubernetes 资源,以 --- YAML 文档分隔符分隔。有关在清单中组织资源的更多信息,请参见 Kubernetes 文档的 管理资源 部分。

文件命名要求

清单目录中每个文件的`AddOn`文件名是根据文件的基本名称生成的。 确保清单目录中的所有文件(或任何子目录中的文件)具有唯一的名称,并遵循 Kubernetes 对象命名限制。 还应注意不要与默认 K3s 打包组件使用的名称冲突,即使这些组件被禁用。

以下是一个错误示例,如果文件名包含下划线,将会报告该错误:

处理配置失败:无法处理 /var/lib/rancher/k3s/server/manifests/example_manifest.yaml: Addon.k3s.cattle.io "example_manifest" 无效:metadata.name:无效值:"example_manifest":一个小写的 RFC 1123 子域名必须由小写字母数字字符、'-' 或 '.' 组成,并且必须以字母数字字符开头和结尾(例如 'example.com',用于验证的正则表达式是 '[a-z0-9]([a-z0-9])?(\\.[a-z0-9]([-a-z0-9][a-z0-9])?)*')

如果您有多个服务器节点,并且在多个服务器上放置额外的 AddOn 清单,您有责任确保这些文件在各个节点之间保持同步。K3s 不会在节点之间同步 AddOn 内容,如果不同的服务器尝试部署冲突的清单,则无法保证正确的行为。

禁用清单

有两种方法可以禁用从清单目录中部署特定内容。

使用 --disable 标志

上述列出的打包组件的 AddOns,以及放置在 manifests 目录中的任何额外清单的 AddOns,可以使用 --disable 标志禁用。被禁用的 AddOns 会从集群中主动卸载,并且源文件会从 manifests 目录中去除。

例如,要禁用在新集群上部署 traefik,或要卸载它并从现有集群中去除清单,您可以使用 --disable=traefik 启动 K3s。可以通过用逗号分隔名称或重复标志来禁用多个项目。

使用 .skip 文件

对于 /var/lib/rancher/k3s/server/manifests 下的任何文件,您可以创建一个 .skip 文件,这将导致 K3s 忽略相应的清单。.skip 文件的内容无关紧要,只检查其存在。请注意,在 AddOn 已经创建后创建 .skip 文件不会删除或以其他方式修改它或它创建的资源;该文件将被简单地视为不存在。

例如,在第一次启动 K3s 之前,在清单目录中创建一个空的 traefik.yaml.skip 文件,将导致 K3s 跳过部署 traefik.yaml

$ ls /var/lib/rancher/k3s/server/manifests
ccm.yaml      local-storage.yaml  rolebindings.yaml  traefik.yaml.skip
coredns.yaml  traefik.yaml

$ kubectl get pods -A
NAMESPACE     NAME                                     READY   STATUS    RESTARTS   AGE
kube-system   local-path-provisioner-64ffb68fd-xx98j   1/1     Running   0          74s
kube-system   metrics-server-5489f84d5d-7zwkt          1/1     Running   0          74s
kube-system   coredns-85cb69466-vcq7j                  1/1     Running   0          74s

如果在创建 traefik.skip 文件之前已经部署了 Traefik,Traefik 将保持不变,并且在 K3s 升级时不会受到未来更新的影响。

Helm AddOns

有关通过自动部署清单管理 Helm 图表的信息,请参阅关于 Helm. 的部分。