Не в состоянии развернуть функции на kubeless - PullRequest
0 голосов
/ 06 февраля 2020

Я новичок в Кубернетесе. Я пробовал kubeless на миникубе. Я настроил оба в последней доступной версии. При развертывании функции это вывод, который я получил:

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 ]

0 голосов
/ 21 февраля 2020

Из кода 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. The kubeless версия не совместима с версией кластера k8s. Начиная с версии k8s 1.15 версия расширения / 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{})
0 голосов
/ 06 февраля 2020

Как я вижу из kubeless.io :

Для устранения неполадок типа «MISSING: Проверка журналов контроллера» необходимо проверить, в чем заключается ошибка в журналах контроллера. , Чтобы извлечь эти журналы, выполните:

$ kubectl logs -n kubeless -l kubeless=controller

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

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

...