我已经使用kubeadm创建了一个k8s集群,并且对kube-controller-manager和kuber-apiserver组件有一些疑问。
使用kubeadm创建时,这些组件是作为pod(而不是systemd守护程序)启动的。如果我杀死了这些吊舱中的任何一个,它们将重新启动,但是谁在重新启动它们呢?我还没有看到任何副本控制器或部署负责这一工作。
什么是更新其配置的“正确”方法?想象一下,我想更改api服务器的授权模式。在主节点中,我们可以找到带有/etc/kubernetes/manifests
文件的kube-apiserver.yaml
文件夹。我们是否应该更改此文件并杀死Pod,以便它以新的配置重新启动?
答案 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
命令一样。