首先,我们先了解一下kubernetes由哪些东西所构成,kubernetes有两种节点,一个是主节点既管理节点-master,另一个是工作节点既运行节点-node。
Master节点上有三个组件,api server(他核心功能是提供 rest api服务) 我们通过使用kubectl 命令行工具来与api server进行交互。 scheduler调度器 及控制器controller-manager(包括副本控制器、节点控制器、资源管理控制器等)
Node工作节点上组件有:kubelet 主要与api server进行交互的组件,kube-proxy主要功能是将某个service的访问请求转发到后端多个pod实例上。以及docker引擎运行pod中的容器。
Pod是kubernetes集群里的最小的调度单元,它是container的集合,一个pod里的容器共享ip、volume这些资源。为了更好地管理pod,给pod添加一些元数据信息,
下面,我们来了解一下k8s的架构,首先发出一个请求,通过kubectl将请求发送给api server 。api server收到客户端请求后,将资源内容存储到数据库etcd中,这样请求处理也就完成了,scheduler会检查数据库中可以运行的节点以及待调度的pod。它会根据调度策略将待调度的pod分配到可运行他们的node上,并更新数据库,记录下这些pod被分配到哪个node上。
Kube-proxy运行在集群的各个节点上负责管理网络的通信。比如,当有数据包发送到node上时,可以路由到正确的pod或者container。当node发出的数据包,kube-proxy也做类似的流程处理。
Kubelet运行在k8s集群中的每一个node上,kubelet会监控数据库中的数据,从而发现那些被分配到他所在节点上运行的pod。如有发现到新分配的pod,kubelet将在这个节点上运行这个新的pod。Kubelet会根据它在数据库中看到的数据创建运行pod所需要的容器。这便是k8s管理集群的基本流程和步骤。