一、Kubernetes 简介

Kubernetes(简称 K8s)是 Google 开源的一个 容器编排系统,目前由 CNCF(Cloud Native Computing Foundation) 维护。

它的目标是让容器化应用的 部署、扩缩、运维 更自动化,解决单机 Docker 无法很好支持 大规模应用管理 的问题。

👉 关键词:自动化、弹性伸缩、服务发现、跨机器编排


二、Kubernetes 的发展背景

  1. 单机部署时代

    • 应用直接运行在物理机 → 难以隔离、浪费资源。

  2. 虚拟机时代

    • VMware、KVM 等虚拟机解决了资源隔离,但启动慢、运维复杂。

  3. 容器时代(Docker)

    • 容器轻量级,启动快,适合微服务架构。

    • 问题:容器编排、调度、运维复杂,需要更高层次的管理。

  4. Kubernetes 出现

    • 来源:Google 内部的 Borg/Omega 系统经验。

    • 提供完整的容器生命周期管理。


三、Kubernetes 核心概念

1. 基础对象

  • Pod
    最小部署单元,包含一个或多个容器(共享存储和网络)。

  • Service
    把一组 Pod 对外暴露为一个网络服务,支持负载均衡和服务发现。

  • Volume
    容器共享的存储卷,解决数据持久化问题。

  • Namespace
    逻辑隔离,常用于多租户环境。

2. 高级对象

  • Deployment
    管理无状态应用(如 Web 服务),支持滚动更新、回滚。

  • StatefulSet
    管理有状态应用(如 MySQL、Kafka),Pod 有固定顺序和唯一标识。

  • DaemonSet
    在每个节点运行一个 Pod(如日志收集、监控 Agent)。

  • Job / CronJob
    一次性任务 / 定时任务。

3. 控制器

  • ReplicaSet:确保某个 Pod 副本数量。

  • Horizontal Pod Autoscaler (HPA):根据负载自动扩缩 Pod。


四、Kubernetes 架构

Kubernetes 采用 主从架构(Master / Worker)

1. 控制平面(Control Plane)

运行在 Master 节点,主要组件:

  • API Server:所有操作的入口(kubectl、UI、API 调用)。

  • etcd:分布式键值存储,保存集群状态。

  • Scheduler:负责 Pod 调度,决定 Pod 运行在哪个 Node。

  • Controller Manager:执行各种控制器逻辑(Deployment、Node 管理等)。

2. 工作节点(Worker Node)

运行应用的地方,主要组件:

  • kubelet:节点上的代理,负责 Pod 的生命周期。

  • kube-proxy:实现 Service 的负载均衡与网络代理。

  • Container Runtime:容器运行时(Docker、containerd、CRI-O)。

3. 网络模型

  • 每个 Pod 都有唯一 IP(CNI 插件实现,比如 Flannel、Calico)。

  • Pod 与 Pod 跨 Node 通信无需 NAT。

  • Service 提供稳定访问入口


五、工作流程(示例)

  1. 用户执行命令:

    kubectl create deployment nginx --image=nginx
  2. API Server 接收请求 → 写入 etcd

  3. Controller Manager 发现需要创建 Pod。

  4. Scheduler 选择合适的 Node。

  5. kubelet 在目标 Node 启动容器。

  6. kube-proxy 配置网络规则,让外部流量能访问该 Pod。


六、Kubernetes 特性

  1. 自愈能力:Pod 异常退出会自动拉起。

  2. 滚动更新与回滚:更新应用时逐个替换 Pod,出错时回退。

  3. 自动扩缩:支持 Pod 数量自动调整。

  4. 服务发现与负载均衡:内置 DNS 和代理机制。

  5. 存储编排:自动挂载 PV/PVC。

  6. 多租户支持:通过 Namespace、RBAC 权限控制。


七、Kubernetes 的优缺点

优点缺点
自动化运维(自愈、扩缩容)学习曲线陡峭
跨平台(公有云/私有云/裸机)集群搭建和维护复杂
微服务友好,支持 CI/CD资源开销大(Master 节点、etcd)
社区活跃、生态丰富Debug 难度高,涉及网络/存储/安全

八、Kubernetes 应用场景

  1. 互联网企业:大规模微服务架构(电商、社交、视频)。

  2. 大数据/AI:调度 Spark、TensorFlow 分布式任务。

  3. 金融行业:高可用交易系统、风控系统。

  4. 混合云/多云:应用跨云部署,避免厂商锁定。


九、和 Docker 的关系

  • Docker 提供 容器运行时

  • Kubernetes 是 容器编排平台,可以使用 Docker 也可以用 containerd。
    👉 可以理解为:Docker 解决单个容器,K8s 解决成百上千容器的管理问题


十、常用命令

# 查看节点
kubectl get nodes

# 查看 Pod
kubectl get pods -n kube-system

# 部署应用
kubectl create deployment myapp --image=nginx

# 扩缩容
kubectl scale deployment myapp --replicas=5

# 暴露服务
kubectl expose deployment myapp --port=80 --type=NodePort

总结

Kubernetes 是一个 容器编排和管理平台,通过自动化方式实现应用的:

  • 部署

  • 扩缩容

  • 负载均衡

  • 服务发现

  • 存储管理

  • 监控与运维

它已经成为 云原生的事实标准,是现代微服务架构的基石。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐