Невозможно развернуть функции на kubeless

Я новичок в Kubernetes. Пробовал kubeless на minikube. Я установил оба в последней доступной версии. Когда я развертываю функцию, я получил следующий результат:

INFO[0000] Deploying function...                        
INFO[0000] Function hello submitted for deployment      
INFO[0000] Check the deployment status executing 'kubeless function ls hello'

Когда я запускаю kubeless function ls, я получаю это:

NAME    NAMESPACE   HANDLER         RUNTIME     DEPENDENCIES    STATUS                        
hello   default     example.hello   python3.6                   MISSING: Check controller logs

MISSING: Check controller logsкаждый раз, когда я создаю функцию, она показывает этот статус. Я также проверил, изменив RUNTIME на python2.7, но все равно это не работает. Команда развертывания следующая

kubeless function deploy hello --runtime python3.6 --from-file python-example/example.py --handler example.hello

Пожалуйста, расскажите мне, как решить эту проблему.

2 ответа

Как я вижу на сайте kubeless.io:

Для устранения проблем типа "ОТСУТСТВУЕТ: проверка журналов контроллера" необходимо проверить, в чем заключается ошибка в журналах контроллера. Чтобы получить эти журналы, выполните:

$ kubectl logs -n kubeless -l kubeless=controller

Бывают случаи, когда проверок, выполненных в CLI, недостаточно, чтобы выявить проблему в заданных параметрах. В этом случае функция "Развертывание" никогда не появится.

Надеюсь, это поможет.

Из кода kubeless этот статус происходит, если kubeless не может получить статус развертывания k8s для этой функции.

status, err := getDeploymentStatus(cli, f.ObjectMeta.Name, f.ObjectMeta.Namespace)
                        if err != nil && k8sErrors.IsNotFound(err) {
                                status = "MISSING: Check controller logs"
                        }

Итак, есть несколько возможных причин:

  1. Для этой функции существует проблема времени выполнения, например проблема синтаксиса или проблема зависимости, из-за которых модуль не запускается. Чтобы выяснить это, проверьте журналы модуля (это происходит в моем случае, я не уверен, вызвано ли это второй причиной, из-за которой kubeless не может получить сообщение об ошибке)

  2. Версия kubeless несовместима с версией кластера k8s. Из k8s 1.15 версия extension/v1beta1 для развертывания удалена. Однако ранняя версия kubeless по-прежнему использует расширение / v1beta1 для получения статуса развертывания. Вы можете проверить api-ресурсы вашего кластера k8s.

$kubectl api-resources | grep deployments
deployments    deploy       apps      true         Deployment
#kubectl api-versions | grep apps
apps/v1

Проверьте следующий список изменений kubeless, который использует новую конечную точку apps / v1. Использовать новые приложения / конечную точку v1

func getDeploymentStatus(cli kubernetes.Interface, funcName, ns string) (string, error) {
-   dpm, err := cli.ExtensionsV1beta1().Deployments(ns).Get(funcName, metav1.GetOptions{})
+   dpm, err := cli.AppsV1().Deployments(ns).Get(funcName, metav1.GetOptions{})

Сначала получите имя модуля контроллера kubeless:

kubectl -n kubeless get pods

Вы можете получить логи из контроллера Kubeles:

kubectl logs -n kubeless -c kubeless-function-controller kubeless-controller-manager-5dc8f64bb7-b9x4r
Другие вопросы по тегам