作者:chenhe86888 | 来源:互联网 | 2023-09-02 12:54
我已经引导(kubernetes用kelseyhightower艰难地)在一个虚拟盒子中安装了一个k8s集群,其中有2个主机和2个工作程序,以及1个LB用于2个主机的kube-apiserver。顺便说一句,kubelet不在主服务器上运行,仅在工作节点上运行。
现在集群已启动并正在运行,但是我无法理解主服务器上的kube-apiserver如何连接到kubelet来获取节点的度量数据等。
能不能让我详细介绍一下?
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交流的正式文档。