4. 环境准备:安装 K8s 集群与 kubectl 配置
在开始构建 GitOps 流水线之前,必须准备一个可用的 Kubernetes 集群环境。本章将指导你完成以下核心任务:安装轻量级 K8s 集群(Minikube 或 K3s)、安装命令行工具 kubectl,以及配置 kubeconfig 文件以建立集群连接。这些是后续所有 GitOps 实践的基础设施前提。
4.1 环境概览与工具矩阵
下表列出了本课程所需的核心组件及其版本要求。请确保你的操作系统满足最低配置。
| 组件 | 版本要求 | 用途 | 安装方式 |
|---|---|---|---|
| Minikube | ≥ v1.30 | 本地单节点 K8s 集群 | 二进制 / 包管理器 |
| K3s | ≥ v1.27 | 轻量级生产级 K8s 集群 | 官方安装脚本 |
| kubectl | ≥ v1.28 | K8s 命令行控制工具 | 二进制 / 包管理器 |
| Docker | ≥ 24.0 | 容器运行时(Minikube 驱动) | 官方仓库 |
| kubeconfig | — | 集群访问凭证与上下文 | 自动生成 / 手动配置 |
4.2 安装 Minikube(推荐用于本地开发)
Minikube 是运行单节点 K8s 集群的最快方式,特别适合 GitOps 流水线的本地验证。以下步骤基于 Linux/macOS 环境。
- 安装 Docker(作为 Minikube 驱动):
# Ubuntu / Debian
sudo apt-get update && sudo apt-get install -y docker.io
sudo systemctl enable --now docker
# macOS (Homebrew)
brew install docker
- 安装 Minikube 二进制文件:
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
- 启动集群:
minikube start --driver=docker --cpus=2 --memory=4096
minikube status 应显示 host: Running、kubelet: Running、apiserver: Running。
4.3 安装 K3s(轻量级备选方案)
如果你的环境资源有限,或希望模拟更接近生产的多节点场景,K3s 是更优选择。K3s 将 K8s 组件打包为单个二进制,内存占用极低。
# 安装 K3s 服务端(单节点集群)
curl -sfL https://get.k3s.io | sh -
# 检查节点状态
sudo k3s kubectl get nodes
K3s 安装完成后会自动生成 /etc/rancher/k3s/k3s.yaml 配置文件,该文件可直接用作 kubeconfig。
4.4 安装 kubectl
kubectl 是与 K8s 集群交互的核心 CLI。无论选择 Minikube 还是 K3s,都需要独立安装 kubectl。
# 下载最新稳定版 kubectl
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 赋予执行权限并移动到 PATH
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# 验证版本
kubectl version --client
4.5 配置 kubeconfig
kubeconfig 文件定义了集群、用户和上下文的映射关系。kubectl 默认读取 ~/.kube/config。以下是两种典型场景的配置方法。
4.5.1 Minikube 自动配置
Minikube 启动后会自动生成 kubeconfig 并合并到默认路径:
# 查看当前上下文
kubectl config current-context
# 输出应为:minikube
4.5.2 K3s 手动配置
K3s 生成的配置文件默认位于 /etc/rancher/k3s/k3s.yaml,需要复制到用户目录并修改权限:
mkdir -p ~/.kube
sudo cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
sudo chown $(id -u):$(id -g) ~/.kube/config
export KUBECONFIG=~/.kube/config
# 验证集群连接
kubectl cluster-info
4.5.3 多集群上下文管理
当同时管理多个集群时,可以使用 kubectl config 命令切换上下文:
| 命令 | 说明 |
|---|---|
kubectl config get-contexts |
列出所有上下文 |
kubectl config use-context <name> |
切换当前上下文 |
kubectl config set-context <name> --namespace=<ns> |
设置默认命名空间 |
4.6 环境验证清单
完成上述安装后,请执行以下命令确认环境就绪:
# 1. 检查 kubectl 版本
kubectl version --client --short
# 2. 检查集群节点
kubectl get nodes -o wide
# 3. 检查核心组件状态
kubectl get pods -n kube-system
# 4. 测试部署一个简单应用
kubectl create deployment nginx-test --image=nginx:alpine
kubectl get deployments
kubectl delete deployment nginx-test
4.7 环境架构示意
下图展示了本课程所使用的本地开发环境整体架构,包括 Minikube 集群、kubectl 客户端、kubeconfig 配置以及后续将集成的 GitOps 组件。
4.8 常见问题与排错
- kubectl 无法连接集群: 检查
kubectl config view输出的 server 地址是否正确。Minikube 使用minikube ip获取地址;K3s 默认监听 6443 端口。 - Minikube 启动失败: 确保 Docker 服务运行中,且当前用户具有 Docker 组权限(
sudo usermod -aG docker $USER后重新登录)。 - K3s 权限错误: kubeconfig 文件权限必须为 600,且属主为当前用户。使用
chmod 600 ~/.kube/config修复。 - 上下文冲突: 如果同时安装 Minikube 和 K3s,kubeconfig 可能包含多个上下文。使用
kubectl config rename-context重命名以避免混淆。