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 ,还可以管理大数据处理任务,以及机器学习模型的训练、和推理,支持弹性计算资源的分配。
以上
版权归原作者 IT小灵通 所有, 如有侵权,请联系我们删除。