Apache RocketMQ中k8s里面对broker进行扩容的时候 从2个扩容到3个 旧的pod按道理会被删除 但是一直卡在Terminating状态 无法被删除 查看日志都是INFO的日志 没有异常 有人遇到过吗?broker有段日志如下 skip register for broker is isolated,对cpu进行扩容的时候经常会出现 不知道是不是k8s的问题
Apache RocketMQ中k8s里面对broker进行扩容的时候 从2个扩容到3个 旧的?[阿里云消息队列MQ]
「点点赞赏,手留余香」
还没有人赞赏,快来当第一个赞赏的人吧!
在使用 Kubernetes 扩容 Apache RocketMQ 的 Broker 时,经常会出现旧的 Pod 因为进入
Terminating
状态后无法正常删除的情况。这种情况一般是由于 Pod 中还有未完成的任务或者正在进行的操作导致的。
以下是一些可能的解决办法:
查看 Pod 中是否有未完成的任务或者正在进行的操作,例如数据迁移、网络连接、文件系统操作等,如果有,等待这些操作完成后再进行删除。
尝试强制删除 Pod,可以通过在删除命令中使用
--grace-period=0 --force
参数来强制删除 Pod,例如:kubectl delete pod POD_NAME --grace-period=0 --force
。升级 Kubernetes 集群以解决 Kubernetes 的 Bug,这也是一个可能的解决办法。
对于
skip register for broker is isolated
错误,这是由于 Broker 检测到当前处于隔离状态,无法注册到 NameServer 上。这个错误一般是由于 NameServer 还没有正确配置或者启动导致的。建议检查 NameServer 的配置和运行状态,确保它们符合要求。关于您提到的在 Kubernetes(k8s)环境中扩容 RocketMQ Broker 的问题,旧的 Pod 无法被删除并且处于 “Terminating” 状态的原因可能有多种情况。以下是一些可能的排查思路和解决方法:
请检查 k8s 集群是否存在资源不足的情况,比如 CPU、内存或磁盘等。如果资源不足,可能会导致 Pod 无法正常退出或删除,从而出现 “Terminating” 状态。您可以通过查看相关 k8s 日志或执行命令 “kubectl describe pod” 来了解 Pod 的详细信息,包括 Pod 所在节点的资源使用情况。
是否有未关闭的连接或进程占用了旧的 Broker Pod,导致 Pod 无法正常停止。您可以通过登录到旧的 Broker Pod 中查看相关进程和连接情况来进一步排查。
可能是由于某些异常情况或错误导致 Broker 在退出时没有正常执行清理操作,从而导致 Pod 处于 “Terminating” 状态。您可以通过查看 Broker 日志来了解 Pod 的状态和可能的错误信息。
如果扩容过程中进行了 Rolling Update 或者 Recreate,则可能需要等待一段时间,直到旧的 Pod 完全退出后,新的 Pod 才能被启动。具体的等待时间取决于 Pod 的退出时间、容器的停止时间和 k8s 的策略配置,您可以通过查看 Rolling Update 或者 Recreate 相关的 k8s 运维文档来了解更多信息。
如果存在多个 Pod 同时处于 “Terminating” 状态,可能是由于 k8s 的调度或编排错误导致的。您可以检查 k8s 集群的资源使用情况、Pod 调度策略、部署配置等方面,确定是否需要重新部署集群或优化配置。
找到问题了 我自己设置了这个finalizers 没有置空 ,此回答整理自钉群“群2-Apache RocketMQ 中国开发者钉钉群”