我们在运行Kubernetes 1.13.5的AKS集群中遇到问题。症状是:
这些问题与https://github.com/moby/moby/issues/38768中所述的问题相符。但是,我找不到任何方法来确定在AKS节点上运行的Docker版本是否受此错误影响,因为AKS似乎使用的是Docker自定义版本,其版本为3.0.4,而我找不到这些自定义版本号与上游Docker版本之间的任何关系。
有人知道如何将内部AKS Docker内部版本号与上游Docker版本相匹配,或者更好的是有人如何防止Pod被随机杀死?
更新
这仍然是一个持续存在的问题,尽管我会记录一下如何为将来的AKS用户调试它。
这是对带有已被退出代码137杀死的容器的吊舱的典型描述。常见因素是将Last State
设置为Terminated
,将Reason
设置为设置为Error
,将Exit Code
设置为137,并且没有事件。
Containers:
octopus:
Container ID: docker://3a5707ab02f4c9cbd66db14d1a1b52395d74e2a979093aa35a16be856193c37a
Image: index.docker.io/octopusdeploy/linuxoctopus:2019.5.10-hosted.462
Image ID: docker-pullable://octopusdeploy/linuxoctopus@sha256:0ea2a0b2943921dc7d8a0e3d7d9402eb63b82de07d6a97cc928cc3f816a69574
Ports: 10943/TCP, 80/TCP
Host Ports: 0/TCP, 0/TCP
State: Running
Started: Mon, 08 Jul 2019 07:51:52 +1000
Last State: Terminated
Reason: Error
Exit Code: 137
Started: Thu, 04 Jul 2019 21:04:55 +1000
Finished: Mon, 08 Jul 2019 07:51:51 +1000
Ready: True
Restart Count: 2
...
Events: <none>
缺少事件是由于Kubernetes本身中设置的事件TTL导致事件到期。但是,启用了Azure监视后,我们可以看到在重新启动期间没有发生任何事件,除了容器再次启动。
在我们的情况下,运行kubectl logs octopus-i002680-596954c5f5-sbrgs --previous --tail 500 -n i002680
不会在重新启动之前显示任何应用程序错误。
在托管该容器的Kubernetes节点上运行docker ps --all --filter 'exited=137'
,显示容器593f857910ff的退出代码为137。
Enable succeeded:
[stdout]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
20930700810f 7c23e4d2be70 "./install.sh " 14 hours ago Exited (137) 12 hours ago k8s_octopus_octopus-i002525-55f69565f8-s488l_i002525_b08125ab-9e2e-11e9-99be-422b98e8f214_2
593f857910ff 7c23e4d2be70 "./install.sh " 4 days ago Exited (137) 25 hours ago k8s_octopus_octopus-i002680-596954c5f5-sbrgs_i002680_01eb1b4d-9e03-11e9-99be-422b98e8f214_1
d792afb85c6f 7c23e4d2be70 "./install.sh " 4 days ago Exited (137) 4 days ago k8s_octopus_octopus-i002521-76bb77b5fd-twsdx_i002521_035093c5-9e2e-11e9-99be-422b98e8f214_0
0361bc71bf14 7c23e4d2be70 "./install.sh " 4 days ago Exited (137) 2 days ago k8s_octopus_octopus-i002684-769bd954-f89km_i002684_d832682d-9e03-11e9-99be-422b98e8f214_0
[stderr]
运行docker inspect 593f857910ff | jq .[0] | jq .State
表示该容器不是OOMKilled
。
Enable succeeded:
[stdout]
{
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 137,
"Error": "",
"StartedAt": "2019-07-04T11:04:55.037288884Z",
"FinishedAt": "2019-07-07T21:51:51.080928603Z"
}
[stderr]
答案 0 :(得分:1)
似乎已通过更新为AKS 1.13.7(包括对Moby 3.0.6的更新)解决了此问题。自几天前进行更新以来,我们还没有看到容器以https://github.com/moby/moby/issues/38768上的Docker错误中描述的方式被杀死。