上云无忧 > 文档中心 > 腾讯云容器服务 - Nginx Ingress 偶现 Connection Refused
容器服务 TKE
腾讯云容器服务 - Nginx Ingress 偶现 Connection Refused

文档简介:
现象描述: 当用户在使用 Nginx Ingress 时,减少 Nginx Ingress Controller 副本过程中,可能出现 Connection Refused 的问题,此时 CLB 批量解绑 RS,TCP/UDP 监听器存量连接停止转发。
*此产品及展示信息均由腾讯云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

现象描述

当用户在使用 Nginx Ingress 时,减少 Nginx Ingress Controller 副本过程中,可能出现 Connection Refused 的问题,此时 CLB 批量解绑 RS,TCP/UDP 监听器存量连接停止转发。

可能原因

查看 Nginx Ingress 源码,Nginx Ingress Controller 工作负载没有优雅停机的能力, Pod 在收到 kill signal 之后直接退出。如下图所示:

解决思路

若您使用 TKE Service 优雅停机 的能力,当 Pod 需要被删除时,Pod 能够处理完已接受到的请求,此时入流量关闭,但出流量仍能走通。直到处理完所有已有请求和 Pod 真正删除时,出入流量才进行关闭。待到优雅停机时间结束后,Pod 才被真正的删除。如下图所示:

处理步骤

注意
仅针对 直连场景 生效,请检查您的集群是否支持直连模式。

步骤1

在 kube-system 命名空间下名为 ****-ingress-nginx-controller 的 Service 里使用 Annotation 标明使用优雅停机。
以下为使用 Annotation 标明使用优雅停机示例,完整 Service Annotation 说明可参见 Service Annotation 说明
		
kind: Service
apiVersion: v1
metadata:
annotations:
service.cloud.tencent.com/direct-access: "true" ## 开启直连 Pod 模式
service.cloud.tencent.com/enable-grace-shutdown: "true" # 表示使用优雅停机
name: my-service
spec:
selector:
app: MyApp

步骤2

在 kube-system 命名空间下名为 ****-ingress-nginx-controller 的 Deployment 里的 wait-shutdown 前面加一段时间的 sleep。示例如下:
		
lifecycle:
preStop:
exec:
command:
- sleep # 添加 sleep 时间
- 30s # 添加 sleep 时间
- /wait-shutdown # 在这一行前,添加 sleep 时间
更多内容请参考 Service 优雅停机。如果通过以上步骤仍无法解决您的问题,您可以 联系我们 反馈和解决问题。
相似文档
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部