У меня в подвале стоит сервер Ubuntu. MicroK8S, устанавливается через Snap. Я пытаюсь создать простой модуль, используя kubectl run
который я могу запустить в целях отладки. Но я продолжаю терпеть неудачу.
Сначала я попробовал эту команду:
kubectl run -it --rm --restart=Never busybox --image=busybox -- /bin/ash
Но каждый раз, когда я пытаюсь запустить это, я получаю такую ошибку:
pod "busybox deleted"
pod default/busybox terminated (ContainerCannotRun)
failed to create OCI runtime control socket: stat /run/user/0/snap.microk8s: no such file or directory: unknown
Затем я решил попробовать запустить сначала контейнер, а затем - exec - как две отдельные команды. Удивительно, но первоначальное создание пода действительно работает, как эта команда:
kubectl run --image=busybox --restart=Never busybox --image=busybox --command -- tail -f /dev/null
Но затем, когда я пытаюсь выполнить его с помощью этой команды ...
kubectl exec -it busybox -- /bin/ash
... Я получаю эту ошибку:
failed to create runc console socket: stat /run/user/0/snap.microk8s: no such file or directory: unknown
command terminated with exit code 126
Обе ошибки проявляются только после того, как я пытаюсь подключиться к работающему модулю, и обе ошибки ссылаются на /run/user/0/snap.microk8s
. Однако я не совсем уверен, что означают эти ошибки. Это проблема с моей конфигурацией? Или мне не хватает какой-то зависимости? Или жесткий диск поврежден? Или что-то совсем другое? И наконец: как я могу заставить это работать?
Вы не указали, какую версию microk8 вы используете.
Поскольку вы используете kubectl вместо microk8s.kubectl, я предполагаю, что вы создали псевдоним. Пробовал 4 последних версии microk8s 1.11 1.12 1.13 и 1.14. Похоже, эта проблема возникает только в версии 1.11. Чтобы узнать, какую версию вы используете в настоящее время, выполните
snap info microk8s
Удалить старую версию microk8s
sudo snap remove microk8s
и установите последнюю версию microk8s
sudo snap install microk8s --classic --channel=1.14/stable
В качестве дополнительной информации, если вам нужен модуль, который будет находиться в состоянии выполнения более длительное время, вы можете использовать изображение nginx вместо busybox.
microk8s.kubectl exec -ti nginx -- /bin/bash
Если вы новичок в microk8s, очень полезным будет этот документ