> 本文作者:丁辉 # Istio安装和使用 [官方文档](https://istio.io/latest/docs/) [官方中文文档](https://istio.io/latest/zh/docs/) [Github](https://github.com/istio/istio) ## 安装 [Github下载](https://github.com/istio/istio/releases) ### 下载二进制文件 1. 脚本下载(因国内网络问题建议从 Github 直接下载安装包) ```bash curl -L https://istio.io/downloadIstio | sh - ``` 解压文件 ```bash tar -zxvf istio-*-linux-amd64.tar.gz ``` 2. 进入目录 ```bash cd istio-1.28.1 ``` 3. 传递本地变量 - 临时 ```bash export PATH=$PWD/bin:$PATH ``` - 永久 ```bash install -o root -g root -m 0755 ./bin/istioctl /usr/local/bin/istioctl ``` 4. 验证 ```bash istioctl version ``` ### 安装 Istio 查看内置的 Profile ```bash ls $(dirname $(which istioctl))/../manifests/profiles/ ``` #### 介绍 **Istio Profiles 应用场景对比表** | Profile 名称 | 核心组件 | 资源需求 | 主要应用场景 | 特点 | | :--------------------------: | :---------------------: | :------: | :----------------------------------------------------------: | :----------------------------------------------------------: | | **`ambient.yaml`** | Ztunnel + CNI + Istiod | 中等 | 1. 环境网格(Ambient Mesh)部署 2. 无 sidecar 的服务网格 3. 大型集群优化 | • 无需注入 sidecar • 节点级 Ztunnel • 低侵入性 | | **`default.yaml`** | Istiod + Ingress+Egress | 中等 | 1. 生产环境推荐配置 2. 大多数企业场景 3. 标准 sidecar 模式 | • 平衡功能与性能 • 包含 ingress/egress • 可扩展的基础配置 | | **`demo.yaml`** | 全功能套件 | 高 | 1. 演示和展示 2. 测试环境 3. 功能验证 | • 启用所有组件 • 高资源消耗 • 不适合生产 | | **`minimal.yaml`** | 仅 Istiod | 低 | 1. 仅控制平面 2. 远程集群配置 3. 最小化部署 | • 只安装 Istiod • 无数据平面组件 • 需手动配置网关 | | **`empty.yaml`** | 无 | 无 | 1. 完全自定义起点 2. 作为模板使用 3. 特定场景定制 | • 空配置 • 需要手动定义所有组件 • 专家级使用 | | **`preview.yaml`** | 实验性功能 | 可变 | 1. 测试新特性 2. 评估预览功能 3. 技术预览 | • 包含实验性组件 • 可能不稳定 • 不建议生产 | | **`remote.yaml`** | Istiod(简化) | 低 | 1. 多集群主-从配置 2. 共享控制平面 3. 边缘集群 | • 为远程集群优化 • 精简的 Istiod • 与主集群配合 | | **`stable.yaml`** | 稳定组件集 | 中等 | 1. 生产环境稳定版 2. 长期支持场景 3. 关键业务系统 | • 仅包含稳定组件 • 排除实验性功能 • 高可靠性 | | **`openshift.yaml`** | OpenShift 适配 | 中等 | 1. Red Hat OpenShift 平台 2. 企业 K8s 发行版 | • OpenShift 特定配置 • 安全上下文适配 • SCC(安全上下文约束) | | **`openshift-ambient.yaml`** | Ztunnel + OpenShift | 中等 | 1. OpenShift + Ambient Mesh 2. 企业级无 sidecar 网格 | • Ambient Mesh + OpenShift 适配 • 企业环境优化 | **详细场景说明** 1. **新手/学习场景** - **推荐:`demo.yaml`** - **原因**:快速体验 Istio 全功能,便于学习和演示 - **注意**:资源消耗大,仅用于非生产环境 2. **生产环境** - **保守选择:`stable.yaml`** - 追求最高稳定性 - 避免实验性功能的风险 - **标准选择:`default.yaml`** - 功能完整且稳定 - 社区广泛验证 - **创新选择:`ambient.yaml`** - 追求新技术优势 - 需要评估兼容性 3. ** 资源受限环境** - **小集群/边缘:`minimal.yaml`** - 按需添加网关 - 控制平面和数据平面分离部署 - **开发测试:`default.yaml`** - 兼顾功能与资源 4. **特定平台** - **OpenShift:`openshift.yaml`** - 自动处理安全策略 - 平台集成优化 - **多集群:`remote.yaml`** - 从集群使用精简配置 - 主集群使用 `default.yaml` 5. **高级用户** - **完全自定义:`empty.yaml`** - 作为配置模板 - 构建专属配置 - **评估新特性:`preview.yaml`** - 测试即将发布的功能 - 技术选型评估 **选择建议流程图** ```bash 是否需要特定平台? ├── OpenShift 平台 → openshift.yaml 或 openshift-ambient.yaml └── 其他平台 → 继续评估 ↓ 追求新技术还是稳定性? ├── 追求新技术 → ambient.yaml ├── 最高稳定性 → stable.yaml └── 平衡选择 → default.yaml ↓ 资源是否紧张? ├── 资源充足 → default.yaml └── 资源紧张 → minimal.yaml + 按需组件 ↓ 是否用于演示/学习? ├── 是 → demo.yaml └── 否 → 维持之前选择 ``` #### 开始部署 - 测试环境 ```bash istioctl install --set profile=demo -y ``` - 生产环境 ```yaml wget https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/istio-config.yaml ``` > 根据自己生产环境需求修改文件内参数,文件内参数我尽可能更新偏向于生产环境。 部署 ```bash istioctl install -f istio-config.yaml ``` 1. 为默认命名空间添加标签,以便在稍后部署应用程序时自动注入 Envoy sidecar 代理 ```bash kubectl label namespace default istio-injection=enabled ``` 2. 检查并安装 API CRD - Kubernetes Gateway API CRD(新版支持) ```bash kubectl get crd gateways.gateway.networking.k8s.io &> /dev/null || \ { kubectl kustomize "github.com/kubernetes-sigs/gateway-api/config/crd?ref=v1.4.0" | kubectl apply -f -; } ``` - (旧版将来即将不支持) ```bash 暂时不做记录 ``` ### 卸载 Istio 1. 删除命名空间标签 ```bash kubectl label namespace default istio-injection- ``` 2. 卸载 Istio ```bash istioctl uninstall --purge -y ``` ## Istioctl命令使用 - 生成 Istio 安装清单(查看 Istio 将要创建的所有 Kubernetes 资源) ```bash istioctl manifest generate > generated-manifest.yaml ``` - 诊断命令,用于静态分析 Istio 配置和资源,以检测潜在的问题、错误配置或最佳实践违规 ```bash istioctl analyze ```