2. 环境准备:Kubernetes集群版本要求、Istio版本选择、kubectl与istioctl工具安装

在进行Istio故障注入测试之前,必须搭建一套符合版本兼容性要求的实验环境。本章将明确Kubernetes与Istio的版本匹配关系,并指导完成命令行工具的安装与验证。

2.1 Kubernetes集群版本要求

Istio对Kubernetes集群版本有严格的依赖。根据Istio 1.20+的官方支持矩阵,建议使用以下版本范围:

Istio版本 最低Kubernetes版本 推荐Kubernetes版本 备注
1.20.x 1.25 1.27 – 1.29 长期支持(LTS)推荐
1.21.x 1.26 1.28 – 1.30 最新特性支持
1.22.x(最新) 1.27 1.29 – 1.31 建议用于新项目
建议:本课程实验环境选用 Kubernetes 1.29 + Istio 1.21 组合,该组合经过广泛验证,稳定性与功能完整性最佳,且与故障注入相关的VirtualService、DestinationRule API版本完全兼容。

2.2 Istio版本选择策略

选择Istio版本时需考虑以下三个维度:

  • 功能需求:故障注入(Fault Injection)自Istio 1.5起已稳定,但较新版本提供了更精细的percentage控制和abort状态码扩展。
  • 安全补丁:始终选择当前仍在安全更新窗口内的次版本(如1.21.x而非1.20.x)。
  • 生态兼容:确认所选版本与Kubernetes API Server的认证授权机制(RBAC、PSP/PSS)兼容。
版本锁定原则:在生产环境中,建议将Istio控制面版本锁定在 1.21.x 系列,数据面Sidecar版本可略低于控制面(如1.20.x),以降低升级风险。

2.3 kubectl与istioctl工具安装

2.3.1 kubectl安装

kubectl是操作Kubernetes集群的核心CLI工具。以下为Linux环境下的标准安装步骤:

# 下载最新稳定版kubectl(以v1.29为例)
curl -LO "https://dl.k8s.io/release/v1.29.0/bin/linux/amd64/kubectl"

# 赋予执行权限并移动到PATH目录
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

# 验证安装
kubectl version --client

# 配置集群访问(假设已有kubeconfig文件)
kubectl config use-context your-cluster-context

2.3.2 istioctl安装

istioctl是Istio的专属管理工具,用于安装控制面、注入Sidecar以及调试配置。推荐使用官方脚本安装:

# 下载指定版本的istioctl(以1.21.0为例)
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.21.0 sh -

# 将istioctl加入PATH
cd istio-1.21.0
export PATH=$PWD/bin:$PATH

# 验证安装
istioctl version

# 启用自动补全(可选)
source <(istioctl completion bash)
注意:istioctl的版本必须与即将安装的Istio控制面版本一致。使用 istioctl install 时,默认安装与CLI相同版本的Istio。若需安装不同版本,请使用 --set tag=1.20.2 参数显式指定。

2.4 环境验证清单

完成工具安装后,执行以下命令验证环境就绪:

# 1. 检查kubectl能否正常访问集群
kubectl cluster-info

# 2. 检查节点状态
kubectl get nodes -o wide

# 3. 检查istioctl版本与集群兼容性
istioctl x precheck

# 4. 确认kubeconfig上下文正确
kubectl config current-context

预期输出应显示所有节点处于 Ready 状态,且 istioctl x precheck 无错误或警告。

2.5 环境架构总览

下图展示了本课程实验环境的整体组件关系:

实验环境组件架构图 实验环境组件架构 管理节点 kubectl istioctl kubeconfig API Server 访问 Kubernetes 集群 v1.29 Control Plane Worker Nodes CNI / CoreDNS Istio 控制面 istiod v1.21 Ingress/Egress Gateway Sidecar Injector 故障注入配置 说明:管理节点通过kubectl与Kubernetes API Server通信,istioctl直接操作Istio控制面资源。 故障注入配置通过VirtualService/DestinationRule下发至Sidecar Proxy。 数据流路径 istioctl apply → istiod → Sidecar Proxy (Envoy) → 故障注入执行 kubectl get pods → API Server → etcd → 返回Pod状态

2.6 版本兼容性速查表

以下表格汇总了本课程实验环境的关键版本信息,供后续章节参考:

组件 选定版本 安装方式 验证命令
Kubernetes 1.29.0 kubeadm / 云托管 kubectl version --short
Istio 1.21.0 istioctl install istioctl version
kubectl v1.29.0 二进制下载 kubectl version --client
istioctl 1.21.0 官方脚本 istioctl version