2. 环境准备:Kubernetes集群搭建(Minikube/Kind)、Helm CLI安装与配置、kubectl配置
本章是《CSI驱动变更门禁》课程的实践起点。在搭建自动化门禁系统之前,必须准备好一套可本地运行的Kubernetes环境、安装Helm CLI并正确配置kubectl。我们将采用Minikube与Kind两种主流本地集群方案,并对比其适用场景,确保你能够根据自身资源与需求灵活选择。
2.1 本地Kubernetes集群方案对比
Minikube与Kind是社区最常用的本地K8s环境。下表从关键维度进行对比,帮助你快速决策:
| 维度 | Minikube | Kind (Kubernetes in Docker) |
|---|---|---|
| 底层技术 | 虚拟机(Hypervisor)或Docker | Docker容器作为节点 |
| 启动速度 | 较慢(需创建VM) | 快(秒级启动容器) |
| 资源占用 | 较高(VM开销) | 较低(容器原生) |
| 多节点支持 | 支持(需额外配置) | 原生支持(配置文件定义) |
| 持久化存储 | 内置CSI驱动支持 | 需手动挂载或使用本地卷 |
| 适用场景 | 完整K8s体验、CSI测试 | CI/CD流水线、快速验证 |
推荐策略:本课程后续的CSI驱动变更门禁实验,建议优先使用Minikube,因为它对存储插件(CSI)的支持更完善,且内置了addon管理机制。若你仅需快速验证Helm部署流程,Kind是更轻量的选择。
2.2 环境架构总览
下图展示了本章将要搭建的完整环境组件及其关系:
2.3 安装Minikube集群
Minikube支持多种驱动(Docker、HyperKit、VirtualBox等)。以下步骤以Docker驱动为例,这是最简洁的方式:
- 安装Minikube二进制
# Linux / macOS (使用curl下载最新版)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
# 验证安装
minikube version
- 启动集群(指定驱动与资源)
# 使用Docker驱动,分配2核CPU、4GB内存、20GB磁盘
minikube start --driver=docker --cpus=2 --memory=4096 --disk-size=20g
# 启用CSI相关addon(后续实验需要)
minikube addons enable csi-hostpath-driver
- 验证集群状态
# 查看节点
kubectl get nodes
# 查看CSI驱动Pod是否运行
kubectl get pods -n kube-system | grep csi
关键参数说明:
--driver=docker:将Minikube运行在Docker容器中,无需虚拟机。--cpus=2 --memory=4096:确保有足够资源运行CSI驱动与控制平面。csi-hostpath-driver:Minikube内置的CSI hostpath驱动,适合本地测试。
2.4 安装Kind集群
Kind完全基于Docker容器,适合CI/CD场景。安装步骤如下:
- 安装Kind二进制
# Linux
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
- 创建多节点集群配置文件
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
- 启动集群
kind create cluster --config kind-config.yaml --name csi-demo
# 验证
kubectl cluster-info --context kind-csi-demo
注意:Kind默认不包含CSI驱动。若需测试CSI门禁,必须手动部署CSI Provisioner或使用Minikube。本课程后续实验将默认使用Minikube环境。
2.5 安装与配置Helm CLI
Helm是Kubernetes的包管理工具,本课程将用它部署CSI驱动与门禁规则。安装步骤:
# 使用官方脚本安装Helm v3(最新稳定版)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
# 验证
helm version
# 添加常用仓库(后续实验需要)
helm repo add stable https://charts.helm.sh/stable
helm repo add csi-driver https://raw.githubusercontent.com/kubernetes-csi/csi-driver-host-path/main/charts
helm repo update
Helm CLI配置完成后,建议验证其与集群的连通性:
# 列出已安装的Chart(初始应为空)
helm list -A
# 测试CSI驱动Chart是否可获取
helm search repo csi-driver
2.6 kubectl配置与验证
kubectl是操作Kubernetes集群的命令行工具。Minikube和Kind都会自动生成kubeconfig文件,但需要确保上下文正确:
# 查看当前kubeconfig上下文
kubectl config current-context
# 若使用Minikube,自动切换上下文
minikube update-context
# 若使用Kind,上下文名为 kind-<集群名>
kubectl config use-context kind-csi-demo
# 验证集群访问
kubectl get nodes -o wide
下表总结了不同集群的kubeconfig管理方式:
| 集群类型 | kubeconfig位置 | 上下文命名规则 | 切换命令 |
|---|---|---|---|
| Minikube | ~/.kube/config (自动合并) | minikube | kubectl config use-context minikube |
| Kind | ~/.kube/config (自动合并) | kind-<集群名> | kubectl config use-context kind-csi-demo |
| 自定义 | 手动指定 KUBECONFIG 环境变量 | 自定义 | export KUBECONFIG=/path/to/config |
2.7 环境验证清单
完成上述安装后,请逐项检查以下清单,确保环境就绪:
- 集群运行中:
kubectl get nodes返回 Ready 状态。 - CSI驱动可用:
kubectl get csidrivers返回至少一个 CSI 驱动对象。 - Helm CLI正常:
helm version输出 v3.x 版本信息。 - Chart仓库可访问:
helm repo list显示已添加的仓库。 - kubectl上下文正确:
kubectl config current-context指向目标集群。
快速诊断:若
kubectl get nodes 超时或报错,请检查 ~/.kube/config 文件权限(应为 600)以及集群是否正在运行。Minikube用户可执行 minikube status 查看集群健康状态。