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 是操作集群的唯一命令行入口。配置步骤如下:

  1. 下载 kubectl(版本与集群 API Server 版本偏差 ≤ 1 个 minor 版本)
  2. 设置 kubeconfig:将集群管理员提供的 config 文件放置到 ~/.kube/config
  3. 验证集群连通性
# 下载 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。
环境准备流程 K8s 集群搭建 1 Master + 2 Worker kubectl 配置 kubeconfig + 连通性验证 Helm 安装 v3.14+ / 添加仓库 测试 Namespace kubectl create ns ingress-lab 环境就绪 可开始 Ingress 实验 前置依赖 • 宿主机 ≥ 8 GB 内存 • 网络互通 / 防火墙放行 • kubectl 版本偏差 ≤ 1

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 状态。