Kubernetes采用主从分布式架构,包括Master Node(主节点)、Worker Node(从节点或工作节点),以及客户端命令行工具kubectl和其它附加项。Master Node:主控节点,对集群进行调度管理。由API Server、Scheduler、Cluster State Store和Controller-Manger Server所组成。其功能作用如下:
1. API Server:提供了统一的资源操作入口,提供认证、授权、访问控制、API注册和 发现等机制。
2. Scheduler:负责资源调度,按照预定的调度策略将Pod调度到相应的节点上。
3. Cluster State Store:保存了整个集群的状态,默认使用Etcd。
4. Controller-Manger Server:负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;Worker Node:工作节点,运行容器化的业务应用。包含kubelet、kube proxy和Container Runtime。功能如下:
1. kubelet:维护容器的生命周期,并管理CSI(Container Storage Interface)和CNI(Conteinre Network Interface)
2. kube-proxy:基于一种公共访问策略(例如:负载均衡),提供访问pod的途径;
3. Container runtime:负责镜像管理以及Pod和容器的真正运行,如:docker;
kubectl: Kubernetes集群的命令行接口,用于通过命令行与API Server进行交互,实现在集群中进行各种资源的维护与管理操作;
Add-on:对Kubernetes核心功能的扩展,主要有网络、服务发现和可视化这三大类的附加项。工作原理
1、准备包含应用程序的Deployment的yml文件,然后通过kubectl客户端工具发送给ApiServer。
2、ApiServer接收到客户端的请求并将资源内容存储到数据库(etcd)中。
3、Controller组件(包括scheduler、replication、endpoint)监控资源变化并作出反应。
4、ReplicaSet检查数据库变化,创建期望数量的pod实例。
5、Scheduler再次检查数据库变化,发现尚未被分配到具体执行节点(node)的Pod,然后根据一组相关规则将pod分配到可以运行它们的节点上,并更新数据库,记录pod分配情况。
6、Kubelete监控数据库变化,管理后续pod的生命周期,发现被分配到它所在的节点上运行的那些pod。如果找到新pod,则会在该节点上运行这个新pod。
另:kuberproxy运行在集群各个主机上,管理网络通信,如服务发现、负载均衡。当有数据发送到主机时,将其路由到正确的pod或容器。对于从主机上发出的数据,它可以基于请求地址发现远程服务器,并将数据正确路由,在某些情况下会使用轮循调度算法(Round-robin)将请求发送到集群中的多个实例。
CNI:flannel(网络配置) calico(网络配置、网络策略)canel(网络策略)