Istio 심화 — 왜 그렇게 흐르는가 · 네 리소스의 역할 · 实验
배포하기 전에 틀린 것을 찾는다
目标
Istio 配置即使语法正确,大多数时候也可能无法工作。由于其结构由名称相互引用,
只要一侧的名称发生变化,连接就会悄无声息地中断。
本实验将在没有集群的情况下,部署之前找出这类问题。
两种工具的区别
| | 检查内容 | 能发现的问题 |
|---|---|---|
| istioctl validate | 单个文件的语法 | 拼写错误、未知字段 |
| istioctl analyze | 资源之间的引用 | 不存在的 subset、网关以及主机冲突 |
Kubernetes 无法发现这两类问题。 CRD schema 会悄悄丢弃未知字段,
所以 kubectl apply 会成功,只有流量无法通过。
使用方法
istioctl validate -f vs.yamlistioctl analyze --use-kube=false vs.yaml dr.yamlecho $? # 0 이면 깨끗, 79 면 문제 있음--use-kube=false 表示不查看集群,只检查文件。
步骤
1. 拼写错误 → 01-validate.txt
2. 引用断裂 → 02-analyze.txt
3. 修复并通过 → vs.yaml、dr.yaml
4. 主机冲突 → 04-conflict.txt
5. 不存在的网关 → 05-gateway.txt
6. Sidecar 注入 → 06-inject.txt
7. analyze 无法发现的问题 → 07-blind.txt
8. 总结 → 08-notes.md
参考
第 7 步中,不出现任何问题才是正确结果。本步骤的目的就是亲自观察静态分析的局限。
8个步骤
- 发现拼写错误
- Schema 正确但行为错误
- 修复并使其通过
- 两个资源占用同一个主机时
- 引用不存在的网关时
- Sidecar 实际会变成什么样
- analyze 无法发现的问题
- 总结三个要点