4·基础入门入门

Kubernetes 架构

kubernetesarchitecturecluster

Kubernetes 架构

学习目标

  1. 理解 Kubernetes 集群的整体架构
  2. 掌握 Control Plane 和 Worker Node 的职责
  3. 了解各组件之间的交互关系

核心概念

整体架构

┌─────────────────────────────────────────────────────────────┐
│                    Kubernetes 集群                          │
│                                                             │
│  ┌─────────────────────────────────────┐                   │
│  │         Control Plane (Master)      │                   │
│  │  ┌─────────┐ ┌─────────┐           │                   │
│  │  │ API     │ │etcd     │           │                   │
│  │  │ Server  │ │         │           │                   │
│  │  └─────────┘ └─────────┘           │                   │
│  │  ┌─────────┐ ┌─────────┐           │                   │
│  │  │Scheduler│ │Controller│          │                   │
│  │  │         │ │ Manager  │          │                   │
│  │  └─────────┘ └─────────┘           │                   │
│  └─────────────────────────────────────┘                   │
│                          ↓                                  │
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐     │
│  │ Worker Node 1│  │ Worker Node 2│  │ Worker Node N│     │
│  │ ┌──────────┐ │  │ ┌──────────┐ │  │ ┌──────────┐ │     │
│  │ │  kubelet │ │  │ │  kubelet │ │  │ │  kubelet │ │     │
│  │ └──────────┘ │  │ └──────────┘ │  │ └──────────┘ │     │
│  │ ┌──────────┐ │  │ ┌──────────┐ │  │ ┌──────────┐ │     │
│  │ │kube-proxy│ │  │ │kube-proxy│ │  │ │kube-proxy│ │     │
│  │ └──────────┘ │  │ └──────────┘ │  │ └──────────┘ │     │
│  │ ┌──────────┐ │  │ ┌──────────┐ │  │ ┌──────────┐ │     │
│  │ │Container │ │  │ │Container │ │  │ │Container │ │     │
│  │ │ Runtime  │ │  │ │ Runtime  │ │  │ │ Runtime  │ │     │
│  │ └──────────┘ │  │ └──────────┘ │  │ └──────────┘ │     │
│  └──────────────┘  └──────────────┘  └──────────────┘     │
└─────────────────────────────────────────────────────────────┘

Control Plane 组件

组件职责说明
API Server集群入口所有操作的统一入口点
etcd数据存储存储集群状态和配置
Scheduler调度决策决定 Pod 运行在哪个节点
Controller Manager状态维护确保实际状态匹配期望状态

API Server 详解

功能:
┌─────────────────────────────────────┐
│  • RESTful API 接口                 │
│  • 认证和授权                       │
│  • 数据验证                         │
│  • 乐观锁 (资源版本控制)            │
└─────────────────────────────────────┘

所有组件都通过 API Server 通信:
kubectl → API Server → etcd
kubelet → API Server → etcd
Scheduler → API Server → etcd

etcd 详解

特点:
• 分布式键值存储
• 强一致性 (Raft 协议)
• 高可用 (奇数节点)

存储内容:
• 集群配置
• 资源对象定义
• 状态信息
• Secret 数据

部署模式:
┌─────────────┐
│ 单节点 (开发)│
└─────────────┘
┌─────────────┐
│ 3 节点 (生产)│  ← 推荐
└─────────────┘
┌─────────────┐
│ 5 节点 (大规模)│
└─────────────┘

Worker Node 组件

组件职责说明
kubelet节点代理管理 Pod 生命周期
kube-proxy网络代理实现 Service 网络规则
Container Runtime容器运行时运行容器 (containerd/CRI-O)

kubelet 详解

职责:
┌─────────────────────────────────────┐
│  • 从 API Server 获取 Pod 规格      │
│  • 调用容器运行时创建容器            │
│  • 监控容器状态并汇报               │
│  • 执行健康检查                     │
└─────────────────────────────────────┘

工作流程:
API Server → Pod Spec → kubelet → Container Runtime
    ↓
kubelet → 容器状态 → API Server

kube-proxy 详解

职责:
┌─────────────────────────────────────┐
│  • 维护网络规则 (iptables/IPVS)    │
│  • 实现 Service 负载均衡            │
│  • 转发流量到正确的 Pod             │
└─────────────────────────────────────┘

工作模式:
• iptables 模式 (默认)
• IPVS 模式 (高性能)
• userspace 模式 (已弃用)

组件交互流程

部署一个 Pod 的完整流程:

1. 用户提交 YAML
   kubectl apply -f pod.yaml
       ↓
2. API Server 验证并存储到 etcd
       ↓
3. Scheduler 发现未调度的 Pod
   根据资源、亲和性等选择节点
       ↓
4. API Server 更新 Pod 的 nodeName
       ↓
5. 目标节点的 kubelet 发现新 Pod
       ↓
6. kubelet 调用 Container Runtime
   拉取镜像、创建容器、启动 Pod
       ↓
7. kubelet 向 API Server 汇报状态
       ↓
8. 用户通过 kubectl 查看状态

实践练习

练习 1:理解架构

回答以下问题:

  1. Control Plane 包含哪些核心组件?各自职责是什么?
  2. Worker Node 包含哪些核心组件?各自职责是什么?
  3. 为什么所有组件都通过 API Server 通信?

练习 2:组件关系图

画出以下组件的交互关系:

  • kubectl
  • API Server
  • etcd
  • Scheduler
  • kubelet
  • Container Runtime

练习 3:故障分析

假设一个 Pod 无法启动,分析可能涉及哪些组件的问题:

  1. API Server 故障会怎样?
  2. etcd 故障会怎样?
  3. kubelet 故障会怎样?

常见误解

1. "Master 节点运行容器"

错误理解:Control Plane 节点也运行用户容器
正确理解:
• Control Plane 只运行系统组件
• 用户容器运行在 Worker Node
• 生产环境 Master 不调度用户 Pod

2. "etcd 存储容器"

错误理解:etcd 存储容器数据
正确理解:
• etcd 存储集群状态和配置
• 容器数据存储在 Worker Node
• 容器镜像存储在镜像仓库

3. "kubelet 是容器运行时"

错误理解:kubelet 运行容器
正确理解:
• kubelet 管理 Pod 生命周期
• Container Runtime 运行容器
• kubelet 通过 CRI 接口调用运行时

小结

要点说明
集群组成Control Plane + Worker Node(s)
API Server集群统一入口
etcd分布式状态存储
SchedulerPod 调度决策
kubelet节点代理,管理 Pod
kube-proxy网络规则和负载均衡
Container Runtime运行容器 (containerd/CRI-O)

练习编辑器

bash
Loading...

继续学习

完成本课后,建议继续学习下一课「Kubernetes 核心组件」 以巩固所学知识。