当前位置: 首页 > news >正文

kubernetes 入门篇之架构介绍

经过前段时间的学习和实践,对k8s的架构有了一个大致的理解

1. k8s 分层架构

在这里插入图片描述

架构层级核心组件
控制平面层etcd、API Server、Scheduler、Controller Manager
工作节点层Kubelet、Kube-proxy、CRI(容器运行时接口)、CNI(网络插件)、CSI(存储插件)
资源对象层Pod、Deployment、StatefulSet、HPA、VPA
扩展插件层CoreDNS、Ingress Controller、KEDA(事件驱动自动扩缩)、Argo Rollouts

2. 组件

2.1. kube-apiserver

作用:Kubernetes 集群的核心入口,提供 RESTful API 服务。

功能:
接收所有来自客户端(如 kubectl)或集群内部组件的请求。

验证和校验请求的合法性(如权限、资源配额等)。

作为唯一直接与 etcd 交互的组件,负责集群状态的读写。

充当其他组件之间通信的枢纽(如 kube-scheduler、kube-controller-manager 等)。

2.2. kube-controller-manager

作用:运行一系列控制器(Controller),确保集群的实际状态与期望状态一致。

核心控制器:

Node Controller:监控节点状态(如节点宕机时触发处理)。

Replication Controller:确保 Pod 副本数符合预期(如 Deployment 的副本数)。

Endpoint Controller:维护 ServicePod 的映射关系(Endpoints)。

Service Account & Token Controller:管理服务账户和访问令牌。

2.3. kube-scheduler

作用:负责将新创建的 Pod 调度到合适的节点上运行。

调度流程:

过滤:排除不满足 Pod 需求的节点(如资源不足、标签不匹配)。

打分:对剩余节点按优先级排序(如资源利用率、亲和性等)。

绑定:将 Pod 绑定到最优节点,由对应节点的 kubelet 执行创建。

可扩展性:支持自定义调度策略。

2.4. kubelet

作用:运行在每个节点上的“节点代理”,负责管理本节点上的 Pod 生命周期。

功能:

监听 API Server 或本地 Pod 清单(如静态 Pod),确保 Pod 按预期运行。

执行 Pod 的创建、启动、停止、监控等操作。

定期向 API Server 汇报节点状态(如资源使用情况、Pod 状态)。

与容器运行时(如 Docker、containerd、CRI-O)交互,管理容器。

2.5. kube-proxy

作用:实现 Kubernetes Service 的网络代理和负载均衡。

功能:

维护节点上的网络规则(如 iptables/IPVS),将访问 Service 的请求转发到后端 Pod

实现 ServiceClusterIP、NodePort、LoadBalancer 等类型的网络暴露。

确保 Pod 之间的网络通信和负载均衡。

2.6. etcd

作用:Kubernetes 集群的分布式键值存储数据库,保存所有集群状态和数据。

功能:

存储集群的配置信息、节点信息、Pod 状态、Secrets、ConfigMaps 等。

提供高可用和强一致性的数据存储(基于 Raft 共识算法)。

仅通过 kube-apiserver 进行读写,其他组件不直接操作。

3. CRI

kubernetesv1.5 版本开始引入了CRI规范,通过插件接口模式,kubernetes无须重新编译就可以使用多种不同类型的容器运行时。kubernetesv1.23 及之前的版本可以将 docker 作为容器运行时,从v1.24 版本开始不再支持 docker 作为容器运行时,采用containerd 、CRI-O作为容器运行时。

kubelet 基于gRPC框架通过UNIX Socket 与容器运行时通信。在该过程中,kubelet 作为客户端,CRI 是服务端。
在这里插入图片描述
CRI 主要包括两个gRPC服务:ImageServiceRuntimeService,实现对容器镜像和容器实例的管理功能。

  • ImageService:负责容器镜像的拉取,查看和移除镜像等。
  • RuntimeService: 负责pod 和容器的生命周期管理,以及与容器的交互(如 exec、attac、 port-forward等)。

相关文章:

  • Linux:多路转接(上)——select
  • Win10系统安装WSL2-Ubuntu, 并使用VScode开始工作
  • 系统编程1(进程的概念与原理)
  • AUTOSAR_SWS_MemoryDriver图解
  • Linux中的sleep命令
  • JMeter的接口测试步骤
  • 10min速通Linux文件传输
  • 指针的进阶2
  • ModelSim联合仿真
  • spring cloud微服务API网关详解及各种解决方案详解
  • SAP系统客户可回收包材库存管理
  • 自动驾驶---自动驾驶端到端的一般形态
  • 第五篇:Python面向对象编程(OOP)深度教程
  • 关于 微服务负载均衡 的详细说明,涵盖主流框架/解决方案的对比、核心功能、配置示例及总结表格
  • OracleLinuxR5U5系统重启后启动数据库oracle23ai
  • 【前端小技巧】实现详情页滚动位置记忆,提升用户体验
  • Vue接口平台学习六——接口列表及部分调试页面
  • asm汇编语言源代码之-获取环境变量
  • 【c语言】结构体习题
  • Vitis: 使用自定义IP时 Makefile错误 导致编译报错
  • 工程建设国家标准网站/排名优化公司电话
  • 小学英语教师做应用相关网站/提高网站权重的方法
  • 山西做网站多少钱/seo需要付费吗
  • seo做的最好的网站/全国疫情地区查询最新
  • 常设中国建设工程法律论坛网站/广告服务平台
  • wordpress发布文章出现404/搜索引擎优化seo信息