如果这不是询问此问题的正确地方,我深感抱歉。
我对一些 kubernetes 部署脚本(如 kubeadm)生成的集群感到有点困惑。
看来 kube-api 服务器本身在 Kubernetes 集群内部以 pod 的形式运行。这让我很困惑。在部署 pod 之前,难道不应该已经有一个可以运行的集群(这意味着你已经在运行 kube-apiserver)吗?
在我看来,这就像先有鸡还是先有蛋的问题,我不明白为什么要这样做,或者这怎么可能实现。
答案1
Kubelet 可以配置为从磁盘上的配置文件本地管理 Pod。因此,kubeadm 和类似的部署使用它来启动控制平面服务,这具有额外的好处,即这些容器被视为来自 kubectl 的 Pod。
例如,在 Ubuntu 上,kubeadm 会将 pod 配置文件放入/etc/kubernetes/manifests/
。您实际上也可以将自己的 pod 放在那里,以便 kubelet 进行管理,然后它会启动它们(尽管请注意,我们不推荐这样做,但您几乎总是应该使用节点选择器)。