- 首先,我了解 k8s 以及它如何与他们的所有东西一起工作;
- 其次,我需要介绍一下我的应用程序以及它如何在 k8s 上运行
- 第三,我要问我的问题:
这个应用程序由三个 Pod 组成,每个 Pod 都有自己的服务:
1. nginx with php-fpm (called sample-app)
2. redis
3. queue(based on node js)
这个应用程序以这种方式工作:
当请求进入示例应用程序时,此应用程序将请求存储为 Redis 中的作业,同时队列监视 Redis 以获取未处理的作业并处理它们(例如发送电子邮件)。
现在我的问题:
队列 pod 没有理由,没有时间顺序,也没有日志停止工作,需要在 k8s 日志中再次告诉您看不到任何错误或警告,这主要就像卡住并且什么也不做!!这个应用程序在 minikube 和 k8s 之前的 VM 上运行良好。所以每次我删除队列 Pod 时,新创建的 Pod 开始正常工作并处理来自 Redis 的作业。
我使用基准工具在 minikube 上测试了这个应用程序(使用 ab 命令从集群外部发送请求)没有问题也没有错误,所以每当我移动到 k8s 并以高请求密度测试这个应用程序时,队列 pod 也会再次停止工作,因为我这个应用程序的第二个问题。
*关于我的集群的额外信息:k8s 版本是 1.15,docker 版本是 19.3.1,CNI 插件是 calico,我使用 helm。
现在有什么方法可以解决问题并识别问题出在哪里?