我已经在虚拟框中引导(通过 kelseyhightower 艰难地使用 kubernetes)一个 k8s 集群,其中包含 2 个主服务器和 2 个工作人员以及 1 个用于 2 个主服务器的 kube-apiserver 的 LB。顺便说一句,kubelet 不在 master 中运行,仅在工作节点中运行。现在集群已启动并正在运行,但我无法理解 master 上的 kube-apiserver 是如何连接到 kubelet 以获取节点的指标数据等的。请告诉我详细信息吗?
问问题
63 次
1 回答
2
Kubernetes API 服务器不知道 Kubelets,但 Kubelets 知道 Kubernetes API 服务器。Kubelet 注册节点并向 Kubernetes API 服务器报告指标,该服务器被持久化到 ETCD 键值存储中。Kubelet 使用 kubeconfig 文件与 Kubernetes API Server 进行通信。该 kubeconfig 文件具有 Kubernetes API 服务器的端点。Kubelet 和 Kubernetes API 服务器之间的通信通过双向 TLS 是安全的。
在 Kubernetes 中,Kubernetes 控制平面组件的艰难之路——API 服务器、调度程序、控制器管理器作为系统单元运行,这就是为什么控制平面节点上没有运行 Kubelet 并且如果您执行kubectl get nodes
命令,您将不会看到那里列出的主节点没有 Kubelet 来注册主节点。
部署 Kubernetes 控制平面组件的更标准方法 - API Server、调度程序、控制器管理器使用 Kubelet 而不是 systemd 单元,这就是 Kubeadm 部署 Kubernetes 控制平面的方式。
关于Master 到 Cluster通信的官方文档。
于 2019-12-30T15:03:35.493 回答