4、环境准备:Kubernetes集群搭建要求、Helm工具安装、kubectl配置、命名空间规划

本章是课程的基础环境准备环节。在搭建跨区域S3存储同步环境之前,必须确保底层Kubernetes集群满足最低资源与版本要求,并完成Helm、kubectl等核心工具的安装与配置。同时,合理的命名空间规划将为后续的多区域部署奠定管理基础。

4.1 Kubernetes集群搭建要求

本课程实验环境推荐使用三节点(1 Master + 2 Worker)或更高配置的集群。生产环境建议使用高可用架构。以下为最低版本与资源要求:

组件 最低版本 推荐版本 说明
Kubernetes v1.24 v1.28+ 需支持CSI、Ingress、NetworkPolicy
etcd v3.5 v3.5+ 集群状态存储,建议SSD磁盘
容器运行时 containerd 1.6 containerd 1.7+ 支持CRI,禁用Docker Shim
操作系统 Ubuntu 20.04 / CentOS 7.9 Ubuntu 22.04 / Rocky Linux 9 内核版本 ≥ 5.4
Master节点资源 2C / 4GB 4C / 8GB etcd与API Server占用较高
Worker节点资源 2C / 4GB 4C / 8GB 每节点至少50GB磁盘
提示: 如果使用云厂商托管集群(如AKS、EKS、GKE),可跳过Master节点部署,但需确保集群版本 ≥ 1.24,并开启CSI快照与VolumeExpansion特性门控。

4.2 Helm工具安装

Helm是Kubernetes的包管理工具,用于简化S3存储接口相关Chart(如MinIO、Rook、Velero)的部署。本课程使用Helm v3,无需Tiller服务端组件。

安装步骤(Linux / macOS):

  1. 下载官方安装脚本并执行:
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
  1. 验证安装版本:
helm version --short
# 预期输出:v3.14.0+ge1cef2e
  1. 添加常用Chart仓库:
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add minio https://charts.min.io/
helm repo add velero https://vmware-tanzu.github.io/helm-charts
helm repo update
注意: 如果网络环境受限,可提前下载Chart包并离线导入。Helm v3不再依赖Tiller,安装后可直接使用 helm install 命令。

4.3 kubectl配置

kubectl是与Kubernetes API Server交互的命令行工具。配置kubectl的核心是获取集群的kubeconfig文件,并设置正确的上下文(context)。

配置流程:

  1. 从Master节点或云厂商控制台复制kubeconfig文件到本地:
mkdir -p $HOME/.kube
scp user@master-node:/etc/kubernetes/admin.conf $HOME/.kube/config
  1. 验证集群连接与节点状态:
kubectl cluster-info
kubectl get nodes -o wide
  1. 配置自动补全与别名(可选但推荐):
echo 'source <(kubectl completion bash)' >> ~/.bashrc
echo 'alias k=kubectl' >> ~/.bashrc
echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc
source ~/.bashrc
kubectl配置项 推荐值 说明
KUBECONFIG $HOME/.kube/config 可指定多个配置文件,用冒号分隔
current-context kubernetes-admin@kubernetes 确保指向目标集群
kubectl版本 与集群版本偏差 ≤ 1 避免API兼容性问题

4.4 命名空间规划

合理的命名空间规划有助于隔离不同区域、不同组件的资源。本课程采用“区域-组件”两级命名规范,便于跨区域同步场景下的权限管理与资源查找。

推荐命名空间结构:

  • 区域前缀: region-a、region-b、region-c 分别代表不同地理区域。
  • 组件后缀: storage(S3存储服务)、sync(同步引擎)、monitor(监控与告警)。
  • 公共命名空间: global-system 用于部署跨区域共享组件(如Ingress Controller、Cert-Manager)。
示例命名空间清单:
  • region-a-storage — 区域A的MinIO/S3网关
  • region-a-sync — 区域A的同步任务与触发器
  • region-b-storage — 区域B的MinIO/S3网关
  • region-b-sync — 区域B的同步任务与触发器
  • global-system — 全局Ingress、DNS、监控

创建命名空间的命令示例:

kubectl create namespace region-a-storage
kubectl create namespace region-a-sync
kubectl create namespace region-b-storage
kubectl create namespace region-b-sync
kubectl create namespace global-system
最佳实践: 为每个命名空间设置资源配额(ResourceQuota)与网络策略(NetworkPolicy),防止跨区域组件相互影响。后续章节将演示如何为 region-a-storage 配置存储类与访问密钥。
Kubernetes集群环境与命名空间规划架构 Kubernetes集群环境与命名空间规划 Kubernetes 集群节点 Master-1 Master-2 Worker-1 Worker-2 etcd / API Server / Scheduler 核心工具 Helm v3 kubectl Chart管理 / API交互 命名空间规划 region-a-storage region-a-sync region-b-storage region-b-sync global-system 环境准备要点 集群版本 ≥ 1.24 | Helm v3 | kubectl 版本对齐 | 命名空间按区域-组件两级规划

4.5 环境验证清单

完成上述步骤后,建议执行以下验证命令,确保环境就绪:

# 1. 验证集群节点状态
kubectl get nodes

# 2. 验证Helm可用性
helm list -n default

# 3. 验证kubectl上下文
kubectl config current-context

# 4. 验证命名空间已创建
kubectl get ns | grep -E 'region|global'
预期输出示例:
NAME STATUS AGE
region-a-storage Active 1m
region-a-sync Active 1m
region-b-storage Active 1m
region-b-sync Active 1m
global-system Active 1m

至此,Kubernetes集群环境、Helm工具、kubectl配置以及命名空间规划已全部就绪。下一阶段将进入S3存储接口组件的部署与配置环节。