2. 环境准备:Docker 与 Docker Compose 安装,Minikube 或 Kind 集群搭建,kubectl 与 Helm 工具配置
本章将搭建完整的本地云原生实验环境,作为后续 etcd 压测与 Loki 告警分层实战的基础设施。所有工具均采用当前稳定版本,并针对国内网络环境提供镜像加速配置。
2.1 环境总览与版本要求
本课程沙盘所需的核心组件及推荐版本如下表所示。请确保主机满足最低资源要求:4 核 CPU、8 GB 内存、20 GB 可用磁盘空间。
| 组件 | 推荐版本 | 用途 | 最低版本 |
|---|---|---|---|
| Docker Engine | 24.0.7 | 容器运行时 | 20.10.0 |
| Docker Compose | 2.23.0 | 多容器编排 | 2.0.0 |
| Kind | 0.20.0 | 本地 Kubernetes 集群 | 0.17.0 |
| kubectl | 1.28.4 | Kubernetes 命令行工具 | 1.24.0 |
| Helm | 3.13.2 | Kubernetes 包管理 | 3.10.0 |
2.2 Docker 与 Docker Compose 安装
Docker 是整个沙盘的基石,负责运行 etcd、Loki 等中间件容器。以下步骤基于 Ubuntu 22.04 LTS,其他 Linux 发行版请参照官方文档调整包管理器。
2.2.1 安装 Docker Engine
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加 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
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 启动并验证
sudo systemctl enable docker
sudo systemctl start docker
docker --version
2.2.2 配置镜像加速与用户权限
国内用户建议配置 Docker 镜像加速器,避免拉取镜像超时。同时将当前用户加入 docker 组,避免每次使用 sudo。
# 配置镜像加速(以阿里云为例,请替换为你的加速地址)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<your-mirror-id>.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2"
}
EOF
# 重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# 将当前用户加入 docker 组
sudo usermod -aG docker $USER
newgrp docker
# 验证无需 sudo
docker run hello-world
2.2.3 验证 Docker Compose
Docker Compose v2 已作为 Docker CLI 插件集成,直接使用 docker compose 命令即可。
docker compose version
# 预期输出:Docker Compose version v2.23.0
docker compose(v2,Go 版)以避免语法兼容性问题。本课程所有 Compose 文件均基于 v2 格式。
2.3 Kind 集群搭建
Kind(Kubernetes in Docker)通过将每个节点运行在 Docker 容器中,实现轻量级本地集群。我们使用 Kind 创建包含 1 个控制平面 + 2 个工作节点的三节点集群,模拟生产环境的多节点拓扑。
2.3.1 安装 Kind
# 下载 Kind 二进制
curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
# 验证安装
kind version
2.3.2 创建集群配置文件
创建 kind-config.yaml,定义节点角色与端口映射。我们将 etcd 客户端端口 2379 映射到宿主机,方便后续压测工具直接访问。
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
extraPortMappings:
- containerPort: 30000
hostPort: 30000
protocol: TCP
- role: worker
- role: worker
2.3.3 启动集群并验证
# 创建集群
kind create cluster --config kind-config.yaml --name loki-lab
# 验证节点状态
kubectl cluster-info --context kind-loki-lab
kubectl get nodes -o wide
# 预期输出:3 个节点均为 Ready 状态
2.4 kubectl 与 Helm 配置
kubectl 是操作 Kubernetes 集群的核心 CLI,Helm 则用于快速部署 Loki、etcd 等复杂应用。两者均需与集群版本匹配,避免 API 兼容性问题。
2.4.1 安装 kubectl
# 下载 kubectl 二进制
curl -LO "https://dl.k8s.io/release/v1.28.4/bin/linux/amd64/kubectl"
# 验证校验和
curl -LO "https://dl.k8s.io/release/v1.28.4/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
# 安装并赋予执行权限
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl
# 验证版本
kubectl version --client
2.4.2 配置 kubeconfig
Kind 创建集群后会自动将上下文写入 ~/.kube/config。如果使用多个集群,可通过 kubectl config use-context 切换。
# 查看当前上下文
kubectl config current-context
# 切换到 loki-lab 集群
kubectl config use-context kind-loki-lab
# 验证集群访问
kubectl get nodes
2.4.3 安装 Helm
# 下载 Helm 安装脚本
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 验证版本
helm version
# 添加常用仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo add grafana https://grafana.github.io/helm-charts
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm repo add grafana https://grafana.github.io/helm-charts --insecure-skip-tls-verify。生产环境不建议跳过 TLS 验证。
2.5 环境验证清单
完成上述安装后,执行以下命令进行全链路验证,确保所有组件正常工作。
| 验证项 | 命令 | 预期结果 |
|---|---|---|
| Docker 运行 | docker run --rm hello-world |
打印 Hello from Docker! |
| Docker Compose | docker compose version |
Docker Compose version v2.23.0 |
| Kind 集群 | kubectl get nodes |
3 节点 Ready |
| kubectl 版本 | kubectl version --client |
Client Version: v1.28.4 |
| Helm 仓库 | helm repo list |
至少包含 prometheus-community 和 grafana |
kubectl get nodes 显示 NotReady,请检查 Docker 是否正常运行:systemctl status docker。如果 Kind 创建集群失败,尝试 kind delete cluster --name loki-lab 后重新创建。
2.6 本章小结
至此,我们完成了以下环境准备工作:
- 安装并配置了 Docker Engine 24.0.7 与 Docker Compose v2,配置了镜像加速和用户权限。
- 使用 Kind 0.20.0 创建了 1 控制平面 + 2 工作节点的三节点集群,并映射了端口 30000。
- 安装了 kubectl 1.28.4 与 Helm 3.13.2,添加了 Prometheus、Grafana、Bitnami 等常用 Helm 仓库。
- 执行了全链路验证,确保所有组件可正常通信。