2. 环境准备:Kubernetes集群搭建要求、kubectl配置、Helm安装、测试Namespace创建
在开始配置 Ingress Controller 与服务目录之前,必须确保底层 Kubernetes 集群满足最低资源与版本要求,并完成命令行工具与包管理器的初始化。本章将依次覆盖集群规格、kubectl 配置、Helm 安装以及测试 Namespace 的创建,为后续实验提供一致的基础环境。
2.1 Kubernetes 集群搭建要求
本课程所有实验基于 Kubernetes v1.28+,推荐使用 3 节点(1 Master + 2 Worker) 的最小生产级拓扑。以下表格列出了关键组件版本与资源阈值:
| 组件 | 最低版本 | 推荐版本 | 说明 |
|---|---|---|---|
| Kubernetes | v1.26 | v1.28+ | 支持 Gateway API v1beta1 及 Ingress v1 |
| etcd | v3.5 | v3.5.9+ | 集群状态存储,建议 SSD 磁盘 |
| containerd | v1.6 | v1.7+ | CRI 运行时,替代 Docker |
| coredns | v1.9 | v1.11+ | 集群 DNS 解析 |
| Calico / Cilium | v3.25 | v3.27+ | CNI 网络插件,支持 NetworkPolicy |
资源最低要求: Master 节点 2 vCPU / 4 GB RAM,Worker 节点 2 vCPU / 4 GB RAM,根分区 50 GB。若使用 Minikube 或 Kind 本地环境,需确保宿主机可用内存 ≥ 8 GB。
2.2 kubectl 配置与验证
kubectl 是操作集群的唯一命令行入口。配置步骤如下:
- 下载 kubectl(版本与集群 API Server 版本偏差 ≤ 1 个 minor 版本)
- 设置 kubeconfig:将集群管理员提供的
config文件放置到~/.kube/config - 验证集群连通性
# 下载 kubectl(Linux amd64 示例)
curl -LO "https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/
# 配置 kubeconfig
mkdir -p ~/.kube
cp /path/to/cluster-config ~/.kube/config
# 验证集群状态
kubectl cluster-info
kubectl get nodes -o wide
多集群管理: 使用
KUBECONFIG 环境变量或 kubectl config use-context 切换集群。建议将不同集群的 config 文件合并到 ~/.kube/config 中,通过 context 区分。
2.3 Helm 安装
Helm 是 Kubernetes 的包管理器,后续安装 Ingress Controller 和 Service Catalog 均依赖 Helm Chart。推荐使用 Helm v3.14+(无需 Tiller)。
# 安装 Helm(Linux amd64)
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
chmod 700 get_helm.sh
./get_helm.sh
# 验证版本
helm version --short
# 添加常用仓库
helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
| Helm 命令 | 用途 | 示例 |
|---|---|---|
helm repo add |
添加 Chart 仓库 | helm repo add stable https://charts.helm.sh/stable |
helm search repo |
搜索仓库中的 Chart | helm search repo ingress-nginx |
helm install |
部署 Chart 到集群 | helm install my-ingress ingress-nginx/ingress-nginx |
helm list |
列出已部署的 Release | helm list -A |
2.4 测试 Namespace 创建
为避免实验资源污染默认 default 命名空间,统一创建独立的测试 Namespace:
# 创建测试 Namespace
kubectl create namespace ingress-lab
# 设置当前上下文默认使用该 Namespace(可选)
kubectl config set-context --current --namespace=ingress-lab
# 验证
kubectl get ns ingress-lab
kubectl config view --minify | grep namespace
注意: 后续所有 Ingress、Service、Pod 等资源均部署在
ingress-lab 命名空间内。若使用 kubectl config set-context 修改默认 Namespace,请确保团队成员知晓,避免误操作到生产 Namespace。
2.5 环境验证清单
完成上述步骤后,执行以下命令进行全链路验证:
# 1. 集群节点状态
kubectl get nodes
# 2. kubectl 版本与上下文
kubectl version --short
kubectl config current-context
# 3. Helm 版本与仓库
helm version --short
helm repo list
# 4. 测试 Namespace 是否存在
kubectl get namespace ingress-lab
# 5. 部署一个测试 Pod 验证调度
kubectl run test-pod --image=nginx:alpine -n ingress-lab
kubectl get pods -n ingress-lab
预期输出: 所有节点状态为
Ready,Helm 版本 ≥ v3.14,仓库列表包含 ingress-nginx 和 bitnami,Namespace ingress-lab 状态为 Active,测试 Pod 处于 Running 状态。