我的群集上的某些pod几乎在所有方面都非常慢。启动时间,网络,i / o。
我已经最小化了这些容器中的应用程序代码,它似乎没有任何效果,这些基本上是运行带有运行状况检查端点的简单webapi的最小容器。
我想知道有人可以帮我找出错误或调试这个。
当我说各方面都很慢时我指的是几件事
启动速度很慢。我实际上必须将准备探测初始延迟时间改为接近5分钟。
运行任何命令的容器内部都很慢。即使容器已运行数小时,运行apt-get update
也需要5分钟左右。
任何与RDS数据库的连接都将至少在pod运行的前10分钟内超时,之后它会被击中或未命中,有时是正常速度,有时我们会再次开始获取连接超时(主要是pod暂时没有被使用/请求。)
在具有相同基本图像的几乎相同的pod上,容器将在不到几秒的时间内启动,运行apt-get update
将花费3秒钟。我不能为我的生活看到豆荚之间有什么不同,导致一些人成为“好豆荚”,而另一些则成为“坏豆荚”。
在本地运行任何这些图像,它们将立即开始(不到一秒左右)。
群集(AWS)
我检查/尝试过的事情
太多豆荚
我的第一个想法可能是我运行了太多豆荚。我为此启动了全新的节点(c4.xlarge),并且这个pod是集群中唯一运行的pod,问题仍然存在。
节点资源
检查每个节点级别指标我看起来没什么异常(也尝试过几个全新的高功率节点)
部署/ Pod指标
我很高兴能够展示出任何人可以在这里想到的任何指标,没有任何看法超出常态。我有Prometheus运行,并已查看我可以考虑检查的每个指标。我看不出“好”的运行吊舱和“糟糕的”吊舱之间的区别。
群集本身
我实际上有2个集群,都配置了kops,这可以在两个集群上看到(虽然并不总是相同的应用程序,这很奇怪)。
感谢任何帮助
答案 0 :(得分:4)
这可能是由于资源限制的配置过于受限或缺少配置资源请求而导致的,这使得可以在对运行工作负载没有必要要求的节点上配置Pod。
您可以通过为部署到Kubernetes的每个应用程序定义正确的resource requests来解决此问题。简而言之,您可以控制CPU time的份额的限制和要求,内存字节和Linux Hugepages。