浅析 Kubernetes 的架构与组件

简介: 架构组成和大多数分布式系统一样,Kubernetes 集群至少需要一个主节点(控制平面)和多个计算节点(计算平面)

架构组成

和大多数分布式系统一样,Kubernetes 集群至少需要一个主节点(控制平面)和多个计算节点(计算平面)。

网络异常,图片无法展示
|


主节点(Master):主要用于暴露API,调度部署和节点的管理

计算节点(Node):主要运行一个容器运行环境,一般是docker环境(类似docker环境的还有rkt);同时,也运行一个Kubernetes的代理(kubelet)用于和master通信;除此之外,计算节点也会运行一些额外的组件,像记录日志,节点监控,服务发现等。计算节点是k8s集群中真正工作的节点。

网络异常,图片无法展示
|


架构细分

Kubectl

客户端命令行工具,作为整个Kubernetes集群的操作入口。

Master 节点(默认不参加实际工作)

网络异常,图片无法展示
|


Api Server

在 Kubernetes 架构中承担的是“桥梁”的角色,作为资源操作的唯一入口,它提供了认证、授权、访问控制、API注册和发现等机制。客户端与k8s集群及K8s内部组件的通信,都要通过Api Server这个组件;

Controller Manager

负责维护集群的状态,比如故障检测、自动扩展、滚动更新等;执行各种控制器,目前已经提供了很多控制器来保证Kubernetes的正常运行。

  • Replication Controller:管理维护 Replication Controller,关联Replication Controller和Pod,保证 Replication Controller 定义的副本数量与实际运行的 Pod 数量一致
  • Deployment Controller:管理维护Deployment,关联 Deployment 和 Replication Controller,保证运行指定数量的Pod。当 Deployment 更新时,控制实现 Replication Controller 和 Pod 的更新
  • Node Controller:管理维护 Node,定期检查Node的健康状态,标识出(失效|未失效)的 Node 节点
  • Namespace Controller:管理维护 Namespace,定期清理无效的 Namespace,包括 Namesapce 下的API对象,比如Pod、Service等
  • Service Controller:管理维护 Service,提供负载以及服务代理
  • EndPoints Controller:管理维护Endpoints,关联Service和Pod,创建Endpoints为Service的后端,当Pod发生变化时,实时更新Endpoints
  • Service Account Controller:管理维护 Service Account,为每个 Namespace 创建默认的 Service Account,同时为 Service Account 创建 Service Account Secret。
  • Persistent Volume Controller:管理维护Persistent Volume和Persistent Volume Claim,为新的Persistent Volume Claim分配Persistent Volume进行绑定为释放的Persistent Volume执行清理回收
  • Daemon Set Controller:管理维护 Daemon Set,负责创建Daemon Pod,保证指定的Node上正常的运行Daemon Pod
  • Job Controller:管理维护Job,为Jod创建一次性任务Pod,保证完成Job指定完成的任务数目。
  • Pod Autoscaler Controller:实现Pod的自动伸缩,定时获取监控数据,进行策略匹配,当满足条件时执行Pod的伸缩动作。

Schedule

为新建立的 Pod 进行节点(node)选择(即,分配机器),负责集群资源的调度,按照预定的调度策略将 Pod 调度到相应的 Node 节点上;

 

Etcd

担任数据中心的角色,保存了整个群集的状态

Node 节点

网络异常,图片无法展示
|


Kubelet

负责维护容器的生命周期,同时也负责数据卷(Volume)和网络的管理,监控并上报节点资源使用情况。

Kubelet 是 Node 节点的代理,当Scheduler确定某个Node上运行Pod之后,会将Pod的具体信息(image,volume)等发送给该节点的Kubelet,Kubelet根据这些信息创建和运行容器,并向 Master 返回运行的状态。 同时,具备自动修复功能(如果某个节点中的容器宕机,它会尝试重启该容器,若重启无效,则会将该Pod杀死,然后重新创建一个容器)。

Kube-proxy

负责 Service Endpoint 到 POD 实例的请求转发及负载均衡的规则管理。

Service在逻辑上代表了后端的多个Pod。

当外界通过Service访问 Pod 提供的服务时,Service接收到的请求后就是通过kube-proxy来转发到 Pod 上的;

 

容器运行时环境(container-runtime)

负责本机的容器创建和管理工作;比如,Docker引擎。

网络异常,图片无法展示
|


Pod

Kubernetes 集群里面最小的单位。每个 Pod 里边可以运行一个或多个 Container (容器),如果一个Pod中有两个容器,那么容器的 USR(用户)、MNT(挂载点)、PID(进程号) 是相互隔离的, 而 UTS(主机名和域名)、IPC(消息队列)、NET(网络栈) 是相互共享的。


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
3月前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
3月前
|
监控 前端开发 数据可视化
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
@icraft/player-react 是 iCraft Editor 推出的 React 组件库,旨在简化3D数字孪生场景的前端集成。它支持零配置快速接入、自定义插件、丰富的事件和方法、动画控制及实时数据接入,帮助开发者轻松实现3D场景与React项目的无缝融合。
280 8
3D架构图软件 iCraft Editor 正式发布 @icraft/player-react 前端组件, 轻松嵌入3D架构图到您的项目,实现数字孪生
|
3月前
|
Kubernetes Cloud Native 持续交付
容器化、Kubernetes与微服务架构的融合
容器化、Kubernetes与微服务架构的融合
82 1
|
3月前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
3月前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
3月前
|
Kubernetes API 调度
【赵渝强老师】Kubernetes的体系架构
本文介绍了Kubernetes的体系架构及其核心组件。Kubernetes采用主从分布式架构,由master主节点和多个node工作节点组成。master节点负责集群管理和调度,运行API Server、scheduler、controller-manager等服务组件;node节点运行kubelet、kube-proxy和Docker容器守护进程,负责实际业务应用的运行。文章还简要介绍了Kubernetes的附加组件及其作用。
103 5
|
3月前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
3月前
|
存储 监控 Docker
探索微服务架构下的容器化部署
本文旨在深入探讨微服务架构下容器化部署的关键技术与实践,通过分析Docker容器技术如何促进微服务的灵活部署和高效管理,揭示其在现代软件开发中的重要性。文章将重点讨论容器化技术的优势、面临的挑战以及最佳实践策略,为读者提供一套完整的理论与实践相结合的指导方案。
|
1月前
|
缓存 容灾 网络协议
ACK One多集群网关:实现高效容灾方案
ACK One多集群网关可以帮助您快速构建同城跨AZ多活容灾系统、混合云同城跨AZ多活容灾系统,以及异地容灾系统。
|
2月前
|
Kubernetes Ubuntu 网络安全
ubuntu使用kubeadm搭建k8s集群
通过以上步骤,您可以在 Ubuntu 系统上使用 kubeadm 成功搭建一个 Kubernetes 集群。本文详细介绍了从环境准备、安装 Kubernetes 组件、初始化集群到管理和使用集群的完整过程,希望对您有所帮助。在实际应用中,您可以根据具体需求调整配置,进一步优化集群性能和安全性。
148 12

热门文章

最新文章