Я переустанавливаю развертывание K3s несколько месяцев назад. Потом заработало отлично, без проблем. Однако, когда я пытаюсь развернуть его сейчас, после внесения некоторых других исправлений я получаю следующую ошибку:
Warning Unhealthy 32m kubelet Readiness probe errored: rpc error: code = Unknown desc = failed to exec in container: failed to start exec "8078b7c54b9bb1609451ae1c2e832ede0670f264490f6ee34e334673fd025681": OCI runtime exec failed: exec failed: unable to start container process: exec: "grpc_health_probe": executable file not found in $PATH: unknown
Это файл .yaml, который я использую для развертывания.
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: vei-deployment
spec:
replicas: 1
selector:
matchLabels:
app: server-pod
template:
metadata:
labels:
app: server-pod
spec:
containers:
- name: server-pod
image: myname/mydeployment:latest
env:
- name: AWS_ACCESS_KEY_ID
value: $AWS_ACCESS_KEY_ID
- name: AWS_SECRET_ACCESS_KEY
value: $AWS_SECRET_ACCESS_KEY
ports:
- name: grpc
containerPort: 50051
livenessProbe:
exec:
command:
- grpcurl
- -plaintext
- localhost:50051
- ping.Pinger/Ping
readinessProbe:
exec:
command:
- grpc_health_probe
- -addr=:50051
Одна и та же ошибка выдается для каждой команды как в тесте живости, так и в тесте готовности. Изменилось ли что-то в отношении зондов в К3 за последние несколько месяцев?
Warning Unhealthy 32m kubelet Readiness probe errored: rpc error: code = Unknown desc = failed to exec in container: failed to start exec "8078b7c54b9bb1609451ae1c2e832ede0670f264490f6ee34e334673fd025681": OCI runtime exec failed: exec failed: unable to start container process: exec: "grpc_health_probe": executable file not found in $PATH: unknown
Эта ошибка может быть вызвана несколькими различными сценариями, описанными ниже:
Возможно, в образе контейнера, который вы используете, отсутствует исполняемый файл grpchealthprobe, или образ неправильно настроен для поиска исполняемого файла в $PATH
. Если образ настроен правильно, возможно, kubelet не может получить доступ к образу контейнера.
Как @DazWilkin Похоже, проблема в том, что бинарный файл grpchealthprobe
отсутствует в вашем кластере Kubernetes. Похоже, ваше развертывание Kubernetes не работает из-за отсутствия исполняемого файла. Эта ошибка может возникнуть, если файл, необходимый для проверки готовности, отсутствует в контейнере. Чтобы решить эту проблему, вам нужно будет убедиться, что файл присутствует в контейнере. Это можно сделать, добавив файл в образ контейнера или смонтировав файл в контейнер. Вам нужно убедиться, что исполняемый файл «grpchealthprobe» находится в переменной среды $PATH
, или указать полный путь к исполняемому файлу в конфигурация зонда готовности. Кроме того, вам может потребоваться убедиться, что права доступа к исполняемому файлу установлены правильно, чтобы его можно было выполнить. Как только файл появится, проверка готовности должна начать работать правильно. вы сможете развернуть развертывание K3s без каких-либо дополнительных проблем.
Для получения дополнительной информации следуйте этому документу.
В моем случае это был первый описанный сценарий. Я не знаю, как на образе стали отсутствовать исполняемые файлы, но переделка Docker Image устранила проблему.
Ваши
livenessProbe
иreadinessProbe
полагаются на бинарные файлыexec
(grpcurl
,grpc_health_probe
). Ошибка предполагает, чтоgrpc_health_probe
не существует в контейнере. Убедитесь, что оба двоичных файла (по-прежнему) присутствуют в образе (myname/mydeployment:latest
), который используется для контейнера.