云原生技术全景图:CNCF 生态解读与学习路线

系统梳理 CNCF 云原生计算基金会的技术全景图,剖析容器编排、服务网格、可观测性、GitOps、Serverless 等核心领域,并给出从入门到进阶的系统化学习路线

云原生技术全景图:CNCF 生态解读与学习路线

引言:为什么需要一张全景图

云原生(Cloud Native)经过近十年的发展,已经从最初"用 Docker 跑应用"演化为一个庞大而复杂的技术体系。对于面试者或刚入门的工程师来说,最常见的困惑不是某个具体工具怎么用,而是:

  • 这片技术森林到底长什么样?
  • 各个组件之间是什么关系?
  • 我应该按什么顺序学?

CNCF(Cloud Native Computing Foundation,云原生计算基金会)给出的官方全景图(CNCF Landscape)是回答这些问题的最佳参照。本文将带你系统地解读这张图,并给出一条经过实战检验的学习路线。

第一章:CNCF 与云原生的官方定义

1.1 CNCF 是什么

CNCF 成立于 2015 年 7 月,隶属于 Linux 基金会,是目前云原生领域最具影响力的中立组织。它的核心使命是:

  • 推动云原生技术的标准化与开源协作
  • 托管 Kubernetes、Prometheus、Envoy 等明星项目
  • 通过认证(如 CKA/CKAD)建立人才标准

1.2 云原生的官方定义

CNCF 对"云原生"的官方定义包含三大特征:

容器化封装、自动化管理、面向微服务——并且这些能力能够在公有云、私有云、混合云等多种环境中提供一致的使用体验。

更进一步,CNCF 在 2018 年补充了"声明式 API"和"面向微服务的可观测性"等要素,形成了今天大家普遍认同的技术原则集合。

第二章:CNCF 全景图分层解读

CNCF Landscape 将整个生态分为多个层次。理解这些层次,比死记硬背某个工具更重要。

2.1 横向分层:应用定义与开发层

这一层关注"如何把代码变成可发布的制品",主要包含:

  • 镜像与容器构建:Docker、Buildah、Podman
  • CI/CD:GitHub Actions、GitLab CI、Jenkins、Argo Workflows
  • 数据存储抽象:数据库 Operator、Vitess
  • 应用定义:Helm、Kustomize、Open Application Model (OAM)

2.2 编排与管理层

这是云原生的"操作系统"——Kubernetes 及其生态:

  • 容器编排:Kubernetes(事实标准)、Nomad
  • 调度与策略:Kube-scheduler、调度框架、Volcano
  • Operator 模式:CRD + Controller 的扩展机制
  • 多集群管理:Karmada、ClusterAPI、Rancher

2.3 运行时层

提供容器运行所必需的基础设施:

  • 容器运行时:containerd、CRI-O、runC
  • 网络:CNI 插件(Calico、Cilium、Flannel)
  • 存储:CSI 插件、 Rook(Kubernetes 原生的 Ceph 编排)
  • 操作系统:K3s、K0s、Talos、Container Optimized OS

2.4 平台层:PaaS 与开发者门户

让开发者自助使用底层 K8s:

  • 应用平台:OpenShift、Rancher、VMware Tanzu
  • 开发者门户:Backstage、DevSpace
  • Serverless 平台:Knative、OpenFaaS、KubeVirt

2.5 可观测性与分析层

生产环境的"眼睛":

  • Metrics:Prometheus、Thanos、Cortex
  • Logging:Loki、EFK(Elasticsearch+Fluentd+Kibana)
  • Tracing:Jaeger、Zipkin、Tempo
  • 可视化:Grafana(统一面板)

2.6 服务层:无服务器与集成

  • 消息流:Kafka、NATS、RabbitMQ
  • API 网关:Kong、Envoy Gateway、APISIX
  • 服务网格:Istio、Linkerd、Consul Connect、Cilium Service Mesh

2.7 安全与合规层

  • 镜像安全:Trivy、Clair、Anchore
  • 运行时安全:Falco、Tetragon
  • 密钥管理:Vault、External Secrets Operator
  • 策略执行:OPA / Gatekeeper、Kyverno

第三章:项目成熟度模型

CNCF 把项目按成熟度分为三个等级,面试时常被问到:

等级 含义 代表项目
Graduated(毕业) 经过生产广泛验证,被多家厂商采纳 Kubernetes、Prometheus、Envoy、containerd、Cilium
Incubating(孵化) 功能稳定,但生态尚在形成 Argo、Flux、Thanos、Tempo、OpenTelemetry
Sandbox(沙箱) 早期阶段,API 可能变化 众多新兴项目

面试加分点:能说出某个项目的成熟度等级,并解释为什么——这背后反映的是你对生产可用性的判断能力。

第四章:技术演进的内在逻辑

云原生技术看似繁杂,背后却有清晰的演进逻辑:

4.1 关注点分离原则

每一层只解决一类问题:

1
2
应用代码  →  容器镜像  →  Pod 调度  →  服务通信  →  可观测性
 (业务)    (打包)     (编排)      (网格)       (运维)

这就是为什么会有 CRI、CNI、CSI、 SMI(Service Mesh Interface)等"接口规范"的出现。

4.2 声明式 API 的胜利

Kubernetes 最伟大的发明不是 Pod,而是声明式 API + 控制器模式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
spec:
  replicas: 3       # 我希望有 3 个副本
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx
        image: nginx:1.25

用户只描述"期望状态",控制器持续调和(reconcile)“实际状态”。这种思想渗透到了 GitOps、Operator、Service Mesh 的所有设计中。

4.3 标准化与可插拔

几乎所有云原生组件都遵循"核心 + 插件"的架构:

核心 标准化接口 插件
Kubernetes CRI containerd、CRI-O
Kubernetes CNI Calico、Cilium、Flannel
Kubernetes CSI Rook-Ceph、Longhorn
Kubernetes SMI / Gateway API Istio、Cilium Service Mesh

面试高频问题:为什么 Kubernetes 自己不做网络和存储?

答:因为不同业务场景对网络和存储的需求差异极大。Kubernetes 的核心价值是"调度与编排",把可插拔能力交给生态,既保持了核心的精简,又让生态百花齐放。

第五章:系统化学习路线

基于全景图,我给你推荐一条6 个月的学习路线:

阶段一:打地基(4-6 周)

  • Linux 与网络基础:进程、cgroup、namespace、iptables
  • Docker 核心:镜像、容器、卷、网络、Dockerfile 最佳实践
  • Kubernetes 基础概念:Pod、Deployment、Service、Namespace

阶段二:核心掌握(6-8 周)

  • Kubernetes 进阶:调度策略、RBAC、ConfigMap/Secret、PV/PVC
  • Helm:Chart 编写、values 模板、生命周期管理
  • Ingress / Gateway API:七层路由、TLS 终结

阶段三:进阶专题(4-6 周)

每个专题选一个深入:

  • 可观测性:Prometheus + Grafana + Loki
  • 服务网格:Istio 或 Linkerd 的流量管理、可观测、安全
  • CI/CD:GitOps + ArgoCD
  • Operator 开发:CRD、Controller-runtime

阶段四:生产实战(4 周)

  • 多集群管理:Karmada 或 ClusterAPI
  • 安全加固:OPA、镜像扫描、运行时检测
  • 混沌工程:Chaos Mesh 验证系统弹性

第六章:面试常见问题

Q1:CNCF 有哪些毕业项目?能说出 5 个吗?

Kubernetes、Prometheus、Envoy、containerd、Cilium、CoreDNS、Fluentd、gRPC、Helm 等。说出 5 个以上能体现你对生态的了解。

Q2:CRI、CNI、CSI 分别是什么?

容器运行时接口、容器网络接口、容器存储接口。Kubernetes 通过这三套接口把可插拔能力交给生态。

Q3:声明式 API 和命令式 API 的区别?

命令式告诉系统"怎么做",声明式告诉系统"我要什么"。声明式的优势是幂等、自愈、便于版本化管理。

结语:站在全景图上看问题

面试云原生岗位时,最容易踩的坑是"只见树木不见森林"——你可能熟记 kubectl 命令,却在问到"为什么这样设计"时哑口无言。

建议你把这张全景图打印贴在工位旁边,每次学习新工具前先在全景图上找到它的位置。理解位置比记住命令更重要。

下一篇,我们将深入 Kubernetes 的核心组件:API Server、Scheduler 与 Controller Manager,理解它们的内部工作原理。


本文为云原生系列面试准备文章,建议结合《Kubernetes 核心原理》系列阅读。

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 Stack 由 Jimmy 设计