Под зависает в состоянии PodInitializing, когда initContainer находится в состоянии OOMKilled.
У меня есть следующая локальная среда Kubernetes:
- ОС: Red Hat Enterprise Linux версии 8.6 (Ootpa)
- Kubernetes: 1.23.7 (один узел, сборка с помощью kubeadm)
- Драйвер NVIDIA: 515.65.01
- набор инструментов nvidia-container: 1.10.0-1.x86_64 (об/мин)
- контейнер: v1.6.2
- vcr.io/nvidia/k8s-device-plugin:v0.12.2
И я запускаю следующий модуль на своем сервере. Только приложение2 (initContainer2) использует графический процессор.
initContainer1: app1
↓
initContainer2: app2 (Uses GPU)
↓
container1: app3
Когда приложение2 использует слишком много оперативной памяти и OOM отключается, модуль должен находиться в состоянии, но он зависает вPodInitializing
статус в моей среде.
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
default gpu-pod 0/1 PodInitializing 0 83m xxx.xxx.xxx.xxx xxxxx <none> <none>
Результатkubectl describe pod
как следует:
Init Containers:
app1:
...
State: Terminated
Reason: Completed
Exit Code: 0
Started: Tue, 30 Aug 2022 10:50:38 +0900
Finished: Tue, 30 Aug 2022 10:50:44 +0900
...
app2:
...
State: Terminated
Reason: OOMKilled
Exit Code: 0
Started: Tue, 30 Aug 2022 10:50:45 +0900
Finished: Tue, 30 Aug 2022 10:50:48 +0900
...
app3:
...
State: Waiting
Reason: PodInitializing
...
...
Эта проблема никогда не возникнет, если я заменю app2 другим контейнером, который не использует графический процессор, или когда я запущу app2 как отдельный контейнер (а не инициализирующий контейнер) модуля. В обоих случаях статус будет правильным.OOMKilled
.
Это ошибка? Если да, есть ли обходные пути?