RKE 支持在集群 yaml 文件中配置插件选项,这些插件用于部署多种集群组件,包括:

这些插件的镜像文件可以在system_images中找到。对于每个 Kubernetes 版本,都有与每个插件相关联的默认镜像版本,但这些镜像可以通过更改system_images中的镜像来覆盖。

注意:

  • 除了这些 RKE 已有的插件外,您在集群部署完成,部署自定义插件,详情请参考自定义插件
  • 从 v0.1.8 开始,如果插件名称相同,RKE 会执行更新。
  • 在 v0.1.8 之前,您需要运行kubectl edit命令更新插件。

关键插件与非关键插件

从 v0.1.7 开始,插件被分为关键插件与非关键插件:

  • 关键插件: 如果部署失败,会导致 RKE 报错。
  • 非关键插件: 如果部署失败,RKE 会在日志中记录一条告警信息,并继续部署其他插件。

当前只有网络插件关键插件,其他插件都是非关键插件

插件部署 job

RKE 使用 Kubernetes job 的方式部署插件。在某些情况下,部署插件的时间会比预期时间长。从 v0.1.7 开始,RKE 提供集群层级的addon_job_timeout选项,以检查 job 的连接是否超时,默认值为 30,单位是秒。

  1. addon_job_timeout: 30

Add-on 位置

v0.2.3 或更新版本可用

组件nodeAffinity nodeSelectorTermsnodeSelectorTolerations
Calicobeta.kubernetes.io/os:NotIn:windowsnone- NoSchedule:Exists
- NoExecute:Exists
- CriticalAddonsOnly:Exists
Flannelbeta.kubernetes.io/os:NotIn:windowsnone- operator:Exists
Canalbeta.kubernetes.io/os:NotIn:windowsnone- NoSchedule:Exists
- NoExecute:Exists
- CriticalAddonsOnly:Exists
Weavebeta.kubernetes.io/os:NotIn:windowsnone- NoSchedule:Exists
- NoExecute:Exists
CoreDNSnode-role.kubernetes.io/worker:Existsbeta.kubernetes.io/os:linux- NoSchedule:Exists
- NoExecute:Exists
- CriticalAddonsOnly:Exists
kube-dns- beta.kubernetes.io/os:NotIn:windows
- node-role.kubernetes.io/worker Exists
none- NoSchedule:Exists
- NoExecute:Exists
- CriticalAddonsOnly:Exists
nginx-ingress- beta.kubernetes.io/os:NotIn:windows
- node-role.kubernetes.io/worker Exists
none- NoSchedule:Exists
- NoExecute:Exists
metrics-server- beta.kubernetes.io/os:NotIn:windows
- node-role.kubernetes.io/worker Exists
none- NoSchedule:Exists
- NoExecute:Exists