跳至主要内容

打包组件管理

自动部署清单 (AddOns)

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

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

打包组件

K3s 带有一些打包组件,这些组件作为 AddOns 通过清单目录部署:corednstraefiklocal-storagemetrics-server。嵌入式 servicelb LoadBalancer 控制器没有清单文件,但出于历史原因,可以将其禁用,就像禁用 AddOn 一样。

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

用户 AddOns

您可以在清单目录中放置其他文件以部署为 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]*[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的部分。