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):
- 下载官方安装脚本并执行:
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
# 预期输出:v3.14.0+ge1cef2e
- 添加常用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)。
配置流程:
- 从Master节点或云厂商控制台复制kubeconfig文件到本地:
mkdir -p $HOME/.kube
scp user@master-node:/etc/kubernetes/admin.conf $HOME/.kube/config
- 验证集群连接与节点状态:
kubectl cluster-info
kubectl get nodes -o wide
- 配置自动补全与别名(可选但推荐):
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 配置存储类与访问密钥。
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 AGEregion-a-storage Active 1mregion-a-sync Active 1mregion-b-storage Active 1mregion-b-sync Active 1mglobal-system Active 1m
至此,Kubernetes集群环境、Helm工具、kubectl配置以及命名空间规划已全部就绪。下一阶段将进入S3存储接口组件的部署与配置环节。