- 22, Oct 2024
- #1
У меня есть кластер, работающий на AWS EKS, v1.20.7-eks-d88609.
У меня есть модуль и служба NodePort, чтобы открыть его для внешнего мира.
Некоторые клиенты будут подключаться к нему через TCP-соединение, которое будет поддерживаться в рабочем состоянии.
Однако я пытался настроить плавное завершение соединения при завершении работы модуля, перехватив SIGTERM и отправив последнее сообщение в TCP-соединение, сообщающее клиентам отключиться.
Проблема в том, что эти последние TCP-пакеты (отправленные после обнаружения SIGTERM) никогда не доходят до места назначения.
Я запустил tcpdump внутри модуля и подтвердил, что пакет отправляется правильно: https://imgur.com/Bhy6fL1
Но он не доходит до места назначения (где у меня был еще один tcpdump, чтобы это проверить)
TCP даже пытается повторно передать пакет, поскольку подтверждение на него не получено, но ни один из них не может достичь пункта назначения.
Мне не удалось воспроизвести это в локальном кластере Minikube с той же версией Kubernetes (1.20.7). В этом локальном кластере дела шли хорошо.
Я не уверен, что это лучший способ отладки в кластере AWS EKS. Похоже, это какая-то проблема, вызванная чем-то внутри Kubernetes, поскольку приложение пытается отправить пакет.
#кубернетес