2. 环境准备:Kubernetes集群版本选择、节点规划与基础组件安装(etcd、containerd)
本章聚焦于搭建一个生产就绪的 Kubernetes 基础环境,作为后续集成 Calico 网络策略与平台门户的基石。我们将从版本选型、节点拓扑设计,到 etcd 与 containerd 的安装调优,逐步构建一个稳定、高性能的集群底座。
2.1 Kubernetes 版本选择策略
版本选择直接影响集群的稳定性、安全补丁周期以及与 Calico 的兼容性。建议遵循 N-2 原则,即选择当前最新稳定版的前两个次版本。
| 版本系列 | 状态 | 推荐场景 | Calico 兼容性 |
|---|---|---|---|
| v1.28 | 稳定(LTS) | 生产环境首选,长期维护 | v3.27+ |
| v1.29 | 最新稳定 | 新项目、需要最新特性 | v3.28+ |
| v1.27 | 维护期 | 存量集群升级过渡 | v3.26+ |
选型建议: 本课程选用 Kubernetes v1.28.10,该版本处于长期维护窗口,且与 Calico v3.27.2 经过充分验证。避免使用 alpha 或已进入 EOL 的版本。
2.2 节点规划与拓扑设计
采用 3 Master + 3 Worker 的高可用架构,etcd 集群与 Master 节点共存,以降低网络延迟并简化运维。所有节点使用 Ubuntu 22.04 LTS 操作系统。
2.3 节点规格与资源分配
根据平台门户与 Calico 策略的预期负载,制定以下资源分配方案:
| 角色 | CPU | 内存 | 磁盘(系统+数据) | 数量 |
|---|---|---|---|---|
| Master + etcd | 4 核 | 16 GB | 100 GB SSD + 50 GB SSD (etcd 专用) | 3 |
| Worker | 8 核 | 32 GB | 200 GB SSD | 3 |
磁盘性能警告: etcd 对磁盘延迟极其敏感,必须使用 NVMe SSD 或同等性能的存储。避免使用共享存储或 HDD,否则可能导致集群不稳定。
2.4 基础组件安装:etcd
etcd 作为 Kubernetes 的元数据存储,其稳定性直接决定集群的可用性。以下为 etcd 集群的安装与配置步骤。
2.4.1 下载与安装
# 在所有 Master 节点执行
ETCD_VER=v3.5.12
wget https://github.com/etcd-io/etcd/releases/download/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xvf etcd-${ETCD_VER}-linux-amd64.tar.gz
sudo mv etcd-${ETCD_VER}-linux-amd64/etcd* /usr/local/bin/
2.4.2 生成 etcd 配置文件
以 master-1 节点为例,配置文件路径为 /etc/etcd/etcd.conf:
name: 'etcd-1'
data-dir: /var/lib/etcd
listen-peer-urls: https://192.168.1.10:2380
listen-client-urls: https://192.168.1.10:2379,https://127.0.0.1:2379
initial-advertise-peer-urls: https://192.168.1.10:2380
advertise-client-urls: https://192.168.1.10:2379
initial-cluster: etcd-1=https://192.168.1.10:2380,etcd-2=https://192.168.1.11:2380,etcd-3=https://192.168.1.12:2380
initial-cluster-: etcd-cluster-1
initial-cluster-state: new
client-transport-security:
cert-file: /etc/etcd/ssl/etcd-server.crt
key-file: /etc/etcd/ssl/etcd-server.key
trusted-ca-file: /etc/etcd/ssl/ca.crt
peer-transport-security:
cert-file: /etc/etcd/ssl/etcd-peer.crt
key-file: /etc/etcd/ssl/etcd-peer.key
trusted-ca-file: /etc/etcd/ssl/ca.crt
2.4.3 启动并验证集群
# 启动 etcd 服务
sudo systemctl daemon-reload
sudo systemctl enable etcd
sudo systemctl start etcd
# 验证集群成员
etcdctl --endpoints=https://192.168.1.10:2379 --cacert=/etc/etcd/ssl/ca.crt \
--cert=/etc/etcd/ssl/etcd-server.crt --key=/etc/etcd/ssl/etcd-server.key \
member list
# 预期输出包含 3 个成员,状态为 "unstarted" 或 "started"
关键调优参数: 在 etcd 配置中增加
--snapshot-count=10000 和 --heartbeat-interval=100,可提升大规模集群下的快照效率与心跳稳定性。
2.5 基础组件安装:containerd
containerd 作为容器运行时,负责镜像管理和容器生命周期。选择 containerd 而非 Docker,因其更轻量、与 Kubernetes 集成更紧密。
2.5.1 安装 containerd
# 在所有节点执行
cat <
2.5.2 配置 systemd cgroup 驱动
修改 /etc/containerd/config.toml,确保使用 systemd cgroup 驱动:
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "registry.k8s.io/pause:3.9"
2.5.3 重启并验证
sudo systemctl restart containerd
sudo systemctl enable containerd
# 验证 containerd 状态
sudo ctr version
# 预期输出包含 Server 和 Client 版本信息
2.6 网络与安全基线配置
在安装 Kubernetes 之前,需要完成以下网络与安全设置:
- 关闭 swap:
sudo swapoff -a并注释/etc/fstab中的 swap 条目。 - 设置内核参数: 启用 IPv4 转发和 bridge 过滤。
- 防火墙规则: 开放 Master 节点 6443(apiserver)、2379/2380(etcd)端口;Worker 节点开放 10250(kubelet)端口。
# 内核参数配置
cat <
验证网络: 在所有节点执行
ping -c 3 <其他节点 IP>,确保节点间网络互通。etcd 集群要求节点间延迟低于 10ms。
2.7 环境验证清单
完成上述步骤后,使用以下清单进行环境验证:
| 检查项 | 预期结果 | 验证命令 |
|---|---|---|
| etcd 集群健康 | 3 个成员均为 healthy | etcdctl endpoint health |
| containerd 运行 | Active (running) | systemctl status containerd |
| 内核参数生效 | net.ipv4.ip_forward = 1 | sysctl net.ipv4.ip_forward |
| swap 关闭 | free 显示 swap 为 0 | free -h |
至此,Kubernetes 集群的基础环境已准备就绪。下一阶段将使用 kubeadm 初始化集群并安装 Calico 网络插件。