如果你已经熟悉了 Docker 容器,那么下一步必然要面对 Kubernetes(简称 K8s)。它已经成为云原生时代的事实标准,是容器编排领域的“操作系统”。本文将从 Kubernetes 的起源讲起,解释它解决了什么问题、核心价值是什么、整体架构如何,以及为什么它能成为云原生生态的基石。读完本文,你将建立起对 K8s 的整体认知。

一、Kubernetes 的起源:从 Borg 到开源
Kubernetes 源自 Google 内部使用了十多年的集群管理系统 Borg 和 Omega。Google 每天运行着数十亿个容器,Borg 负责调度和管理这些海量任务。2014 年,Google 将 Kubernetes 作为开源项目对外发布,并把它的核心经验贡献给了社区。

2015 年,Kubernetes 与 Google 和 Linux 基金会共同成立了 CNCF(云原生计算基金会)。K8s 也成为 CNCF 的第一个毕业项目,标志着它已经足够成熟、稳定。

二、Kubernetes 解决了什么问题?
在没有 Kubernetes 之前,容器化应用面临以下难题:

问题	描述
容器分布	如何将容器调度到合适的机器上?如何保证高可用?
弹性伸缩	流量高峰期需要增加容器实例,低峰期缩容,如何自动化?
服务发现与负载均衡	容器 IP 是动态的,如何让客户端访问到正确的服务?
存储管理	状态应用(如数据库)如何持久化数据,并在容器重启后重新挂载?
滚动更新与回滚	如何零停机发布新版本,出问题了如何快速回退?
自我修复	容器挂了怎么办?节点宕机了怎么办?

Kubernetes 通过声明式 API 和控制循环的架构,将上述问题变成内置能力。你只需要告诉 K8s“我想要什么”(例如:运行 3 个 Nginx 副本),K8s 会不断调整实际状态以达到期望状态。

三、Kubernetes 的核心价值
自动化部署与运维:一次编写 YAML,即可在任意 K8s 集群上运行。

弹性伸缩:支持水平自动伸缩(HPA),基于 CPU、内存或自定义指标。

服务发现与负载均衡:内置 Service 资源,提供固定 IP 和 DNS 名称,自动负载均衡到后端 Pod。

存储编排:支持多种存储后端(本地、NFS、云存储),通过 PV/PVC 抽象让应用无需关心底层存储细节。

自我修复:Pod 故障自动重启;节点故障时自动将 Pod 重新调度到健康节点。

配置与密钥管理:ConfigMap 和 Secret 实现配置与敏感数据分离。

批量任务:支持一次性任务(Job)和定时任务(CronJob)。

四、Kubernetes 与 Docker Swarm 对比
特性	Kubernetes	Docker Swarm
学习曲线	陡峭	平缓
生态	极丰富(Helm、Operator、Service Mesh)	较小
自动伸缩	HPA、VPA、KEDA	需第三方
存储	CSI 插件、PV/PVC	简单 volume
网络	CNI 插件(Calico、Flannel、Cilium)	内置 overlay
高可用	成熟的多副本控制平面	多 Manager 节点
更新策略	滚动更新、蓝绿、金丝雀	滚动更新
适用规模	从几台到上万台节点	小型集群(<100 节点)
结论:对于学习、生产级应用,Kubernetes 是更值得投入的方向。

五、Kubernetes 的整体架构
Kubernetes 集群由 控制平面(Control Plane) 和 工作节点(Worker Node) 组成。

控制平面(Master 节点)
组件	职责
kube-apiserver	集群的统一入口,所有操作(kubectl、其他组件)都通过它,提供 REST API。
etcd	分布式键值存储,保存所有集群数据(状态、配置)。
kube-scheduler	监听新创建的 Pod,为其选择最合适的节点运行。
kube-controller-manager	运行各种控制器(Deployment、ReplicaSet、Node 等),不断将实际状态调谐到期望状态。
cloud-controller-manager	与云厂商交互(可选,管理负载均衡、存储卷等)。

工作节点(Node)
组件 职责
kubelet 节点上的代理,负责管理 Pod 和容器,与 API Server 通信。
kube-proxy 维护网络规则,实现 Service 的负载均衡(iptables/IPVS)。
容器运行时 运行容器的软件(如 containerd、CRI-O、Docker(已弃用))。
架构简图
text
±-------------------------------------------------+
| Control Plane (Master) |
| ±---------+ ±---------+ ±------------------+ |
| | apiserver| | etcd | | scheduler | |
| ±---------+ ±---------+ ±------------------+ |
| ±---------------------+ ±------------------+ |
| | controller-manager | | cloud-controller | |
| ±---------------------+ ±------------------+ |
±-------------------------------------------------+
| |
| (kubelet API) |
±-------------------------------------------------+
| Worker Node 1 |
| ±-------+ ±-------+ ±----------------------+ |
| |kubelet | |kube-proxy| | container runtime | |
| ±-------+ ±-------+ ±----------------------+ |
| ±--------------------------------------------+ |
| | Pod | Pod | Pod | | |
| ±--------------------------------------------+ |
±-------------------------------------------------+
六、Kubernetes 核心资源概览
Kubernetes 通过资源对象(Resource)来定义应用和基础设施。常见的资源类型:

资源	层级	作用
Pod	最底层	一组容器的集合,共享网络和存储。
Deployment	控制器	管理无状态应用的 Pod 副本,支持滚动更新。
Service	网络	为一组 Pod 提供稳定的访问入口(IP/DNS)。
Ingress	网络	七层路由,将外部请求转发到 Service。
ConfigMap / Secret	配置	存储配置和敏感数据。
PersistentVolumeClaim	存储	申请持久存储。
Namespace	隔离	资源隔离,用于多租户或环境划分。

七、Kubernetes 与云原生
CNCF 对云原生的定义:“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。其代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API。”

Kubernetes 是云原生生态的核心底座。围绕它,衍生出了大量项目:

服务网格:Istio、Linkerd

CI/CD:ArgoCD、Tekton

监控:Prometheus、Grafana

日志:Loki、EFK

安全:Falco、Kyverno

八、小结
Kubernetes 是一个功能强大、生态丰富的容器编排平台,解决了分布式系统运维中的诸多难题。虽然学习曲线较陡,但一旦掌握,便能显著提升部署效率和系统稳定性。无论你是开发还是运维,K8s 都将成为你职业生涯中的重要技能。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐