本文作者:丁辉
Istio安装和使用
安装
下载二进制文件
脚本下载(因国内网络问题建议从 Github 直接下载安装包)
1
curl -L https://istio.io/downloadIstio | sh -
解压文件
1
tar -zxvf istio-*-linux-amd64.tar.gz
进入目录
1
cd istio-1.28.1
传递本地变量
临时
1
export PATH=$PWD/bin:$PATH
永久
1
install -o root -g root -m 0755 ./bin/istioctl /usr/local/bin/istioctl
验证
1
istioctl version
安装 Istio
查看内置的 Profile
1 | 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 适配 • 企业环境优化 |
详细场景说明
- 新手/学习场景
- 推荐:
demo.yaml - 原因:快速体验 Istio 全功能,便于学习和演示
- 注意:资源消耗大,仅用于非生产环境
- 推荐:
- 生产环境
- 保守选择:
stable.yaml - 追求最高稳定性
- 避免实验性功能的风险
- 标准选择:
default.yaml - 功能完整且稳定
- 社区广泛验证
- 创新选择:
ambient.yaml - 追求新技术优势
- 需要评估兼容性
- 保守选择:
- ** 资源受限环境**
- 小集群/边缘:
minimal.yaml - 按需添加网关
- 控制平面和数据平面分离部署
- 开发测试:
default.yaml - 兼顾功能与资源
- 小集群/边缘:
- 特定平台
- OpenShift:
openshift.yaml - 自动处理安全策略
- 平台集成优化
- 多集群:
remote.yaml - 从集群使用精简配置
- 主集群使用
default.yaml
- OpenShift:
- 高级用户
- 完全自定义:
empty.yaml - 作为配置模板
- 构建专属配置
- 评估新特性:
preview.yaml - 测试即将发布的功能
- 技术选型评估
- 完全自定义:
选择建议流程图
1 | 是否需要特定平台? |
开始部署
测试环境
1
istioctl install --set profile=demo -y
生产环境
1
wget https://gitee.com/offends/Kubernetes/raw/main/File/Yaml/istio-config.yaml
根据自己生产环境需求修改文件内参数,文件内参数我尽可能更新偏向于生产环境。
部署
1
istioctl install -f istio-config.yaml
为默认命名空间添加标签,以便在稍后部署应用程序时自动注入 Envoy sidecar 代理
1
kubectl label namespace default istio-injection=enabled
检查并安装 API CRD
Kubernetes Gateway API CRD(新版支持)
1
2kubectl 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 -; }(旧版将来即将不支持)
1
暂时不做记录
卸载 Istio
删除命名空间标签
1
kubectl label namespace default istio-injection-
卸载 Istio
1
istioctl uninstall --purge -y
Istioctl命令使用
生成 Istio 安装清单(查看 Istio 将要创建的所有 Kubernetes 资源)
1
istioctl manifest generate > generated-manifest.yaml
诊断命令,用于静态分析 Istio 配置和资源,以检测潜在的问题、错误配置或最佳实践违规
1
istioctl analyze
要是这篇文章为您解了惑、带来了帮助,不妨用小小的打赏来支持下我的创作吧,您的鼓励就是我持续分享的最大动力哦,感谢您啦!
- 本文链接: https://blog.offends.cn/Kubernetes/网关/Istio/Istio安装和使用.html
- 版权声明: 本博客所有文章除特别声明外,均默认采用 CC BY-NC-SA 4.0 许可协议。