1. 课程导论:Kubernetes控制平面核心组件概述、课程目标与学习路径、实验环境准备
1.1 控制平面核心组件概述
Kubernetes 控制平面是集群的“大脑”,负责全局决策与状态协调。理解其核心组件是掌握集群运维与架构设计的起点。控制平面组件可划分为以下三大功能域:
| 功能域 | 核心组件 | 职责简述 |
|---|---|---|
| API & 状态存储 | kube-apiserver + etcd | 提供统一 REST 接口,持久化集群状态 |
| 调度与控制器 | kube-scheduler + kube-controller-manager | Pod 调度决策与资源对象的声明式循环调节 |
| 高可用与扩展 | cloud-controller-manager + 负载均衡器 | 云厂商集成与多副本 Leader 选举 |
关键认知: 控制平面组件不运行用户容器,它们只管理集群自身的状态。etcd 是唯一的有状态组件,其余组件均为无状态设计,便于水平扩展与故障恢复。
下图展示了控制平面组件之间的核心交互关系:
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 可运行) |
| 适用场景 | 生产模拟、多组件调优 | 快速原型、单组件验证 |
下图展示了两种实验环境的架构差异:
课前检查清单:
- 确认宿主机已开启虚拟化(BIOS 中启用 VT-x/AMD-V)
- 确保网络可访问 gcr.io、registry.k8s.io 等镜像仓库(或配置国内镜像代理)
- 准备至少 20GB 磁盘空间用于存储容器镜像与 etcd 数据
- 安装 kubectl 自动补全:
source <(kubectl completion bash)