我正在尝试使用Istio和Envoy通过Kubernetes为服务实现服务网格。我能够设置服务和istio-proxy,但无法控制启动容器和istio-proxy的顺序。
我的容器是第一个启动的容器,它尝试通过TCP访问外部资源,但那时istio-proxy尚未完全加载,因此外部资源的ServiceEntry也是如此
我尝试在服务中添加紧急情况,还尝试了5秒钟的睡眠,然后才访问外部资源。
是否可以控制这些顺序?
答案 0 :(得分:2)
除了在容器规格中以特定顺序列出容器外,我认为您无法控制其他顺序。因此,我建议您配置Readiness Probe,以便在服务可以向外部发送一些流量之前,您尚未准备好Pod。
答案 1 :(得分:1)
Github问题在这里:
Support startup dependencies between containers on the same Pod
我们目前建议开发人员解决此问题 通过在其应用程序容器上运行启动脚本来自己 这会延迟应用程序启动,直到Envoy收到其初始信息为止 组态。但是,这有点麻烦,需要更改 到每个开发人员的容器中。
答案 2 :(得分:1)
在istio 1.7.X及更高版本上,您可以添加配置选项a is int
+a is int
b is char
+b is int
c is short
+c is int
,这将导致sidecar注入器在pod容器列表的开头注入sidecar并将其配置为阻止所有其他容器的开始直到代理就绪为止。默认情况下,此选项是禁用的。
根据https://istio.io/latest/news/releases/1.7.x/announcing-1.7/change-notes/