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 操作系统。

Kubernetes 集群节点拓扑(3 Master + 3 Worker) Master 节点组 kube-apiserver kube-controller-manager kube-scheduler etcd 集群 etcd-1 (master-1) etcd-2 (master-2) etcd-3 (master-3) Worker 节点组 kubelet kube-proxy containerd 说明:Master 节点与 etcd 实例共存部署,减少跨节点通信延迟;Worker 节点运行工作负载与容器运行时。

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 网络插件。