1. 引言

Kubernetes(简称 K8s)是当前云原生领域最核心的容器编排平台。对于初学者而言,K8s 涉及的概念众多、体系庞大,容易让人感到无从下手。本文系统梳理 K8s 的主要学习内容,帮助读者建立清晰的知识框架,按阶段循序渐进地掌握这一关键技术。

2. 基础概念与架构

学习 K8s 的第一步是理解其核心架构和基本对象模型,这是后续所有操作的基础。

2.1 核心架构组件

  • 控制平面(Control Plane):负责集群的全局决策,包括 API Server、Scheduler、Controller Manager 和 etcd。
  • 工作节点(Worker Node):运行实际业务容器的机器,包含 kubelet、kube-proxy 和容器运行时(如 containerd)。
  • API Server:集群所有操作的入口,提供 RESTful 接口,是各组件通信的中枢。
  • etcd:分布式键值存储,保存集群的全部状态数据。

2.2 核心资源对象

  • Pod:K8s 中最小的调度和运行单元,一个 Pod 可包含一个或多个容器。
  • Deployment:管理无状态应用的副本、滚动更新和回滚。
  • Service:为 Pod 提供稳定的网络访问入口,实现负载均衡和服务发现。
  • ConfigMap 与 Secret:配置管理和敏感信息存储。
  • Namespace:用于资源隔离和逻辑分组。

3. 工作负载管理

掌握如何部署和管理应用是 K8s 学习的重点内容,需要熟悉各类工作负载资源的使用场景。

3.1 常用工作负载

  • Deployment:适用于无状态应用,支持声明式更新和弹性伸缩。
  • StatefulSet:适用于有状态应用(如数据库),提供稳定的网络标识和持久化存储。
  • DaemonSet:确保每个节点运行一个 Pod,常用于日志采集和监控代理。
  • Job 与 CronJob:用于一次性任务和定时任务。

3.2 滚动更新与回滚

需要掌握 Deployment 的滚动更新策略、就绪探针(Readiness Probe)和存活探针(Liveness Probe)的配置,以及如何通过版本历史进行快速回滚。

4. 服务发现与网络

K8s 网络模型是学习中的难点,需要理解集群内部和外部的流量路径。

4.1 Service 类型

  • ClusterIP:集群内部访问的默认类型。
  • NodePort:通过节点端口对外暴露服务。
  • LoadBalancer:对接云厂商负载均衡器。
  • Ingress:基于 HTTP/HTTPS 的七层路由,实现域名和路径转发。

4.2 网络插件

需要了解 CNI(容器网络接口)的工作原理,以及 Calico、Flannel 等主流网络插件的选型与配置。

5. 存储管理

有状态应用离不开持久化存储,这是生产环境落地 K8s 必须掌握的内容。

  • Volume:Pod 级别的存储卷,生命周期与 Pod 绑定。
  • PersistentVolume(PV):集群级别的存储资源抽象。
  • PersistentVolumeClaim(PVC):用户对存储资源的请求。
  • StorageClass:动态创建 PV 的模板,实现按需分配存储。

6. 配置与密钥管理

应用配置与敏感信息的管理是日常运维的高频操作。

  • ConfigMap:将配置与镜像解耦,支持环境变量、命令行参数和挂载文件三种使用方式。
  • Secret:Base64 编码存储敏感数据,支持 Opaque、dockerconfigjson 等类型。
  • 安全实践:掌握 Secret 的加密存储、RBAC 权限控制和最小化暴露原则。

7. 安全与权限控制

生产集群的安全加固是 K8s 学习的高级内容,涉及身份认证、授权和准入控制三个层面。

7.1 RBAC 权限模型

  • Role 与 ClusterRole:定义权限规则集合。
  • RoleBinding 与 ClusterRoleBinding:将角色绑定到用户或服务账号。
  • ServiceAccount:为 Pod 提供身份标识。

7.2 安全加固要点

  • Pod Security Admission(PSA)策略。
  • NetworkPolicy 实现网络隔离。
  • 镜像签名与漏洞扫描。
  • API Server 的 TLS 认证与审计日志。

8. 可观测性

监控、日志和链路追踪是保障集群稳定运行的重要手段。

  • 监控:Prometheus + Grafana 是 K8s 生态的事实标准,需要掌握指标采集、告警规则配置。
  • 日志:了解 Loki、EFK(Elasticsearch + Fluentd + Kibana)等日志采集方案。
  • 资源监控:掌握 Metrics Server 和 HPA(Horizontal Pod Autoscaler)的联动机制。

9. 集群运维与故障排查

实际工作中,集群的日常运维和问题定位能力至关重要。

9.1 常用运维命令

# 查看集群节点状态
kubectl get nodes
查看 Pod 详细信息
kubectl describe pod <pod-name>
查看 Pod 日志
kubectl logs -f <pod-name>
进入容器执行命令
kubectl exec -it <pod-name> -- /bin/sh
查看集群事件
kubectl get events --sort-by='.lastTimestamp'

9.2 常见故障场景

  • Pod 一直处于 Pending 状态(资源不足或调度失败)。
  • Pod 反复重启(探针失败或容器崩溃)。
  • Service 无法访问(标签选择器不匹配或端口配置错误)。
  • 节点 NotReady(kubelet 异常或网络插件故障)。

10. 学习路线建议

建议按照以下阶段循序渐进地学习,每个阶段配合动手实验效果更佳。

阶段学习内容实践目标
第一阶段容器基础(Docker)、K8s 核心概念与架构搭建单节点集群,部署第一个 Nginx 应用
第二阶段工作负载、Service、ConfigMap、Secret完成一个多服务应用的部署与配置管理
第三阶段存储、网络、安全与 RBAC部署有状态应用,配置网络策略和权限控制
第四阶段可观测性、集群运维、故障排查搭建监控告警体系,模拟并解决常见故障

11. 总结

K8s 的学习内容涵盖架构原理、工作负载、网络、存储、安全、可观测性和运维实践等多个方面。建议以官方文档为主线,结合 minikube 或 kind 搭建本地实验环境,通过动手实践加深理解。掌握上述核心内容后,再逐步深入 Operator 开发、服务网格(Istio)等进阶方向,即可在生产环境中熟练运用 K8s。

更多推荐