文章目录:

K8S

Kubernetes原理

Master主节点架构组件

1.API Server

2.键值存储etcd

3.ControllerManager

4.Scheduler

工作节点架构组件

1.Kubelet

2.Container Runtime

3.Kube-proxy

4.Pod

K8S的应用


K8S(Kubernetes)是云原生最核心的内容,也是云计算的未来,下满我就全面来详解K8S的原理

K8S

K8S是Kubernetes的缩写,是“google”开发的容器编排平台,主要用于:自动化应用程序的部署、扩展、和管理。

如下图所示:

主要解决:

  • 容器编排:Kubernetes的核心作用,是对容器进行编排;

  • 自动化部署:以及,Kubernetes还能够自动部署容器化应用;

  • 容器调度:以及,根据资源需求、和策略,可以智能调度容器,到适当的节点上运行;

  • 自动扩展:Kubernetes支持自动扩展功能,能够根据需求,动态调整应用资源...等功能。

总之,K8S为容器化应用程序提供了一个全面的管理层,确保应用程序在集群环境中的可伸缩性、和稳定性。

Kubernetes原理

Kubernetes架构组件,包括:多个关键组件,比如:Master主组件、和工作节点组件......等等。

如下图所示:

最核心的组件,包括图上的:主节点(Master Node)组件、以及工作节点(Worker Node)组件...等。

主节点(Master Node)组件,又会包含:apiserver、scheduler、controller...等组件,下面我分别详解@mikechen

Master主节点架构组件

Master节点,负责:管理、和控制整个Kubernetes集群,包含多个组件:apiserver、scheduler、controller...等组件。

如下图所示:

1.API Server

API Server,是Kubernetes的前端,负责:处理RESTful API请求(如:kubectl....命令),并将这些请求分发给其他组件进行处理。

如下图所示,黄色框:

API Server是所有操作的入口,提供集群的统一接口。

比如:统一进行身份认证、授权、API验证、和集群状态的持久化........等功能。

2.键值存储etcd

Kubernetes 使用 etcd 存储所有集群的元数据、和状态信息。

比如,包括:配置信息、状态信息、服务发现信息......等。

kube-apiserver 通过读写 etcd 来管理集群的状态信息,其他组件通过 kube-apiserver 访问 etcd 中的数据。

etcd 通过使用 Raft 协议,来实现分布式一致性,确保数据在多个节点之间的一致性。

3.ControllerManager

Controller Manager负责:执行集群的后台任务,包括:节点控制、副本控制、端点控制、和服务账号控制等。

Controller Manager包含一堆“控制器”,包括:节点控制器、复制控制器、端点控制器、和服务控制器...等。

如下图所示:

  • 节点控制器:负责监视节点的健康状况,发现失效节点并进行恢复/或清理;

  • 复制控制器:确保系统中,总是有预期数量的 Pod 副本在运行;

  • 端点控制器:填充服务和 Pod 之间的关联信息,使服务能够正确找到它们所需要的 Pod;

  • 服务控制器:负责创建、和更新集群内部的服务负载均衡器,(比如:创建云负载均衡器)。

4.Scheduler

Scheduler根据资源需求、策略和约束条件,选择合适的节点运行Pod。

以及,基于资源需求、策略限制、数据位置、工作负载间隔...等标准来做调度决策。

工作节点架构组件

在Kubernetes的工作节点(Worker Node)中,有几个关键组件,它们共同负责运行实际的应用工作负载。

如下图所示,绿色框:

上图右侧的绿框就是Kubernetes工作节点,包含如下组件:

1.Kubelet

Kubelet是 Kubernetes 中的主要节点代理,运行在每个节点上,负责确保容器在 Pod 中运行,并且健康。

核心功能:

  • Pod 创建与管理:负责拉取容器镜像并创建、运行、和管理容器;

  • 健康检查:执行 Pod 和容器的探针(liveness、readiness。。。。。),以确保它们的健康状态;

  • 日志管理:收集、和管理容器的日志。

2.Container Runtime

Container Runtime:分别用于管理容器运行、和镜像,是实际负责拉取容器镜像、启动和停止容器的底层。

Kubernetes支持多种容器运行时,包括:Docker、containerd、和CRI-O.....等。

3.Kube-proxy

kube-proxy 负责:在每个节点上实现 Kubernetes 服务的网络代理,主要处理:网络流量的转发、和负载均衡。

比如:设置iptables、或ipvs规则,来实现服务之间的通信、和负载分配。

4.Pod

Pod是Kubernetes的最小部署单元,如下图所示:

Pod是一个、或多个容器的集合,这些容器共享存储、网络、和运行环境。

每个 Pod ,通常包含:一个主要容器、和一些辅助容器。

并且,Pod 内的容器可以共享数据卷,用于数据持久化、和共享。

以及,通过添加、和删除 Pod 副本,轻松地水平扩展应用程序。

这些组件和概念共同协作,构成了 Kubernetes 的基础架构,使得它能够高效地管理和编排容器化应用。

K8S的应用

K8S的应用非常的广泛,比如最典型的包括:

1、微服务架构

Kubernetes 非常适合运行微服务架构的应用程序,通过:服务发现、负载均衡、和自动扩展.....来管理复杂的微服务部署。

2、DevOps

Kubernetes 支持 CI/CD 管道,简化了应用程序的构建、测试/和部署过程,促进了 DevOps 实践。

3、混合云和多云策略

通过一致的 API 和配置管理,Kubernetes 支持跨多个云提供商、和本地环境的应用程序部署,促进混合云、和多云策略的实现。

4、大数据和机器学习

Kubernetes ,还可以管理大数据处理任务,以及机器学习模型的训练、和推理,支持弹性计算资源的分配。

以上

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐