除了网络插件ingress controllers 插件DNS 插件Metrics Server 插件之外,RKE 支持添加用户自定义插件。

添加自定义插件方式有两种:

**说明:**当使自定义的附加组件时,必须为你的所有资源定义一个命名空间,否则它们会进入kube-system命名空间。

RKE 将 YAML 清单作为 configmap 上传至 Kubernetes 集群。然后,它运行一个 Kubernetes job,挂载 configmap 并使用kubectl apply -f部署插件。

RKE 只有在多次使用rke up时才会添加额外的插件。当使用不同的附加组件列表进行rke up时,RKE 不支持删除集群附加组件。

从 v0.1.8 开始,RKE 会更新同名的插件。

在 v0.1.8 之前,使用kubectl edit更新任何插件。

在 cluster.yaml 文件中嵌入插件

如果要在 YAML 文件中直接定义一个插件,一定要使用 YAML 的 block indicator|-,因为addons指令是一个多行字符串选项。可以用---指令将多个 YAML 资源定义分开来指定。

  1. addons: |-
  2. ---
  3. apiVersion: v1
  4. kind: Pod
  5. metadata:
  6. name: my-nginx
  7. namespace: default
  8. spec:
  9. containers:
  10. - name: my-nginx
  11. image: nginx
  12. ports:
  13. - containerPort: 80

引用插件的 YAML 文件

使用addons_include指令,提供自定义插件引用的本地文件路径或 URL 地址。

  1. addons_include:
  2. - https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/operator.yaml
  3. - https://raw.githubusercontent.com/rook/rook/master/cluster/examples/kubernetes/ceph/cluster.yaml
  4. - /opt/manifests/example.yaml
  5. - ./nginx.yaml