Из кода kubeless это состояние происходит, если kubeless не может получить статус развертывания k8s для этой функции.
status, err := getDeploymentStatus(cli, f.ObjectMeta.Name, f.ObjectMeta.Namespace)
if err != nil && k8sErrors.IsNotFound(err) {
status = "MISSING: Check controller logs"
}
Таким образом, существуют следующие возможные причины:
Существует проблема во время выполнения для этой функции, например, проблема синтаксиса или проблема зависимости, которая вызывает не удалось запустить. Проверьте, что журналы модуля могут помочь выяснить. (Это происходит для моего случая, я не уверен, вызвано ли это второй причиной, которая приводит к тому, что kubeless не может получить сообщение об ошибке)
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{})