Files
Kubernetes/网关/Istio/Istio安装和使用.md
offends a0a57e2fb5
All checks were successful
continuous-integration/drone Build is passing
更新Istio文档
2025-12-30 00:42:07 +08:00

6.8 KiB
Raw Blame History

本文作者:丁辉

Istio安装和使用

官方文档 官方中文文档 Github

安装

Github下载

下载二进制文件

  1. 脚本下载(因国内网络问题建议从 Github 直接下载安装包)

    curl -L https://istio.io/downloadIstio | sh -
    

    解压文件

    tar -zxvf istio-*-linux-amd64.tar.gz
    
  2. 进入目录

    cd istio-1.28.1
    
  3. 传递本地变量

    • 临时

      export PATH=$PWD/bin:$PATH
      
    • 永久

      install -o root -g root -m 0755 ./bin/istioctl /usr/local/bin/istioctl
      
  4. 验证

    istioctl version
    

安装 Istio

查看内置的 Profile

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. 特定平台
    • OpenShiftopenshift.yaml
    • 自动处理安全策略
    • 平台集成优化
    • 多集群:remote.yaml
    • 从集群使用精简配置
    • 主集群使用 default.yaml
  5. 高级用户
    • 完全自定义:empty.yaml
    • 作为配置模板
    • 构建专属配置
    • 评估新特性:preview.yaml
    • 测试即将发布的功能
    • 技术选型评估

选择建议流程图

是否需要特定平台?
├── OpenShift 平台 → openshift.yaml 或 openshift-ambient.yaml
└── 其他平台 → 继续评估
↓
追求新技术还是稳定性?
├── 追求新技术 → ambient.yaml
├── 最高稳定性 → stable.yaml
└── 平衡选择 → default.yaml
↓
资源是否紧张?
├── 资源充足 → default.yaml
└── 资源紧张 → minimal.yaml + 按需组件
↓
是否用于演示/学习?
├── 是 → demo.yaml
└── 否 → 维持之前选择

开始部署

  • 测试环境

    istioctl install --set profile=demo -y
    
  • 生产环境

    wget https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/istio-config.yaml
    

    根据自己生产环境需求修改文件内参数,文件内参数我尽可能更新偏向于生产环境。

    部署

    istioctl install -f istio-config.yaml
    
  1. 为默认命名空间添加标签,以便在稍后部署应用程序时自动注入 Envoy sidecar 代理

    kubectl label namespace default istio-injection=enabled
    
  2. 检查并安装 API CRD

    • Kubernetes Gateway API CRD(新版支持)

      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 -; }
      
    • (旧版将来即将不支持)

      暂时不做记录
      

卸载 Istio

  1. 删除命名空间标签

    kubectl label namespace default istio-injection-
    
  2. 卸载 Istio

    istioctl uninstall --purge -y
    

Istioctl命令使用

  • 生成 Istio 安装清单(查看 Istio 将要创建的所有 Kubernetes 资源)

    istioctl manifest generate > generated-manifest.yaml
    
  • 诊断命令,用于静态分析 Istio 配置和资源,以检测潜在的问题、错误配置或最佳实践违规

    istioctl analyze