У нас есть проблема в кластере AKS, работающем под Kubernetes 1.13.5. Симптомы:
- Стручки перезапускаются случайным образом
- «Последнее состояние» - «Прекращено», «Причина» - «Ошибка», а «Код выхода» - «137»
- События pod не показывают ошибок, связанных либо с нехваткой ресурсов, либо с неудачными проверками работоспособности
- Контейнер Docker показывает «OOMKilled» как «false» для остановленного контейнера
- В журналах linux нет убитых OOM-модулей.
Проблемы, с которыми они сталкивались, совпадают с описанными в https://github.com/moby/moby/issues/38768. Однако я не могу найти способа определить, не связана ли эта ошибка Docker, запущенной на узлах AKS, с этой ошибкой, потому что AKS, кажется, использует пользовательский сборка Docker, чья версия похожа на 3.0.4, и я не могу найти никакой связи между этими пользовательскими номерами версий и вышестоящими версиями Docker.
Кто-нибудь знает, как сопоставить внутренние номера сборок AKS Docker с выпусками Docker восходящего потока, или, что еще лучше, как кто-то может предотвратить случайное уничтожение модулей?
Обновление
Это все еще не решенная проблема, и я, хотя и хотел бы документировать, как мы отлаживали ее для будущих пользователей 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>
Отсутствие событий вызвано тем, что TTL, установленный в самом Kubernetes, приводит к истечению срока действия событий. Однако с включенным мониторингом Azure мы видим, что во время перезапуска не было никаких событий, кроме повторного запуска контейнера.
![enter image description here](https://i.stack.imgur.com/1H4uT.png)
В нашем случае выполнение kubectl logs octopus-i002680-596954c5f5-sbrgs --previous --tail 500 -n i002680
не показывает ошибок приложения до перезапуска.
Запуск docker ps --all --filter 'exited=137'
на узле Kubernetes, в котором размещается модуль, показывает контейнер 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]