一、核心定位

  • 容器编排与自动化运维平台,由 Google 开源,基于 Borg 系统演进而来,解决大规模容器的部署、扩展、管理、自愈问题。

  • 核心逻辑是 “声明式配置”:用户通过 YAML 定义 “期望状态”(如 3 个 Nginx 副本),K8s 通过控制器持续比对实际状态,自动调整至期望状态,无需手动干预。

二、核心组件与架构

在这里插入图片描述

  • 集群节点

    • Master 节点(控制平面):

      • kube-apiserver:所有操作的统一入口,提供 REST API,负责认证、授权和请求处理。

      • etcd:分布式键值数据库,存储集群所有配置和状态数据(如 Pod 数量、Service IP),是集群的 “大脑”。

      • kube-scheduler:根据节点资源(CPU / 内存)、亲和性规则等,智能选择 Pod 运行的 Worker 节点。

      • kube-controller-manager:包含多种控制器(如 Deployment 控制器、Node 控制器),实现自愈、扩缩容等核心功能。

    • Worker 节点(工作节点):

      • kubelet:监听 apiserver 指令,管理本节点 Pod 的生命周期(创建、启动、停止),并定期向 Master 汇报节点状态。

      • kube-proxy:维护节点网络规则,实现 Service 的负载均衡和跨节点通信。

      • 容器引擎(如 containerd):负责容器的实际创建和运行,K8s 通过 CRI(容器运行时接口)与其交互。

三、核心资源对象

在这里插入图片描述

  1. Pod:最小部署单元,包含 1 个或多个紧密关联的容器(如应用容器 + 日志收集容器)。所有容器共享 Pod 的网络(localhost通信)和存储,Pod 重启后 IP 会变化,因此不直接对外提供服务。

  2. Service:为一组相同功能的 Pod 提供固定访问入口,通过标签选择器关联 Pod。类型包括 ClusterIP(集群内访问)、NodePort(节点端口暴露)、LoadBalancer(结合云负载均衡器),自动实现请求分发(负载均衡)。

  3. Deployment:最常用的无状态应用控制器,通过管理 ReplicaSet 实现 Pod 的扩缩容(kubectl scale)、滚动更新(逐个替换旧 Pod,零停机)和版本回滚(kubectl rollout undo)。适用于 web 服务、API 等无本地状态依赖的应用。

  4. StatefulSet:用于管理有状态应用(如 MySQL、Redis 集群),每个 Pod 有固定名称(如 mysql-0、mysql-1)和网络标识,结合 PVC 实现存储持久化,支持有序部署、扩展和更新。

  5. ConfigMap/Secret

  • ConfigMap:存储非敏感配置(如数据库地址、日志级别),通过环境变量或文件挂载注入 Pod,修改后无需重新构建镜像。

  • Secret:存储敏感信息(如密码、证书),内容经 Base64 编码(需配合加密工具增强安全性),使用方式与 ConfigMap 类似。

  1. PV/PVC
  • PV(PersistentVolume):集群级别的存储资源,由管理员创建,可关联物理磁盘、NFS、云存储等。

  • PVC(PersistentVolumeClaim):用户对存储的请求(如 10GB 空间、读写权限),K8s 自动匹配合适的 PV 并绑定,实现存储 “供给” 与 “需求” 的解耦。

  1. Ingress:通过 Ingress Controller(如 Nginx Ingress)实现集群外部访问的统一入口,支持基于域名(如api.example.com)或路径(如 /example/shop)的请求路由,可配置 HTTPS 证书,替代多个 NodePort 的繁琐管理。

四、核心能力与应用场景

  • 核心能力:自动化部署、弹性扩缩容(基于 CPU / 自定义指标)、自愈(Pod 故障重启、节点宕机迁移)、服务发现与负载均衡、滚动更新与回滚、资源隔离与调度。

  • 典型场景:微服务架构部署(Spring Cloud/Dubbo)、大规模容器化应用运维、云原生应用开发、CI/CD 流水线集成(自动部署到 K8s)。

五、常用操作与工具

  • kubectl:命令行工具,核心操作:

    • 查看资源:kubectl get pods/services/deployments(-o wide 查看详情,-n 指定命名空间)。

    • 创建 / 更新资源:kubectl apply -f xxx.yaml(推荐,支持增量更新)。

    • 排查问题:kubectl describe pod <name>(查看事件和状态)、kubectl logs <name>(查看日志)、kubectl exec -it <name> -- bash(进入容器)。

  • 辅助工具:Minikube/Kind(本地集群搭建)、kube-ps1(命令行显示当前集群 / 命名空间)、Lens(图形化管理界面)。

六、其他

  • 理解 “控制器模式”:K8s 的自愈、扩缩容等能力均基于控制器的 “调谐循环”(监控→对比→调整)。

  • 掌握 Pod、Service、Deployment 的联动关系:Deployment 管理 Pod,Service 关联 Pod 并提供访问入口,这是 K8s 的基础工作流。

  • 重视实践:通过部署实际应用(如 Nginx+MySQL)理解资源对象的配置和交互,遇到问题优先查阅官方文档或排查 etcd 数据、kubelet 日志。

Logo

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

更多推荐