• 参考 https://docs.k0sproject.io/stable/dynamic-configuration
    k0s附带了为集群级组件启用动态配置的选项。这涵盖了除etcd(或sqlite)和Kubernetes api服务器之外的所有组件。此选项可通过Kubernetes API直接启用k0s配置,而不是为所有集群配置使用配置文件。
    必须使用k0s控制器或k0s安装控制器命令中的 —enable-dynamic-config k0s controller 或 k0s install controller 标志为集群中的每个控制器启用此功能。将两种类型的控制器放在同一集群中会导致冲突。

动态配置 vs 静态配置

  • 现有的默认启用方法就是我们所说的静态配置。这就是k0s进程从给定的YAML文件读取配置的方式(或者如果用户没有给出配置,则使用默认配置),并相应地配置每个组件。这意味着,对于任何配置更改,集群管理员都必须重新启动集群上的所有控制器,并在每个控制器节点上具有匹配的配置。
  • 在动态配置模式下,创建集群时启动的第一个控制器将使用给定的配置YAML作为引导配置,并将其存储在Kubernetes API中。所有其他控制器都会找到API上现有的配置,并将其用作配置除etcd和kube-apiserver之外的所有组件的真相来源。在初始集群引导之后,所有控制器的真相来源是Kubernetes API中的配置对象。



  • 在使用k0s install手动安装控制平面节点期间,必须在配置文件中定义所有这些不可更改的选项。这是必要的,因为这些字段可以在初始化动态配置协调器之前使用。
  • k0sctl和k0smotron都可以在没有用户干预的情况下处理此问题。