3. 环境准备:安装 kind、kubectl、clusterctl 工具,配置 Docker 环境

本章是 CAPI 课程的基础环境搭建环节。在开始管理集群生命周期之前,需要在本机构建一套轻量、可复现的“控制平面”环境。我们将依次安装 Docker(容器运行时)、kind(本地 K8s 集群)、kubectl(集群交互 CLI)以及 clusterctl(CAPI 管理 CLI),并验证各工具的连通性。

环境要求:建议使用 Linux(Ubuntu 22.04+)或 macOS(Intel/Apple Silicon),内存 ≥ 8 GB,磁盘 ≥ 20 GB 空闲空间。Windows 用户推荐通过 WSL2 执行本流程。

3.1 工具链概览与版本兼容性

下表列出核心工具及其在 CAPI 工作流中的角色。版本号以课程编写时的稳定版本为例,实际安装时请参考官方最新 release。

工具 版本示例 核心作用 安装方式
Docker Engine 24.0+ 容器运行时,为 kind 提供节点镜像运行基础 官方脚本 / 包管理器
kind v0.20+ 在 Docker 容器中创建本地 K8s 集群(控制面 + worker) 二进制下载 / go install
kubectl v1.28+ 与 K8s API Server 交互,管理集群资源 二进制下载 / 包管理器
clusterctl v1.6+ CAPI 命令行工具:初始化管理集群、部署 provider、生成集群模板 二进制下载
版本对齐原则:kubectl 的次版本号应与目标 K8s 集群的次版本号相差 ≤ 1。clusterctl 会自动检测兼容的 CAPI provider 版本,无需手动匹配。

3.2 安装 Docker 并配置用户权限

Docker 是 kind 运行的基础。以下步骤适用于 Ubuntu/Debian 系,其他发行版请参考 Docker 官方文档。

# 1. 卸载旧版本(如有)
sudo apt-get remove docker docker-engine docker.io containerd runc

# 2. 安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 3. 添加 Docker 官方 GPG 密钥和仓库
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 4. 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 5. 将当前用户加入 docker 组(避免每次 sudo)
sudo usermod -aG docker $USER
newgrp docker   # 或重新登录终端

# 6. 验证安装
docker --version
docker run hello-world
常见问题:如果执行 docker run 时出现 permission denied,说明用户未正确加入 docker 组,请执行 sudo usermod -aG docker $USER 并重新登录。Apple Silicon Mac 用户需安装 Docker Desktop for Mac,并确保启用 “Use Rosetta for x86/amd64 emulation”。

3.3 安装 kind(Kubernetes IN Docker)

kind 将 K8s 控制面和 worker 节点以容器方式运行,是 CAPI 实验环境的首选。安装方式推荐直接下载二进制。

# 下载 kind 二进制(Linux / macOS amd64)
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64

# 赋予执行权限并移动到 PATH
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

# 验证安装
kind version

# (可选)macOS Apple Silicon 用户请使用 arm64 版本
# curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-darwin-arm64

3.4 安装 kubectl

kubectl 是操作 K8s 集群的 CLI 工具。建议安装与目标集群版本匹配的版本,本课程使用 v1.28。

# 下载 kubectl 二进制
curl -LO "https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl"

# 验证校验和(可选)
curl -LO "https://dl.k8s.io/v1.28.0/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check

# 赋予执行权限并移动到 PATH
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl

# 验证安装
kubectl version --client

3.5 安装 clusterctl(CAPI 管理工具)

clusterctl 是 CAPI 生态的“瑞士军刀”,负责管理集群模板、provider 安装和集群生命周期操作。

# 下载 clusterctl 二进制
curl -L https://github.com/kubernetes-sigs/cluster-api/releases/download/v1.6.0/clusterctl-linux-amd64 -o clusterctl

# 赋予执行权限并移动到 PATH
chmod +x clusterctl
sudo mv clusterctl /usr/local/bin/clusterctl

# 验证安装
clusterctl version
网络加速:如果下载 GitHub release 较慢,可使用代理或镜像站。例如:export https_proxy=http://127.0.0.1:7890(根据本地代理地址调整)。

3.6 验证环境:创建第一个 kind 集群

完成工具安装后,通过创建一个单节点 kind 集群来验证所有组件的连通性。这也是后续 CAPI 管理集群的雏形。

# 创建 kind 集群(默认名称为 kind)
kind create cluster --name capi-mgmt

# 等待集群就绪(约 1-2 分钟)
kubectl cluster-info --context kind-capi-mgmt

# 查看节点状态
kubectl get nodes

# 查看系统 Pod 状态
kubectl get pods -n kube-system

如果 kubectl cluster-info 返回 API Server 地址且 kubectl get nodes 显示 Ready 状态,则环境搭建成功。

工具链与 kind 集群关系架构 宿主机(Docker Engine + 用户空间) kind 集群容器(capi-mgmt) 控制面容器(kube-apiserver, etcd, controller-manager, scheduler) Worker 容器(kubelet, kube-proxy, container runtime) kubectl clusterctl kind CLI 说明:kind 在 Docker 容器中运行 K8s 节点;kubectl 和 clusterctl 通过 kubeconfig 与集群交互 clusterctl 负责管理 CAPI provider,kind 仅提供底层 K8s 集群

3.7 环境检查清单

使用以下命令快速验证所有工具是否就绪:

# 检查 Docker
docker info | grep "Server Version"

# 检查 kind
kind version

# 检查 kubectl
kubectl version --client --short

# 检查 clusterctl
clusterctl version

# 检查集群连通性
kubectl get nodes -o wide

如果所有命令均返回正常版本号且集群节点为 Ready,则环境准备完成。后续章节将基于此环境部署 CAPI provider 并创建 workload 集群。

课后练习:尝试使用 kind delete cluster --name capi-mgmt 删除集群,然后重新创建,熟悉 kind 的快速销毁与重建能力。这是 CAPI 生命周期管理的基础操作模式。