K8s架构

作者: jecyhw | 来源:发表于2024-06-16 09:53 被阅读0次

基本架构

K8s采用的是Master/Worker架构,至少需要一个Master节点和多个Worker节点。

Master节点是控制节点,负责对集群进行调度管理,Master节点由交互器(API Server)、存储器(Etcd)、控制器(Controller Manager)和调度器(Scheduler)组成。

Worker节点是工作节点,也叫Node节点,实际运行着业务应用的容器,Worker节点包含代理组件(kubelet)、网络代理(kube-proxy)和容器运行环境(Container Runtime)。


架构原理图

Master节点组件

交互器(API Server)

API Server是集群统一入口,提供了对K8s集群中各种资源对象(如Pods、Services、Deployments等)的CRUD操作和Watch机制,这些资源对象的状态会被保存到Etcd中,还提供了认证、授权、访问控制、API发现与版本控制等能力。集群中的其他组件(如Scheduler、Controller Manager、Kubelet等)之间不会相互调用,是通过和API Server进行交互。

简单来说,API Server管理着集群中的资源对象,提供了丰富的RESTful API接口供客户端使用,并与其他组件协同工作以确保集群的稳定运行。

存储器(Etcd)

Etcd是K8s集群中的分布式键值存储系统,用于保存集群中的所有状态信息,比如Pod、Service等资源对象信息。

控制器(Controller Manager)

Controller Manager负责监控和维护集群中所有资源对象的状态,确保资源对象的实际状态和期望状态一致。Controller Manager中包含多个控制器,如Namespace Controller、Node Controller、Service Controller等,每个控制器负责监控和维护一种资源对象的状态。

调度器(Scheduler)

Scheduler负责对集群内的资源进行调度,会根据Pod的资源请求(如CPU、内存)以及集群中节点的资源状况,将新创建的Pod分配到合适的节点上。

Worker节点组件

代理组件(kubelet)

kubelet是运行在每个Worker节点上的代理程序,它负责与Master节点上的API Server进行通信,根据Master节点下发的指令,调度和管理本地节点上的容器。kubelet可以监控本地节点上的容器状态,如启动、停止、健康状况等,并定期向 Master 节点报告节点状态信息。

网络代理(kube-proxy)

kube-proxy是Worker节点上Pod的网络代理组件,主要负责集群内Service的负载均衡和访问控制等功能。每个Node节点上都会部署一个 kube-proxy 组件来负责处理该节点上所有 Service 的流量转发和路由等操作。

容器运行环境(Container Runtime)

容器运行环境负责镜像管理以及Pod和容器的真正运行。K8s本身并不提供容器运行环境,但提供了接口,可以插入所选择的容器运行时环境,支持Docker和rkt等。

相关文章

网友评论

      本文标题:K8s架构

      本文链接:https://www.haomeiwen.com/subject/fpfzqjtx.html