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

207 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> 本文作者:丁辉
# 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
```