打包组件管理
自动部署清单 (AddOns)
在服务器节点上,/var/lib/rancher/k3s/server/manifests
中找到的任何文件都将以类似于 kubectl apply
的方式自动部署到 Kubernetes,在启动时和磁盘上的文件更改时都会部署。从该目录中删除文件不会删除集群中相应的资源。
清单在 kube-system
命名空间中作为 AddOn
自定义资源进行跟踪。应用清单文件时遇到的任何错误或警告都可以通过在相应的 AddOn
上使用 kubectl describe
来查看,或者通过使用 kubectl get event -n kube-system
来查看该命名空间的所有事件,包括部署控制器产生的事件。
打包组件
K3s 带有一些打包组件,这些组件作为 AddOns 通过清单目录部署:coredns
、traefik
、local-storage
和 metrics-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的部分。