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 环境架构总览

下图展示了本章将要搭建的完整环境组件及其关系:

环境准备:组件架构图 工作站 Helm CLI + kubectl kubectl Minikube 集群 控制平面 Worker CSI 驱动 (门禁) kubectl Kind 集群 控制平面 Worker CSI 驱动 (门禁) 可切换 图例 工作站 Minikube Kind CSI 门禁

2.3 安装Minikube集群

Minikube支持多种驱动(Docker、HyperKit、VirtualBox等)。以下步骤以Docker驱动为例,这是最简洁的方式:

  1. 安装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
  1. 启动集群(指定驱动与资源)
# 使用Docker驱动,分配2核CPU、4GB内存、20GB磁盘
minikube start --driver=docker --cpus=2 --memory=4096 --disk-size=20g

# 启用CSI相关addon(后续实验需要)
minikube addons enable csi-hostpath-driver
  1. 验证集群状态
# 查看节点
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场景。安装步骤如下:

  1. 安装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
  1. 创建多节点集群配置文件
# kind-config.yaml
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
  - role: worker
  - role: worker
  1. 启动集群
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 查看集群健康状态。