服务部署在 AKS 上,POD 收到 SIGTERM,据我了解的信息,POD 在吃满 CPU limit 的时候,会被 throtting,这种情况应该不会收到 SIGTERM 。查看当时 pod 所在 node 的 CPU,已经吃满。难道 node CPU 吃满的情况下,会挑选出一个 pod,发送 SITERM 么?
目前没有找到相关的文档,请大家帮忙分析分析。
1
julyclyde 2020-10-16 17:58:12 +08:00
没有“POD 收到信号”这个说法吧
只有进程收到信号 |
3
v2byy OP @julyclyde 我是想请问 container 收到 SIGTERM 的原因是否可能是因为 node 的 CPU 满了。不知有没有遇到过这样的问题。
|
4
monsterxx03 2020-10-16 18:10:51 +08:00
不会的, 可能你 cpu 跑满后响应太慢, health check 失败后被干掉了
|
5
cyaki 2020-10-16 18:11:57 +08:00 via Android
最近刚遇到过这样的问题,答案: 会
|
6
cyaki 2020-10-16 18:12:50 +08:00 via Android
@monsterxx03 楼主不是 cpu 达到 pod 的限制,而是节点的 cpu 不足
|
7
eric96 2020-10-16 18:15:12 +08:00 2
节点的内存,CPU,磁盘存储达到阈值时,会对节点上的 pod 进行驱逐。这个阈值有默认值,并且可配置。详情可以查看 k8s 的文档
|
8
monsterxx03 2020-10-16 18:17:05 +08:00 1
@cyaki 那要看 pod 的 QoS class 了, 除非那个节点上有其他高优先级的 pod cpu request 得不到满足, 那这个 pod 可能会被 evict, 看 events 应该能看到,如果所有 pod 都没设 requests/limits, 那只会变慢,慢到可能 health check 失败
|
9
anonydmer 2020-10-16 18:24:24 +08:00
If a Container exceeds its memory request, it is likely that its Pod will be evicted whenever the node runs out of memory. A Container might or might not be allowed to exceed its CPU limit for extended periods of time. However, it will not be killed for excessive CPU usage.
文档是这么说的 |
10
cyaki 2020-10-16 18:32:08 +08:00 1
我遇到的问题是这样的
k8s 部署在阿里云的性能突发实列上,可用的 cpu 资源有阿里云的限制 当超过这个限制时,k8s 并没有任何提示资源不足和驱逐行为 ( 因为并没有达到 Node 的资源数值限制 观测到的 Pod 行为只是在不断地收到 SIGTERM 并重启 |
11
chenshun00 2020-10-16 18:37:59 +08:00
CPU 的限制应该是一段时间内吧,比如 1ms 内能用多长时间的 CPU(在限制的情况下)
|
12
v2byy OP @monsterxx03 liveness probe 失败还没有达到阈值,应该不是 liveness probe 的原因
|
13
monsterxx03 2020-10-16 18:56:24 +08:00
信息不太够, kubectl describe pod 看下 Last State 里是什么, Events 里有什么
|