kubeadm创建的集群的kube-controller-manager和kube-apiserver问题

时间:2018-07-13 09:11:17

标签: kubernetes kubeadm

我已经使用kubeadm创建了一个k8s集群,并且对kube-controller-manager和kuber-apiserver组件有一些疑问。

  • 使用kubeadm创建时,这些组件是作为pod(而不是systemd守护程序)启动的。如果我杀死了这些吊舱中的任何一个,它们将重新启动,但是谁在重新启动它们呢?我还没有看到任何副本控制器或部署负责这一工作。

  • 什么是更新其配置的“正确”方法?想象一下,我想更改api服务器的授权模式。在主节点中,我们可以找到带有/etc/kubernetes/manifests文件的kube-apiserver.yaml文件夹。我们是否应该更改此文件并杀死Pod,以便它以新的配置重新启动?

1 个答案:

答案 0 :(得分:1)

您描述的功能称为“静态容器”。这是documentation的一部分,描述了他们的行为。

  

静态Pod由特定节点上的kubelet守护程序直接管理,   无需API服务器对其进行观察。没有关联   复制控制器,而kubelet守护程序本身会监视它并   崩溃时重新启动它。没有健康检查。静态豆荚是   始终绑定到一个kubelet守护程序,并且始终在同一节点上运行   

     

Kubelet会自动尝试在Kubernetes上创建一个镜像Pod   每个静态Pod的API服务器。这意味着豆荚可见   在API服务器上,但无法从那里进行控制。

     

配置文件只是json或   yaml格式的特定目录。使用kubelet   --pod-manifest-path=<the directory>启动kubelet守护程序,该守护程序定期扫描目录并创建/删除静态Pod为   yaml / json文件在那里出现/消失。请注意,kubelet将忽略   扫描指定目录时,文件以点开头。

     

当kubelet启动时,它将自动启动在中定义的所有pod   --pod-manifest-path=--manifest-url=中指定的目录   参数,即我们的静态网络。

通常,这些清单存储在目录/etc/kubernetes/manifests中。
如果您对这些清单中的任何清单进行了任何更改,该资源将被调整,就像您将运行kubectl apply -f something.yaml命令一样。