Kubernetes总架构图

本文个人博客地址为:http://www.huweihuang.com/article/kubernetes/kubernetes-architecture/

本文个人博客地址为:https://huweihuang.net/article/kubernetes/kubernetes-architecture/

1. Kubernetes的总架构图


2. Kubernetes各个组件介绍

2.1. kube-master[控制节点]

  • master的工作流程图

  1. Kubecfg将特定的请求,比如创建Pod,发送给Kubernetes Client。

  2. Kubernetes Client将请求发送给API server。

  3. API Server根据请求的类型,比如创建Pod时storage类型是pods,然后依此选择何种REST Storage API对请求作出处理。

  4. REST Storage API对的请求作相应的处理。

  5. 将处理的结果存入高可用键值存储系统Etcd中。

  6. 在API Server响应Kubecfg的请求后,Scheduler会根据Kubernetes Client获取集群中运行Pod及Minion/Node信息。

  7. 依据从Kubernetes Client获取的信息,Scheduler将未分发的Pod分发到可用的Minion/Node节点上。

2.1.1. API Server[资源操作入口]
  1. 提供了资源对象的唯一操作入口,其他所有组件都必须通过它提供的API来操作资源数据,只有API Server与存储通信,其他模块通过API Server访问集群状态。

    1. 第一,是为了保证集群状态访问的安全。

    2. 第二,是为了隔离集群状态访问的方式和后端存储实现的方式:API Server是状态访问的方式,不会因为后端存储技术etcd的改变而改变。

  2. 作为kubernetes系统的入口,封装了核心对象的增删改查操作,以RESTFul接口方式提供给外部客户和内部组件调用。对相关的资源数据“全量查询”+“变化监听”,实时完成相关的业务功能。

更多API Server信息请参考: Kubernetes核心原理(一)之API Server
2.1.2. Controller Manager[内部管理控制中心]
  1. 实现集群故障检测和恢复的自动化工作,负责执行各种控制器,主要有:

    • endpoint-controller:定期关联service和pod(关联信息由endpoint对象维护),保证service到pod的映射总是最新的。

    • replication-controller:定期关联replicationController和pod,保证replicationController定义的复制数量与实际运行pod的数量总是一致的。

更多Controller Manager信息请参考: Kubernetes核心原理(二)之Controller Manager
2.1.3. Scheduler[集群分发调度器]
  1. Scheduler收集和分析当前Kubernetes集群中所有Minion/Node节点的资源(内存、CPU)负载情况,然后依此分发新建的Pod到Kubernetes集群中可用的节点。

  2. 实时监测Kubernetes集群中未分发和已分发的所有运行的Pod。

  3. Scheduler也监测Minion/Node节点信息,由于会频繁查找Minion/Node节点,Scheduler会缓存一份最新的信息在本地。

  4. 最后,Scheduler在分发Pod到指定的Minion/Node节点后,会把Pod相关的信息Binding写回API Server。

更多Scheduler信息请参考: Kubernetes核心原理(三)之Scheduler

2.2. kube-node[服务节点]

  • kubelet结构图

2.2.1. Kubelet[节点上的Pod管家]
  1. 负责Node节点上pod的创建、修改、监控、删除等全生命周期的管理

  2. 定时上报本Node的状态信息给API Server。

  3. kubelet是Master API Server和Node之间的桥梁,接收Master API Server分配给它的commands和work,通过kube-apiserver间接与Etcd集群交互,读取配置信息。

  4. 具体的工作如下:

    1. 设置容器的环境变量、给容器绑定Volume、给容器绑定Port、根据指定的Pod运行一个单一容器、给指定的Pod创建network 容器。

    2. 同步Pod的状态、同步Pod的状态、从cAdvisor获取container info、 pod info、 root info、 machine info。

    3. 在容器中运行命令、杀死容器、删除Pod的所有容器。

更多Kubelet信息请参考: Kubernetes核心原理(四)之Kubelet
2.2.2. Proxy[负载均衡、路由转发]
  1. Proxy是为了解决外部网络能够访问跨机器集群中容器提供的应用服务而设计的,运行在每个Node上。Proxy提供TCP/UDP sockets的proxy,每创建一种Service,Proxy主要从etcd获取Services和Endpoints的配置信息(也可以从file获取),然后根据配置信息在Node上启动一个Proxy的进程并监听相应的服务端口,当外部请求发生时,Proxy会根据Load Balancer将请求分发到后端正确的容器处理。

  2. Proxy不但解决了同一主宿机相同服务端口冲突的问题,还提供了Service转发服务端口对外提供服务的能力,Proxy后端使用了随机、轮循负载均衡算法。

2.2.3. kubectl [集群管理命令行工具集]
  1. 通过客户端的kubectl命令集操作,API Server响应对应的命令结果,从而达到对kubernetes集群的管理。

参考文章:

https://yq.aliyun.com/articles/47308?spm=5176.100240.searchblog.19.jF7FFa


### Kubernetes 集群架构概述 Kubernetes 架构设计旨在提供高度灵活且可扩展的基础架构来部署和管理容器化应用。该架构由多个组件构成,这些组件协同工作以确保应用程序的可靠性和高性能[^1]。 #### 主要组成部分 - **Master Node (控制平面)** 控制平面对整个集群拥有全局视角并作出决策,如调度Pod到Worker Nodes上执行。它主要包括以下几个关键组件: - `kube-apiserver`:作为API入口点处理外部请求并与其它内部服务通信。 - `etcd`:分布式键值数据库用于保存所有集群状态数据。 - `controller-manager`:通过控制器循环监视集群共享状态的变化,并尝试使实际状态接近期望的状态。 - `scheduler`:负责决定新创建的应用程序应该放置在哪台机器上运行。 - **Worker Node (计算节点)** 计算节点承载着真正的工作负载——即用户定义的服务实例。每个worker node包含如下几个重要部分: - `kubelet`:代理进程,负责与master保持联系并向其报告本地状况;同时也接收来自master的任务指令并执行相应动作。 - `container runtime`:实现CRI接口的具体容器引擎(比如Docker),用来启动停止容器等操作[^2]。 - `kube-proxy`:网络代理机制,维护主机上的网络规则集以便正确路由流量至目标pod。 #### 数据存储层 为了保证配置信息的一致性和持久性,Kubernetes 使用了一个名为 Etcd 的一致性存储系统。所有的资源对象及其属性都会被序列化存入其中,包括但不限于命名空间、服务账号、密钥等内容。这使得即使在某些情况下出现了单点故障,也可以快速恢复集群的整体视图和服务能力[^3]。 ```mermaid graph TD; A[Kubernetes Cluster] --> B[Control Plane]; A --> C[Worker Nodes]; subgraph ControlPlane "Control Plane" D[kube-apiserver] E[etcd] F[controller-manager] G[scheduler] D -->|REST API Calls| H[External Clients] F -.-> |Watch & Sync State| I[Cluster Resources] G --|Schedule Pods to Workers| J[Pod Scheduling Decision] end subgraph WorkerNode "Worker Node(s)" K[kubelet] L[Container Runtime] M[kube-proxy] N[Application Containers] K --|Manage Lifecycle of Pods| N L --|Run Application Code Inside Isolated Environments| N M --|Maintain Network Rules and Routes| O[Network Traffic Management] end ``` 此图表展示了典型的Kubernetes集群结构以及各个主要部件之间的关系。请注意,虽然这里只画出了一个 worker node ,但在生产环境中通常会有多个这样的节点共同分担任务负荷。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值