contour-envoy pod模型
2021-12-27 14:46:37 3 举报
Contour 中 Envoy pod模型以及优雅停服的实现
作者其他创作
大纲/内容
envoy pod共有三个容器- 1个 initContainer 生成配置文件- 1个 envoy 业务容器- 1个 shutdown-manager 容器
2: read
3::8090
/shutdown
1: write
http://localhost:9001/healthcheck/fail
4-1:preStop
7: create
8: check
contour 控制面
contourcontroller
file/ok
4-2: preStop
3:XDS
命令行contour envoy shutdown
6:Get
/config/envoy.json
envoy 数据面
http://localhost:9001/stats/prometheus
1: initContainer envoy-initconfig 调用 contour boostrap 生成配置文件 /config/envoy.json2: 主容器通过磁盘挂载共享 config 文件,并作为启动的配置参数启动 envoy 进程3:envoy 和服务端通过 XDS 协议做服务发现和路由配置4-1:envoy关闭前,会执行 preStop 钩子,preStop调用 shutdown-manager 通过 9090 端口暴露的 /shutdown 接口。这个接口会去校验 /ok 文件是否存在,存在才说明 envoy 成功关闭了。不存在说明暂时还不能关闭,接口会阻塞在这里4-2:和envoy一样,shutdown-manager 关闭前,会执行 preStop 钩子,执行 contour envoy shutdown 命令。 5:调用 envoy 后台管理的 Post 请求,请求关闭 envoy 6:检查 envoy 监控指标,当活跃连接数小于某个值才认为关闭成功 7:关闭成功后,会生成 /ok 文件,用于让 /shutdown 接口成功返回 8:当 /ok 文件存在后,说明 envoy 已经优雅关闭了,envoy 进程可以退出。完成以上步骤,整个 pod 才可以退出
initContainerenvoy-initconfig
5:Post
shutdown-manager
envoy
0 条评论
下一页