Kubernetes
Kubernetes(简称K8s)是Google于2014年开源的容器编排平台,现由云原生计算基金会(CNCF)管理,其名称源自希腊语“舵手”,寓意对容器化应用的精准调度。它基于Google内部Borg系统的十余年生产经验,通过声明式配置和自动化管理,解决了容器化应用在部署、扩展、运维中的核心问题。 截至2025年,Kubernetes已成为容器编排的事实标准,支撑从微服务到AI训练等多样化场景,其设计理念和分层架构(核心层、应用层、管理层等)持续推动云计算领域的创新。未来,随着安全特性(如RBAC、审计日志)和跨集群联邦能力的增强,Kubernetes将进一步巩固其在云原生生态中的核心地位。 架构 Control plane Kubernetes控制面板(Control Plane)是整个Kubernetes集群的核心组件,负责管理和协调各个节点和资源。它包含多个关键组件,各组件协同工作来管理容器的调度、资源分配、集群状态维护、以及提供API供客户端与集群交互。 工作流程概览 用户通过kubectl命令与kube-apiserver通信,发出API请求。 kube-apiserver接收请求,验证后将所需数据存入etcd。 kube-scheduler根据调度策略选择合适的Node节点运行Pod。 kube-controller-manager监控集群状态,根据定义的策略调整资源以保证期望状态。 cloud-controller-manager则用于与云环境通信,管理云上的资源。 控制平面确保了集群的自愈能力、弹性扩展以及安全访问。 kube-apiserver kube-apiserver是控制平面的核心组件,提供Kubernetes集群的REST API接口。它是唯一允许与etcd直接交互的组件。 主要负责接收、验证和处理来自用户、管理员和其他组件的请求,并将这些请求存储到etcd。 客户端通过kube-apiserver查询集群状态、获取资源信息、发送指令等。可以通过kubectl命令行工具与其交互。 etcd etcd是Kubernetes的分布式键值存储系统,用来保存所有集群的数据和状态信息。 它在数据一致性方面表现优异,确保在多节点环境中,所有节点的数据是同步的。 主要用于存储集群的配置信息、状态信息和对象定义,作为集群的“数据库”。 kube-scheduler kube-scheduler负责将Pod调度到合适的Node节点上。 在接收到新的Pod请求后,它会根据预定义的调度策略(如节点资源利用率、负载均衡)选择最佳的Node节点。 经过调度后,Pod会被分配到一个具体的Node上,并由kubelet启动并运行。 kube-controller-manager kube-controller-manager包含多个控制器(Controller),每个控制器负责不同的控制逻辑。 常见的控制器包括: Node Controller:监控节点的状态,在节点失联时做出相应处理。 Replication Controller:确保指定数量的Pod副本在集群中始终处于运行状态。 Endpoint Controller:为Service对象管理Endpoints。 Service Account & Token Controller:创建默认的ServiceAccount并管理其关联的token。 kube-controller-manager通过不断地“检测-校正”的过程来维持集群的所需状态。 cloud-controller-manager (仅在使用云提供商时需要) cloud-controller-manager是用于在Kubernetes上管理与云服务提供商相关资源的组件。 它提供对云资源的访问和管理功能,例如负载均衡器、存储卷和网络设置。 这个组件通常包含多个控制器(例如Node、Route、Service等),以适应云平台的特性和需求。 Node kubelet kubelet 是Kubernetes架构中负责管理和维护每个 Node 上容器生命周期的核心组件。它在每个 Node 上运行,负责与 Control plane(如kube-apiserver)进行通信,确保 Pod 在 Node 上正确创建、运行和报告状态。 Pod生命周期管理 kubelet的主要任务是管理节点上Pod的生命周期。具体职责包括: 创建和销毁Pod:根据控制平面的调度决定拉取容器镜像并启动Pod,同时在不需要时销毁Pod。 容器健康检查:定期检查容器的健康状况,根据定义的探针(如Liveness Probe和Readiness Probe)判断是否重启或重新启动不健康的容器。 自动重启:当容器崩溃或不健康时,根据定义的重启策略自动重启容器。 节点资源管理 kubelet监控节点的资源使用情况,包括CPU、内存、存储等资源。它确保节点上的容器不会超过资源限制,并在资源不足时及时通知控制平面。 ...