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 许可协议。转载请注明出处!