浅析 Kubernetes 的架构与组件

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 架构组成和大多数分布式系统一样,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搭建和管理企业级网站应用
相关文章
|
10天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
10天前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
【赵渝强老师】基于大数据组件的平台架构
|
8天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
8天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
10天前
|
Kubernetes API 调度
【赵渝强老师】Kubernetes的体系架构
本文介绍了Kubernetes的体系架构及其核心组件。Kubernetes采用主从分布式架构,由master主节点和多个node工作节点组成。master节点负责集群管理和调度,运行API Server、scheduler、controller-manager等服务组件;node节点运行kubelet、kube-proxy和Docker容器守护进程,负责实际业务应用的运行。文章还简要介绍了Kubernetes的附加组件及其作用。
|
8天前
|
安全 持续交付 Docker
微服务架构和 Docker 容器化部署的优点是什么?
微服务架构和 Docker 容器化部署的优点是什么?
|
9天前
|
存储 监控 Docker
探索微服务架构下的容器化部署
本文旨在深入探讨微服务架构下容器化部署的关键技术与实践,通过分析Docker容器技术如何促进微服务的灵活部署和高效管理,揭示其在现代软件开发中的重要性。文章将重点讨论容器化技术的优势、面临的挑战以及最佳实践策略,为读者提供一套完整的理论与实践相结合的指导方案。
|
12天前
|
运维 Kubernetes Cloud Native
Kubernetes云原生架构深度解析与实践指南####
本文深入探讨了Kubernetes作为领先的云原生应用编排平台,其设计理念、核心组件及高级特性。通过剖析Kubernetes的工作原理,结合具体案例分析,为读者呈现如何在实际项目中高效部署、管理和扩展容器化应用的策略与技巧。文章还涵盖了服务发现、负载均衡、配置管理、自动化伸缩等关键议题,旨在帮助开发者和运维人员掌握利用Kubernetes构建健壮、可伸缩的云原生生态系统的能力。 ####
|
24天前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
25天前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。

推荐镜像

更多