Kubernetes架构最全详解(图文全面总结)

Kubernetes架构最全详解(图文全面总结)

Kubernetes

Kubernetes(常简称为K8s),是一个开源的容器编排平台,由Google设计,含义是舵手、或领航员容器编排系统。

主要解决以下场景:

Kubernetes架构最全详解(图文全面总结)

1.容器编排

容器编排是K8S的核心功能,主要管理:多个容器的部署、扩展、和操作,以及自动处理容器的创建、删除、和重新分配。

2.自动伸缩

自动伸缩是K8S的核心功能,主要是:根据应用程序的负载情况,自动调整容器实例的数量。

比如:(增加、或减少容器数量)、和垂直扩展(调整容器的资源分配,比如:CPU、和内存)等,自动伸缩。

3.自动化管理

Kubernetes简化了容器化应用程序的部署、管理、和操作流程,比如:通过自动化的方式,可以减少人为操作错误…等场景。

4.自愈能力

比如:通过持续监控容器的健康状态,自动重启崩溃的容器,重新调度失败的容器实例…等场景,确保应用程序的高可用性。

这四大核心功能:使Kubernetes成为一个强大且灵活的容器编排平台,能够有效地简化、和自动化容器化应用程序的管理。

 

Kubernetes架构

Kubernetes的架构,由多个组件组成,如下图所示:

如下图所示:

Kubernetes架构最全详解(图文全面总结)

整体由两部分构成,分别是:Master节点Worker节点

master(主节点)

Master节点,负责:整个集群的状态监控、调度、协调、和配置管理,如下:

Kubernetes架构最全详解(图文全面总结)

  • 集群管理:Master节点负责整个Kubernetes集群的管理,协调各个工作节点上的资源分配、和应用程序的部署;
  • 调度和分配:根据资源需求和策略,决定将容器部署到哪个工作节点上;
  • 控制和监控:持续监控集群的状态,确保应用程序按预期运行,自动处理故障、和异常情况;
  • 配置存储:以及,存储、和管理集群的配置信息、状态数据、和元数据。

Master节点,会包含如下核心组件,比如:API Server、Control Manager。。。等。

API Server

API Server充当Kubernetes的前端,所有外部命令(如:通过kubectl发出的命令),都会首先到达API Server。

处理所有REST请求(如kubectl命令),并将其转发到相应的组件。

API Server会验证请求的有效性,将其转换为集群的状态变更,并将其保存到etcd中。

Scheduler

Scheduler负责资源调度,根据容器的资源需求和约束条件,决定将容器部署到哪个节点上。

Controller Manager

Controller Manager运行各种控制器,每个控制器都是一个独立的控制循环,持续监听集群的状态,并根据期望状态和实际状态的差异进行调整。

主要控制器包括:

Kubernetes架构最全详解(图文全面总结)

节点控制器:管理节点的生命周期。

复制控制器:确保指定数量的Pod副本在任何时候都在运行。

端点控制器:填充Service和Pod的端点信息。

命名空间控制器:管理命名空间的创建和删除。

etcd

etcd是一个分布式键值存储,存储整个集群的配置信息、元数据和状态数据。

它是Kubernetes集群的数据库,提供一致性和高可用性的数据存储服务。

 

Work(工作节点)

Node节点是集群中的工作节点,主要解决:

Kubernetes架构最全详解(图文全面总结)

  • 运行容器:Worker节点负责运行分配给它的应用程序容器;
  • 资源管理:管理、和分配本节点上的计算资源(CPU、内存、存储…等),确保容器高效运行。
  • 网络通信:处理容器之间以及容器与外部世界的网络通信;
  • 监控和日志记录:持续监控容器的状态并记录日志,帮助诊断、和解决问题。

主要会涉及到如下组件:

Kubelet

Kubelet是Worker节点上的核心代理,它持续监听来自API Server的指令(如:Pod的创建、更新和删除)。

Kubelet根据这些指令管理容器的生命周期,包括:拉取镜像、启动容器、监控运行状况、和处理终止…等。

Kube-proxy

Kube-proxy负责:实现Kubernetes服务的负载均衡、和网络代理。

比如:Kube-proxy配置网络规则(如:iptables或IPVS),以实现服务的负载均衡和路由。

它维护本地的网络规则,将外部请求正确地路由到集群内的相应容器。

容器运行时(如Docker)

Kubernetes支持多种容器运行时,通过CRI(容器运行时接口)与Kubelet进行通信。

常用的容器运行时,包括:Docker、containerd、CRI-O…等。

负责实际的容器操作,如拉取镜像、创建、和启动容器、管理容器生命周期。

作者简介

陈睿|mikechen,10年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    暂无讨论,说说你的看法吧