kube-apiserver如何知道工作节点中的kubelet服务/进程在哪里运行?

时间:2019-12-30 14:55:11

标签: kubernetes kubelet kube-apiserver

我已经引导(kubernetes用kelseyhightower艰难地)在一个虚拟盒子中安装了一个k8s集群,其中有2个主机和2个工作程序,以及1个LB用于2个主机的kube-apiserver。顺便说一句,kubelet不在主服务器上运行,仅在工作节点上运行。 现在集群已启动并正在运行,但是我无法理解主服务器上的kube-apiserver如何连接到kubelet来获取节点的度量数据等。 能不能让我详细介绍一下?

1 个答案:

答案 0 :(得分:2)

Kubernetes API服务器不知道Kubelet,但Kubelets知道Kubernetes API服务器。 Kubelet注册该节点并向Kubernetes API Server报告指标,该指标服务器将持久保存到ETCD密钥值存储中。 Kubelet使用kubeconfig文件与Kubernetes API Server通信。该kubeconfig文件具有Kubernetes API服务器的端点。Kubelet与Kubernetes API服务器之间的通信通过相互TLS来确保安全。

在Kubernetes中,困难的方式Kubernetes控制平面组件-API Server,Scheduler,Controller Manager作为系统单元运行,这就是为什么在控制平面节点上没有Kubelet运行的原因,并且如果执行kubectl get nodes命令,您将没有看到列出的主节点,因为没有Kubelet可以注册主节点。

一种更标准的部署Kubernetes控制平面组件的方法-API服务器,调度程序,控制器管理器使用Kubelet而非系统化单元,这就是Kubeadm部署Kubernetes控制平面的方式。

有关Master to Cluster交流的正式文档。