K8s
K8s是Kubernetes的简称,是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序。K8s由Google于2014年开源,现由云原生计算基金会(CNCF)维护,已成为云原生应用的事实标准。

开发背景
K8s源于Google内部使用超过15年的大规模集群管理系统Borg。2013年,Docker容器技术的兴起使应用容器化成为趋势,但缺乏成熟的容器编排工具。Google工程师团队基于Borg的经验,使用Go语言重新设计开发了Kubernetes,并于2014年6月在GitHub上开源。
2015年7月,Kubernetes发布1.0版本,同时Google与Linux基金会合作成立了云原生计算基金会,将Kubernetes捐赠给CNCF作为种子项目。此后,K8s迅速获得业界支持,微软、IBM、Red Hat、VMware等科技巨头纷纷加入贡献者行列。
核心概念与架构
基本概念
K8s引入了一系列抽象概念来描述容器化应用的部署和管理:
- Pod:K8s中最小的部署单元,包含一个或多个容器,共享网络和存储资源
- Node:集群中的工作节点,可以是物理机或虚拟机,负责运行Pod
- Cluster:由多个Node组成的集群,提供统一的资源池
- Service:为Pod提供稳定的网络访问入口,实现负载均衡
- Namespace:用于资源隔离的虚拟集群
- Deployment:声明式的应用部署和更新管理
架构设计
K8s采用主从架构,分为控制平面和数据平面:
控制平面(Master节点)包含:
- API Server:集群的统一入口,处理REST请求
- etcd:分布式键值存储,保存集群状态数据
- Scheduler:负责Pod的调度分配
- Controller Manager:运行各种控制器,维护集群期望状态
数据平面(Worker节点)包含:
- Kubelet:节点代理,管理Pod生命周期
- Kube-proxy:网络代理,实现服务发现和负载均衡
- Container Runtime:容器运行时,如Docker、containerd等

主要功能
自动化部署与回滚
K8s支持声明式配置,用户只需描述应用的期望状态,系统自动完成部署。通过YAML或JSON文件定义资源对象,K8s会持续监控并确保实际状态与期望状态一致。当应用更新出现问题时,可以快速回滚到之前的稳定版本。
服务发现与负载均衡
K8s为每个Service分配唯一的DNS名称和IP地址,容器可以通过服务名访问其他服务。内置的负载均衡器自动将流量分发到健康的Pod实例,支持多种负载均衡策略。
自动扩缩容
水平Pod自动扩缩容(HPA)根据CPU使用率、内存占用或自定义指标自动调整Pod副本数量。垂直Pod自动扩缩容(VPA)可以调整Pod的资源请求和限制。集群自动扩缩容(Cluster Autoscaler)根据负载自动增减节点数量。
存储编排
K8s支持多种存储后端,包括本地存储、网络文件系统(NFS)、云存储(如AWS EBS、Azure Disk)等。通过持久卷(PV)和持久卷声明(PVC)机制,实现存储资源的动态供应和管理。
自我修复
K8s持续监控容器健康状态,自动重启失败的容器、替换不响应的容器、杀死未通过健康检查的容器。当节点故障时,自动将Pod重新调度到健康节点上,确保应用高可用。
技术特点
声明式API
K8s采用声明式而非命令式的管理方式,用户描述「想要什么」而非「如何做」。这种设计使配置更易于版本控制、审计和自动化,符合基础设施即代码(IaC)理念。
可扩展性
K8s提供了丰富的扩展机制:
- 自定义资源定义(CRD):扩展API对象类型
- Operator模式:封装运维知识,实现应用自动化管理
- 准入控制器:在资源创建前进行验证和修改
- 调度器扩展:自定义Pod调度策略
- 网络插件(CNI):支持多种网络方案
- 存储插件(CSI):集成各类存储系统
多云与混合云支持
K8s提供统一的抽象层,屏蔽底层基础设施差异,可以运行在公有云、私有云、混合云和边缘环境。主流云服务商都提供托管的K8s服务,如Amazon EKS、Google GKE、Azure AKS、阿里云ACK等。
应用场景
微服务架构
K8s是部署微服务应用的理想平台,每个微服务可以独立打包为容器,通过Service实现服务间通信,利用Ingress提供统一的外部访问入口。配合服务网格(Service Mesh)如Istio,可以实现更精细的流量管理和安全控制。
持续集成与持续部署
K8s与CI/CD工具深度集成,支持Jenkins、GitLab CI、Argo CD等。开发团队可以实现代码提交后自动构建、测试、部署到K8s集群,大幅提升交付效率。
大数据与机器学习
K8s可以运行Apache Spark、Hadoop等大数据处理框架,以及TensorFlow、PyTorch等机器学习训练任务。通过资源配额和优先级管理,实现多租户环境下的资源共享和隔离。
边缘计算
轻量级K8s发行版如K3s、MicroK8s适用于边缘设备和物联网场景,可以在资源受限的环境中运行容器化应用,实现云边协同。
生态系统
K8s拥有庞大的生态系统,CNCF托管了数百个相关项目:
- 容器运行时:Docker、containerd、CRI-O
- 网络:Calico、Flannel、Cilium、Weave Net
- 存储:Rook、Longhorn、OpenEBS
- 监控:Prometheus、Grafana、Jaeger
- 日志:Fluentd、Elasticsearch、Kibana
- 安全:Falco、Open Policy Agent、Vault
- 包管理:Helm、Kustomize
截至2024年,K8s已成为容器编排领域的绝对主导者,全球数百万开发者使用,超过90%的企业在生产环境中采用。K8s不仅改变了应用部署方式,更推动了云原生技术的普及和DevOps文化的发展。