K8S如何自动启动Deployments和DaemonSets?
How does K8S auto-start the Deployments and DaemonSets?
我已经使用 Kubeadm 安装了 K8S,并在控制平面节点和工作节点上看到了下面的 pods。
Kubelet 作为 systemd 服务启动,它查看 /etc/kubernetes/manifests 文件夹并启动 etcd.yaml、kube-apiserver.yaml、kube-controller-[= 中定义的对象23=] 和 kube-scheduler.yaml 文件。如果我将 yaml 文件放在同一个文件夹中,kubelet 会观察到相同的情况并启动适当的 K8S 对象。
我不确定上面屏幕截图中显示的 coredns 部署、kube-proxy 和 flannel DaemonSets 如何在我 start/reboot 控制平面节点和工作节点后自动启动。有人可以帮我完成 K8S 的启动过程吗?
Kubeadm 在 init addon 阶段安装 CoreDNS 和 kube-proxy。它是在基本集群功能已经启动后安装的(api服务器、控制器管理器等)。 Kubeadm 的安装方式与 运行 kubectl apply
.
相同
如果您想了解它的实际工作原理,请点击此处 code of kubeadm init addon phase。
Apiserver、controller manager 和 scheduler 必须使用清单文件夹(也称为 static pods
)启动,因为没有其他方法(从技术上讲这不是 100% 正确,因为还有其他方法,例如你可以 运行 你的控制平面使用 systemd)。当还没有 kubernetes 时,你如何在 kubernetes 上启动 运行ning 东西?没有 api 服务器来处理您的请求,没有调度程序来安排您的 pods,没有控制器来管理资源。
基本组件启动后,您可以 运行 pods 以常规方式使用 api.
此外,回答您关于重启控制平面或节点时会发生什么的问题?你需要知道整个 k8s 集群的状态都保存在 etcd 中。因此,当您重新启动控制平面时,kubernetes 从 etcd 读取状态,将其与现实进行比较,如果存在差异,它会调整现实以匹配 etcd 中的状态。例如如果没有 coredns 运行ning 但 etcd 中有 coredns 对象,kubernetes 将启动它。
我已经使用 Kubeadm 安装了 K8S,并在控制平面节点和工作节点上看到了下面的 pods。
Kubelet 作为 systemd 服务启动,它查看 /etc/kubernetes/manifests 文件夹并启动 etcd.yaml、kube-apiserver.yaml、kube-controller-[= 中定义的对象23=] 和 kube-scheduler.yaml 文件。如果我将 yaml 文件放在同一个文件夹中,kubelet 会观察到相同的情况并启动适当的 K8S 对象。
我不确定上面屏幕截图中显示的 coredns 部署、kube-proxy 和 flannel DaemonSets 如何在我 start/reboot 控制平面节点和工作节点后自动启动。有人可以帮我完成 K8S 的启动过程吗?
Kubeadm 在 init addon 阶段安装 CoreDNS 和 kube-proxy。它是在基本集群功能已经启动后安装的(api服务器、控制器管理器等)。 Kubeadm 的安装方式与 运行 kubectl apply
.
如果您想了解它的实际工作原理,请点击此处 code of kubeadm init addon phase。
Apiserver、controller manager 和 scheduler 必须使用清单文件夹(也称为 static pods
)启动,因为没有其他方法(从技术上讲这不是 100% 正确,因为还有其他方法,例如你可以 运行 你的控制平面使用 systemd)。当还没有 kubernetes 时,你如何在 kubernetes 上启动 运行ning 东西?没有 api 服务器来处理您的请求,没有调度程序来安排您的 pods,没有控制器来管理资源。
基本组件启动后,您可以 运行 pods 以常规方式使用 api.
此外,回答您关于重启控制平面或节点时会发生什么的问题?你需要知道整个 k8s 集群的状态都保存在 etcd 中。因此,当您重新启动控制平面时,kubernetes 从 etcd 读取状态,将其与现实进行比较,如果存在差异,它会调整现实以匹配 etcd 中的状态。例如如果没有 coredns 运行ning 但 etcd 中有 coredns 对象,kubernetes 将启动它。