2. 环境准备:Kubernetes集群搭建(Minikube/Kind)、kubectl配置、Helm安装
本章聚焦于搭建一套可用于《事故响应台账》部署与验证的本地Kubernetes环境。我们将依次完成Minikube与Kind两种单节点集群的搭建、kubectl命令行工具的配置,以及Helm包管理器的安装。选择Minikube或Kind取决于你的操作系统与资源限制,两者均可满足后续课程实验需求。
2.1 集群方案对比与选型建议
在开始安装前,先明确Minikube与Kind的核心差异,以便根据自身环境做出选择。
| 特性 | Minikube | Kind (Kubernetes in Docker) |
|---|---|---|
| 底层依赖 | 虚拟机(Hyper-V / VirtualBox / KVM)或 Docker | 仅需 Docker |
| 启动速度 | 较慢(需创建虚拟机) | 快(容器模拟节点) |
| 资源占用 | 较高(完整VM) | 较低(共享Docker引擎) |
| 多节点支持 | 支持(需额外配置) | 原生支持(通过配置文件) |
| 适用场景 | 需要完整VM隔离、模拟真实节点 | CI/CD、快速迭代、资源受限环境 |
| 推荐人群 | Windows/macOS新手、需要完整体验 | Linux用户、DevOps工程师 |
选型建议: 如果你的机器内存 ≥ 8GB 且希望体验最接近生产环境的集群,选择 Minikube;如果内存 ≤ 4GB 或主要用于快速验证,选择 Kind。本课程后续实验同时兼容两种集群,你无需担心切换成本。
2.2 安装Minikube(虚拟机模式)
Minikube通过创建轻量级虚拟机来运行单节点Kubernetes集群。以下步骤以Linux(Ubuntu 22.04)为例,Windows/macOS操作类似,仅驱动选择不同。
2.2.1 前置检查
- 确认已安装Docker或Hypervisor(如VirtualBox)。
- 确认CPU支持虚拟化(BIOS中已开启VT-x/AMD-V)。
- 确认curl、wget等工具可用。
2.2.2 下载并安装Minikube
# 下载最新版Minikube二进制文件
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
# 安装到系统路径
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 验证安装
minikube version
2.2.3 启动集群
# 使用Docker驱动启动(无需额外虚拟机软件)
minikube start --driver=docker --cpus=2 --memory=4096
# 等待集群就绪,输出类似:
# * minikube v1.32.0 on Ubuntu 22.04
# * Using the docker driver based on existing profile
# * Starting control plane node minikube in cluster minikube
# * Pulling base image ...
# * Preparing Kubernetes v1.28.3 on Docker 24.0.7 ...
# * Done! kubectl is now configured to use "minikube" cluster
2.2.4 验证集群状态
# 查看节点状态
minikube status
# 查看集群信息
kubectl cluster-info
# 查看所有Pod(应看到coredns等系统组件运行)
kubectl get pods -n kube-system
常见问题: 如果启动失败,执行
minikube delete 清理后重试,或指定更低的资源 --cpus=2 --memory=2048。Windows用户建议使用Hyper-V驱动以获得最佳稳定性。
2.3 安装Kind(容器化模式)
Kind将Kubernetes节点作为Docker容器运行,启动速度极快,特别适合CI/CD流水线。
2.3.1 安装Kind CLI
# 使用go install(需先安装Go 1.17+)
go install sigs.k8s.io/kind@latest
# 或使用二进制下载(推荐)
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 create cluster --name incident-response
# 输出示例:
# Creating cluster "incident-response" ...
# ✓ Ensuring node image (kindest/node:v1.28.0) 🖼
# ✓ Preparing nodes 📦
# ✓ Writing configuration 📜
# ✓ Starting control-plane 🕹️
# ✓ Installing CNI 🔌
# ✓ Installing StorageClass 💾
# Set kubectl context to "kind-incident-response"
2.3.3 验证集群
# 查看集群节点(容器)
kind get nodes --name incident-response
# 查看kubeconfig上下文
kubectl config current-context
# 查看节点状态
kubectl get nodes
注意: Kind创建的集群默认不暴露NodePort端口到宿主机。如需访问服务,需使用
kubectl port-forward 或配置Ingress。后续章节会专门讲解端口转发策略。
2.4 kubectl配置与验证
kubectl是操作Kubernetes集群的核心命令行工具。无论使用Minikube还是Kind,kubectl的配置逻辑一致。
2.4.1 安装kubectl
# 下载最新稳定版
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
# 赋予执行权限并移动到系统路径
chmod +x kubectl
sudo mv kubectl /usr/local/bin/kubectl
# 验证版本
kubectl version --client
2.4.2 kubeconfig文件结构
kubectl通过 ~/.kube/config 文件管理集群访问凭证。该文件包含三个核心部分:
- clusters:集群API Server地址与CA证书。
- users:客户端证书或。
- contexts:将集群与用户绑定,并指定默认命名空间。
Minikube和Kind在创建集群后会自动更新kubeconfig。你可以通过以下命令查看当前上下文:
# 查看完整配置
kubectl config view
# 查看当前上下文
kubectl config current-context
# 切换上下文(例如从minikube切换到kind)
kubectl config use-context kind-incident-response
2.4.3 验证kubectl与集群通信
# 测试API Server连通性
kubectl cluster-info
# 列出所有可用的API资源
kubectl api-resources | head -20
# 创建一个测试Pod验证工作正常
kubectl run test-pod --image=nginx --restart=Never
kubectl get pods
kubectl delete pod test-pod
多集群管理技巧: 使用
kubectl config set-context 为不同集群设置别名,配合 kubectx 工具可快速切换。建议将生产、预发、开发集群的上下文名称区分清楚,避免误操作。
2.5 Helm安装与初始化
Helm是Kubernetes的包管理器,用于简化应用的部署、升级和回滚。《事故响应台账》将使用Helm Chart进行一键部署。
2.5.1 安装Helm CLI
# 使用官方脚本安装(自动检测系统架构)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 或使用二进制下载
wget https://get.helm.sh/helm-v3.13.2-linux-amd64.tar.gz
tar -zxvf helm-v3.13.2-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
# 验证版本
helm version
2.5.2 添加Helm仓库
安装完成后,需要添加常用的Chart仓库:
# 添加官方稳定仓库
helm repo add stable https://charts.helm.sh/stable
# 添加Bitnami仓库(常用中间件)
helm repo add bitnami https://charts.bitnami.com/bitnami
# 更新仓库缓存
helm repo update
# 查看已添加的仓库
helm repo list
2.5.3 验证Helm与集群交互
# 查看Helm环境信息
helm env
# 在集群中初始化Helm(Helm 3无需Tiller,直接可用)
# 测试部署一个Nginx Chart
helm install test-nginx bitnami/nginx --namespace default --create-namespace
# 查看部署状态
helm list
kubectl get pods,svc
# 清理测试
helm uninstall test-nginx
Helm 3重要变化: 移除了Tiller服务端组件,所有操作通过kubectl直接与API Server通信,安全性大幅提升。无需再执行
helm init 命令。
2.6 环境验证清单
完成上述步骤后,建议执行以下验证清单,确保环境完全就绪:
| 检查项 | 验证命令 | 预期结果 |
|---|---|---|
| 集群节点状态 | kubectl get nodes |
节点状态为 Ready |
| 系统Pod运行 | kubectl get pods -n kube-system |
coredns、kube-proxy等Pod均为 Running |
| kubectl上下文 | kubectl config current-context |
显示正确的集群名称 |
| Helm版本 | helm version |
输出 v3.x.x 版本号 |
| Helm仓库 | helm repo list |
至少包含一个可用仓库 |
| 部署测试 | helm install test bitnami/nginx |
安装成功,Pod启动 |
避坑提醒: 如果
kubectl get nodes 显示 NotReady,请检查容器运行时(Docker/containerd)是否正常运行,以及CNI网络插件是否安装。Minikube默认安装Calico,Kind默认安装kindnetd,两者均无需额外操作。若使用自定义CNI,请参考对应文档。
2.7 本章小结
至此,你已经完成了《事故响应台账》部署所需的全部基础环境搭建:
- 集群层:Minikube或Kind单节点集群运行正常。
- 工具层:kubectl已配置正确的上下文,可与集群通信。
- 包管理层:Helm v3已安装,并添加了必要的Chart仓库。