Istio:对Pod和Service的要求
Istio对需要注入的Pod和Service是有要求的,要成为服务网格中的一部分,它们需要满足下面的要求:
- Service端口命名:Service的端口必须命名,匹配的格式为:
<protocol>[-<suffix>],<protocol>可以是下面的几种:grpc、http、http2、https、mongo、redis、tcp、tls、udp,如果没有进行命名或者命名的前缀识别不出来,那么流量都会被当成TCP流量对待,除非显示声明,比如Protocol: UDP声明端口是UDP端口。 - Pod端口:Pod需要被代理端口都需要使用
containerPort指定出来,否则都会绕过Istio Proxy。 - 关联服务:不管Pod有没有暴露端口,它需要关联至少一个Service。如果Pod关联了不止一个Service,那么在相同端口不能使用不同的协议。
- Deployment需要打上标签app和version:app用于识别上下文信息,version可以标识Deployment的版本信息。
- Application UID:确保Pod运行的用户ID(UID)不是1337。
- NET_ADMIN能力:如果集群实施了Pod安全策略,除非使用了Istio CNI Plugin,否则Pod需要具备
NET_ADMIN能力。
被Istio使用的端口
下面的端口和协议是Istio会使用到的,需要确保服务不会与Istio冲突。
| 端口 | 协议 | 使用者 | 描述 |
|---|---|---|---|
| 8060 | HTTP | Citadel | GRPC 服务 |
| 9090 | HTTP | Prometheus | Prometheus |
| 9091 | HTTP | Mixer | 决策/遥测 |
| 9093 | HTTP | Citadel | |
| 15000 | TCP | Envoy | Envoy管理端口(命令/诊断) |
| 15001 | TCP | Envoy | Envoy |
| 15004 | HTTP | Mixer, Pilot | 决策/遥测 - mTLS |
| 15010 | HTTP | Pilot | Pilot服务 - XDS pilot - 发现 |
| 15011 | TCP | Pilot | Pilot服务 - mTLS - 代理 - 发现 |
| 15014 | HTTP | Citadel, Mixer, Pilot | 控制面板监控 |
| 15030 | TCP | Prometheus | Prometheus |
| 15090 | HTTP | Mixer | 代理 |
| 42422 | TCP | Mixer | 遥测 - Prometheus |
参考
- 本文链接:https://keepmoving.ren/istio/pod-and-svc-requirement/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!
