在 istio-proxy 运行 之后启动 container/pod
Starting a container/pod after running the istio-proxy
我正在尝试使用 Istio 和 Envoy 通过 Kubernetes 为服务实现服务网格。我能够设置服务和 istio-proxy,但我无法控制容器和 istio-proxy 的启动顺序。
我的容器是第一个启动并尝试通过 TCP 访问外部资源,但当时 istio-proxy 尚未完全加载,外部资源的 ServiceEntry 也未完全加载
我尝试在我的服务中添加 panic,还尝试在访问外部资源之前休眠 5 秒。
有什么方法可以控制它们的顺序吗?
我认为除了在 pod 规范中以特定顺序列出容器外,您无法控制顺序。因此,我建议您配置一个 Readiness Probe,以便在您的服务可以向外部发送一些流量之前,您的 pod 还没有准备好。
Github 问题在这里:
Support startup dependencies between containers on the same Pod
We're currently recommending that developers solve this problem
themselves by running a startup script on their application container
which delays application startup until Envoy has received its initial
configuration. However, this is a bit of a hack and requires changes
to every one of the developer's containers.
在 istio 版本 1.7.X 及更高版本上,您可以添加配置选项 values.global.proxy.holdApplicationUntilProxyStarts
,这会导致 sidecar 注入器在 pod 的容器列表的开头注入 sidecar 并将其配置为阻塞所有其他容器的启动,直到代理准备就绪。默认情况下禁用此选项。
根据https://istio.io/latest/news/releases/1.7.x/announcing-1.7/change-notes/
我正在尝试使用 Istio 和 Envoy 通过 Kubernetes 为服务实现服务网格。我能够设置服务和 istio-proxy,但我无法控制容器和 istio-proxy 的启动顺序。
我的容器是第一个启动并尝试通过 TCP 访问外部资源,但当时 istio-proxy 尚未完全加载,外部资源的 ServiceEntry 也未完全加载
我尝试在我的服务中添加 panic,还尝试在访问外部资源之前休眠 5 秒。
有什么方法可以控制它们的顺序吗?
我认为除了在 pod 规范中以特定顺序列出容器外,您无法控制顺序。因此,我建议您配置一个 Readiness Probe,以便在您的服务可以向外部发送一些流量之前,您的 pod 还没有准备好。
Github 问题在这里:
Support startup dependencies between containers on the same Pod
We're currently recommending that developers solve this problem themselves by running a startup script on their application container which delays application startup until Envoy has received its initial configuration. However, this is a bit of a hack and requires changes to every one of the developer's containers.
在 istio 版本 1.7.X 及更高版本上,您可以添加配置选项 values.global.proxy.holdApplicationUntilProxyStarts
,这会导致 sidecar 注入器在 pod 的容器列表的开头注入 sidecar 并将其配置为阻塞所有其他容器的启动,直到代理准备就绪。默认情况下禁用此选项。
根据https://istio.io/latest/news/releases/1.7.x/announcing-1.7/change-notes/