1. 课程导论:Kubernetes控制平面核心组件概述、课程目标与学习路径、实验环境准备

1.1 控制平面核心组件概述

Kubernetes 控制平面是集群的“大脑”,负责全局决策与状态协调。理解其核心组件是掌握集群运维与架构设计的起点。控制平面组件可划分为以下三大功能域:

功能域 核心组件 职责简述
API & 状态存储 kube-apiserver + etcd 提供统一 REST 接口,持久化集群状态
调度与控制器 kube-scheduler + kube-controller-manager Pod 调度决策与资源对象的声明式循环调节
高可用与扩展 cloud-controller-manager + 负载均衡器 云厂商集成与多副本 Leader 选举
关键认知: 控制平面组件不运行用户容器,它们只管理集群自身的状态。etcd 是唯一的有状态组件,其余组件均为无状态设计,便于水平扩展与故障恢复。

下图展示了控制平面组件之间的核心交互关系:

Kubernetes 控制平面核心组件交互图 etcd kube-apiserver kube-scheduler kube-controller-manager cloud-controller-manager API 网关 调度器 控制器 状态存储 云集成

1.2 课程目标与学习路径

本课程面向已具备基础 Kubernetes 操作经验的 SRE、平台工程师与架构师,旨在帮助你从“能用”进阶到“会配、会调、会选型”。完成本课程后,你将能够:

  • 独立完成 生产级控制平面的组件选型与版本搭配
  • 深度配置 kube-apiserver 的准入控制、审计日志与资源配额
  • 优化调度 策略,实现自定义调度器与节点亲和性调度
  • 构建高可用 控制平面,包括 etcd 集群与多 API Server 负载均衡
  • 诊断与排障 控制平面常见故障,如 Leader 选举失败、etcd 性能抖动
学习路径建议: 本课程共 30 章,建议按“基础认知 → 组件深入 → 高可用与安全 → 生产实践”四个阶段推进。每章均包含理论讲解、配置示例与动手实验,请确保在实验环境同步操作。

课程知识体系概览:

阶段 章节范围 核心产出
基础认知 第 1-4 章 控制平面组件全景图、etcd 基础、API Server 请求流程
组件深入 第 5-15 章 调度器策略、控制器原理、准入控制、审计日志
高可用与安全 第 16-24 章 多副本部署、TLS 证书管理、RBAC 与 OIDC 集成
生产实践 第 25-30 章 性能调优、故障演练、升级回滚、监控告警

1.3 实验环境准备

本课程所有配置与实验均可在本地环境复现。推荐以下两种部署方式,根据你的资源情况选择其一:

方式一:kubeadm 部署(推荐,模拟生产环境)

kubeadm 是 Kubernetes 官方提供的集群引导工具,适合搭建多节点控制平面。最低要求:2 台虚拟机(2C/4GB 内存),操作系统 Ubuntu 22.04 或 CentOS 7.9。

# 1. 安装容器运行时(containerd)
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
sudo modprobe overlay
sudo modprobe br_netfilter

# 2. 安装 kubeadm、kubelet、kubectl
sudo apt-get update
sudo apt-get install -y kubelet=1.28.0-00 kubeadm=1.28.0-00 kubectl=1.28.0-00
sudo apt-mark hold kubelet kubeadm kubectl

# 3. 初始化控制平面(在 master 节点执行)
sudo kubeadm init --pod-network-cidr=10.244.0.0/16 --control-plane-endpoint=192.168.1.100

# 4. 配置 kubectl
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
注意: 生产环境请勿使用 --pod-network-cidr 默认值,需根据实际网络规划设置。控制平面端点建议使用负载均衡器 VIP 或 DNS 域名。

方式二:minikube 部署(轻量级,适合单节点学习)

minikube 适合资源受限的环境或快速验证配置。支持本地虚拟机驱动(Docker、HyperKit、VirtualBox)。

# 1. 安装 minikube
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube

# 2. 启动集群(指定 Kubernetes 版本与资源)
minikube start --kubernetes-version=v1.28.0 --cpus=4 --memory=8192

# 3. 验证控制平面组件
kubectl get pods -n kube-system

# 4. 启用控制平面组件访问(可选)
minikube addons enable dashboard
实验建议: 本课程后续章节将大量使用 kubectl describe、kubectl logs 和 kubectl exec 来观察控制平面行为。建议在实验环境中提前安装 jq、yq、curl 等工具。

两种部署方式的对比:

特性 kubeadm minikube
节点数量 支持多节点(1 master + N worker) 单节点(可模拟多节点,但非原生)
控制平面高可用 原生支持(堆叠/外部 etcd) 不支持
组件可配置性 完全可定制(kubeadm-config.yaml) 有限(通过 minikube start 参数)
资源占用 较高(建议 4C/8GB 以上) 较低(2C/4GB 可运行)
适用场景 生产模拟、多组件调优 快速原型、单组件验证

下图展示了两种实验环境的架构差异:

实验环境架构对比 kubeadm 多节点 控制平面节点 (Master) Worker 1 Worker 2 minikube 单节点 minikube 虚拟机 控制平面 + Worker 共存 (kube-apiserver, etcd, scheduler, controller-manager) 环境选择建议 学习控制平面组件配置与高可用 → 选择 kubeadm 快速验证单个组件参数或 API 行为 → 选择 minikube
课前检查清单:
  • 确认宿主机已开启虚拟化(BIOS 中启用 VT-x/AMD-V)
  • 确保网络可访问 gcr.io、registry.k8s.io 等镜像仓库(或配置国内镜像代理)
  • 准备至少 20GB 磁盘空间用于存储容器镜像与 etcd 数据
  • 安装 kubectl 自动补全:source <(kubectl completion bash)