Kubernetes 无法在kubeless上部署函数

Kubernetes 无法在kubeless上部署函数,kubernetes,kubeless,Kubernetes,Kubeless,我是Kubernetes的初学者。我一直在minikube上试用kubeless。我已在可用的最新版本中设置了这两个选项。部署函数时,我得到的输出如下: INFO[0000] Deploying function... INFO[0000] Function hello submitted for deployment INFO[0000] Check the deployment status executing 'kubeless

我是Kubernetes的初学者。我一直在minikube上试用kubeless。我已在可用的最新版本中设置了这两个选项。部署函数时,我得到的输出如下:

INFO[0000] Deploying function...                        
INFO[0000] Function hello submitted for deployment      
INFO[0000] Check the deployment status executing 'kubeless function ls hello'
当我运行
kubeless函数ls
时,我得到以下结果:

NAME    NAMESPACE   HANDLER         RUNTIME     DEPENDENCIES    STATUS                        
hello   default     example.hello   python3.6                   MISSING: Check controller logs
缺失:每次我创建一个函数时,检查控制器日志,该函数显示此状态。我还通过将运行时更改为python2.7进行了检查,但它仍然不起作用。下面是deploy命令

kubeless function deploy hello --runtime python3.6 --from-file python-example/example.py --handler example.hello
请指导我如何解决此问题。

我可以从以下页面看到:

要调试“缺少:检查控制器日志”这类问题,必须检查控制器日志中的错误。要检索这些日志,请执行以下操作:

$ 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"
                        }
因此,可能的原因如下:

  • 此函数存在运行时问题,例如,导致pod无法运行的语法问题或依赖项问题。检查pod日志有助于找出原因。(这种情况发生在我的案例中,不确定是否是第二个原因导致kubeless无法获取失败消息)

  • kubeless版本与k8s群集版本不兼容。从k8s1.15中,删除了用于部署的扩展/v1beta1版本。但是,早期版本kubeless仍然使用extension/v1beta1来获取部署状态。您可以检查k8s集群的api资源

  • 检查以下kubeless的更改列表,该列表使用新的apps/v1端点。


    首先,获取kubeless控制器吊舱的名称:

    kubectl -n kubeless get pods
    
    您可以从Kubeles控制器获取日志:

    kubectl logs -n kubeless -c kubeless-function-controller kubeless-controller-manager-5dc8f64bb7-b9x4r
    

    您是否检查了function controller的日志?function controller是pod kubeless controller manager中的一个容器。还要检查function controller创建的pod的日志,该日志应在当前命名空间中命名为您的函数名。我得到了这个缺失的状态,这在我的运行时pod中是一个运行时问题(较少依赖)。但是,在我更正了所有内容并使函数正确运行后,我的函数仍处于此状态。
    kubectl -n kubeless get pods
    
    kubectl logs -n kubeless -c kubeless-function-controller kubeless-controller-manager-5dc8f64bb7-b9x4r