网站首页 > 教程文章 正文
Kubernetes(K8S)是云计算的未来,也是云原生最核心的部分,下面我就全面来详解Kubernetes(K8S)@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
Kubernetes(K8S)
Kubernetes (K8S) ,是“Google”开发的容器编排平台,用于自动化应用程序的部署、扩展、和管理。
Kubernetes通常被缩写为“K8S”,"8"代表中间省略的8个字母。
Kubernetes (K8S) ,主要解决以下三大关键问题:
1.容器编排和调度
Kubernetes 的核心功能之一是:容器的编排、和调度。
Kubernetes自动化地管理容器,比如:按照资源需求、可用性、拓扑位置...等,调度到合适的节点上运行。
除此之外,Kubernetes (K8S)它还负责:处理容器的生命周期管理,包括启动、停止、重启和销毁容器。
2.应用的弹性伸缩和自愈
Kubernetes 可以根据应用的负载自动调整容器的数量,从而实现弹性伸缩。
当应用负载增加时,Kubernetes 会自动扩展更多的容器来处理请求,反之亦然。
3.大规模管理集群
Kubernetes 的可扩展性、灵活性、和高可用性,能够在大规模集群中有效地管理、和调度容器化应用。
这三大点使得,Kubernetes成为现代云原生架构中不可或缺的核心技术。
Kubernetes(K8S)原理
Kubernetes起源于Google的“Borg”系统,旨在管理大规模的容器化应用。
Kubernetes 借鉴了 Google 内部的大规模集群管理系统 ”Borg“ 的整体架构思想,其核心设计与理念受到了 Borg 的深刻影响。
Kubernetes 的架构主要由:(Master/Node)结构,如下图所示:
Master 是 Kubernetes 集群的控制平面,负责:管理整个集群的状态、和调度。
Node负责运行应用,Master/与Node通过:"API"进行通信。
Kubernetes(K8S)主节点架构
Kubernetes (K8S)的 Master 节点是:整个集群的控制中枢。
整体架构,如下图所示:
Kubernetes (K8S),通过一系列组件(比如:kube-apiserver、kube-scheduler、
kube-controller-manager...等)协调、调度和维护整个集群的正常运行。
kube-apiserver
kube-apiserver角色: Kubernetes 控制平面的入口点,是集群中所有操作的核心。
kube-apiserver功能: kube-apiserver 提供了 REST API,所有对 Kubernetes 集群的管理操作都通过该 API 进行。
如下图所示:
作为集群的唯一入口,kube-apiserver 确保了所有进入集群的请求,都经过了严格的验证和授权,从而保护集群的安全性。
并且,kube-apiserver:处理和验证用户的请求,并将集群的状态写入 etcd 中。
kube-apiserver 通过与 etcd 的紧密集成,保证了集群状态的一致性、和正确性,这对于大型集群中的资源调度和管理至关重要。
除此之外,API Server 也是其他控制平面组件(比如:Scheduler 、和 Controller Manager)与集群通信的接口。
scheduler
kube-scheduler 负责:将新创建的 Pod 分配到合适的节点上。
如下图,最下面”蓝色框“所示:
kube-scheduler 根据 Pod 的资源需求,(比如:CPU、内存...等等)。
以及节点的可用资源、节点的负载情况、以及其他调度策略,来决定将 Pod 调度到哪个节点上。
比如,常见的调度策略有:
- 资源请求与容量(Resource Requests and Limits):根据 Pod 的资源需求、和节点的可用资源进行调度;
- 节点亲和性与反亲和性(Node Affinity and Anti-Affinity):根据节点标签指定 Pod 应该、或不应该调度到哪些节点;
- Pod 亲和性与反亲和性(Pod Affinity and Anti-Affinity):定义 Pod 与其他 Pod 之间的调度关系;
- 污点与容忍(Taints and Tolerations):将特定 Pod 调度到有污点的节点,或避免调度到这些节点;
- 拓扑感知调度(Topology-Aware Scheduling):根据数据中心的拓扑结构优化 Pod 的分布;
- 优先级和抢占(Priority and Preemption):高优先级的 Pod 可以抢占低优先级 Pod 的资源。
controller
角色: 负责集群状态的管理和维护。
功能: kube-controller-manager 运行多个控制器,每个控制器负责管理不同类型的 Kubernetes 资源。
常见的有:节点控制器、复制控制器、端点控制器...等,如下图所示:
ReplicationController
功能: 确保指定数量的 Pod 副本在集群中运行。
如果 Pod 崩溃或被删除,ReplicationController 会启动新的 Pod 以保持副本数量。
ReplicaSet
功能: 是 ReplicationController 的增强版本,支持基于标签选择器的更复杂匹配规则,确保指定数量的 Pod 副本始终运行。
Deployment Controller
功能: 管理应用的部署与更新,通过控制 ReplicaSet 来实现 Pod 的滚动更新、回滚等功能,确保应用无缝升级。
DaemonSet Controller
功能: 确保每个节点(或符合条件的节点)上都运行一个特定的 Pod,通常用于运行系统级服务或守护进程。
StatefulSet Controller
功能: 管理有状态应用的部署,确保 Pod 的顺序启动和停止,并保持其网络标识和存储一致性。
Job Controller
功能: 确保指定数量的 Pod 成功完成其任务(一次性任务),任务完成后 Pod 会被终止。
这些控制器,通过监控集群的状态来确保资源的实际状态与期望状态一致。
Kubernetes(K8S)工作节点
Node 是 Kubernetes 集群中的工作负载运行环境,负责运行 Pod 和管理容器。
Node 在 Kubernetes 集群中扮演着关键的角色,通过 :kubelet、kube-proxy 、和容器运行时这些组件。
Node 整体架构,如下图所示:
kubelet
是 Node 上的核心组件,负责管理本节点上的 Pod 和容器,确保它们按照预期状态运行。
它监控容器的生命周期,并与 Master Node 的 API Server 进行通信,接收调度命令、报告节点状态、以及处理 Pod 的创建、更新和删除。
kube-proxy
kube-proxy 确保集群中不同节点、和 Pod 之间的网络通信。
kube-proxy 运行在每个 Node 上,并根据 Kubernetes Service 的定义,配置网络规则(如 iptables 或 IPVS 规则),以实现流量的负载均衡、和服务发现。
负载均衡:
kube-proxy 负责将流量均匀地分配到多个 Pod 实例中,这种负载均衡使得服务能够在多个 Pod 之间分配请求,从而提高应用的可用性、和扩展性。
服务发现:
通过将服务的虚拟 IP 地址(ClusterIP)映射到实际的 Pod IP 地址,kube-proxy 使得集群中的其他 Pod 和服务能够找到目标服务。
网络代理:
kube-proxy 充当代理层,处理来自集群内部和外部的网络请求,将它们转发到相应的 Pod 上,这包括 TCP、UDP ...等协议的流量。
容器运行时(Container Runtime)
容器运行时,是 kubelet 执行容器操作的底层工具。
kubelet 通过调用容器运行时来拉取镜像、创建容器、启动和停止容器.........等。
比如:用于拉取镜像并运行容器的实际软件,如 Docker 、或 containerd......等容器。
Kubernetes(K8S)实践应用
Kubernetes是一个强大且灵活的容器编排平台,适用于各种规模的应用程序部署、和管理。
比如:
自动化集成
通过Kubernetes与CI/CD工具(如:Jenkins、GitLab CI...等)集成,自动化应用的构建、测试、和部署。
如下图所示:
多租户架构
通过Namespace和RBAC(基于角色的访问控制),实现不同团队或应用的资源隔离和安全控制。
微服务架构
使用Kubernetes管理微服务架构的多个独立服务,服务间通过Service、和Ingress进行通信和暴露。
并且,Kubernetes 为微服务架构提供了全面的支持,通过容器编排、自动化管理、服务发现和负载均衡等功能。
以及,结合 CI/CD 流水线、监控、日志和安全策略,可以构建一个高效的微服务系统。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
猜你喜欢
- 2025-04-08 利用watchtower给群晖中Docker容器定时无损自动更新
- 2025-04-08 dcoker之容器数据卷,以及定制镜像Dockerfile配置与设置
- 2025-04-08 2024年最新整理的Docker大全,非常详细,值得收藏!
- 2025-04-08 松勤软件测试:详解Docker,如何用portainer管理Docker容器
- 2025-04-08 一文详解Docker轻量级虚拟化,镜像和容器
- 2025-04-08 水泵抽水控制案列(水泵的控制)
- 2025-04-08 液体混合装置的模拟控制(三菱PLC)
- 2025-04-08 容器化部署SpringBoot微服务(doctor容器化部署)
- 2025-04-08 Docker容器基于国产平台T3的入门部署方法说明——(3)构建镜像
- 2025-04-08 CTO 说了,如果发现谁用 kill -9 关闭程序就开除
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)