在多容器场景下处理Kubernetes中pod的优雅终止

f2uvfpb9  于 2023-06-21  发布在  Kubernetes
关注(0)|答案(2)|浏览(99)

有一种情况是,pod中有2个容器,其中一个容器在终止时从第二个容器接收请求。
假设容器1依赖于容器2,两个容器同时接收SIGTERM,容器2快速停止,容器1中依赖于容器2的所有飞行请求开始失败。
对此有什么解决方案吗?

dzhpxtsq

dzhpxtsq1#

在这种情况下,容器更适合在两个不同的吊舱上运行(恕我直言)
并使用code/servicemesh添加重试机制,使应用程序更具弹性
例如https://istio.io/latest/docs/concepts/traffic-management/#retries

nxowjjhe

nxowjjhe2#

通过在容器1和容器2上配置preStop生命周期。我有个办法
让我们有一个共享卷。
ex:/var directory
让我们在这个共享文件夹中有一个文件main.txt。其将在两个容器中可见并且可以从两个容器可见实时修改。
预处理:main.txt必须在创建容器1时创建,并在删除容器1时删除。
预停止:

  1. container 1在preStop中删除此main.txt文件,这是container 1终止前的最后一个操作。
  2. container 2在preStop中循环,等待main.txt被删除。这将优先选择容器1先完成。
    这有用吗?

相关问题