Azure AKS中的Pod会随机重新启动

时间:2019-06-21 22:54:42

标签: docker kubernetes azure-aks

我们在运行Kubernetes 1.13.5的AKS集群中遇到问题。症状是:

  • 荚随机重启
  • “最后状态”为“已终止”,“原因”为“错误”,“退出代码”为“ 137”
  • pod事件未显示任何错误,与资源不足或活动检查失败有关
  • 对于已停止的容器,docker容器将“ OOMKilled”显示为“ false”
  • Linux日志显示没有OOM杀死的Pod

这些问题与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监视后,我们可以看到在重新启动期间没有发生任何事件,除了容器再次启动。

enter image description here

在我们的情况下,运行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]

1 个答案:

答案 0 :(得分:1)

似乎已通过更新为AKS 1.13.7(包括对Moby 3.0.6的更新)解决了此问题。自几天前进行更新以来,我们还没有看到容器以https://github.com/moby/moby/issues/38768上的Docker错误中描述的方式被杀死。