首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在kubeless上部署函数

无法在kubeless上部署函数
EN

Stack Overflow用户
提问于 2020-02-06 17:45:00
回答 3查看 312关注 0票数 0

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

代码语言:javascript
复制
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时,我得到这样的结果:

代码语言:javascript
复制
NAME    NAMESPACE   HANDLER         RUNTIME     DEPENDENCIES    STATUS                        
hello   default     example.hello   python3.6                   MISSING: Check controller logs

MISSING: Check controller logs每次创建函数时,它都会显示此状态。我还通过将运行时更改为python2.7进行了检查,但它仍然不起作用。部署命令如下

代码语言:javascript
复制
kubeless function deploy hello --runtime python3.6 --from-file python-example/example.py --handler example.hello

请指导我如何解决此问题。

EN

回答 3

Stack Overflow用户

发布于 2020-02-06 23:21:07

正如我从kubeless.io中看到的

要调试“丢失:检查控制器日志”这类问题,有必要检查控制器日志中的错误是什么。要检索这些日志,请执行以下命令:

代码语言:javascript
复制
$ kubectl logs -n kubeless -l kubeless=controller

在某些情况下,在CLI中完成的验证不足以发现给定参数中的问题。如果是这种情况,函数部署将永远不会出现。

希望这能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2020-02-21 11:47:13

在kubeless代码中,如果kubeless无法获取此函数的k8s部署状态,则会出现此状态。

代码语言:javascript
复制
status, err := getDeploymentStatus(cli, f.ObjectMeta.Name, f.ObjectMeta.Namespace)
                        if err != nil && k8sErrors.IsNotFound(err) {
                                status = "MISSING: Check controller logs"
                        }

因此,可能的原因如下:

  1. 此函数存在运行时问题,例如,导致pod无法运行的语法问题或依赖项问题。查看pod日志可以帮助找出(对于我的情况,不确定是不是第二个原因导致kubeless无法获取失败消息)
  2. kubeless版本与k8s集群版本不兼容。从k8s 1.15中,删除了用于部署的扩展/v1beta1版本。但是,早期版本的kubeless仍然使用扩展名/v1beta1来获取部署状态。您可以查看您的k8s集群的api资源。

代码语言:javascript
复制
$kubectl api-resources | grep deployments
deployments    deploy       apps      true         Deployment
#kubectl api-versions | grep apps
apps/v1

检查以下使用新应用程序/v1端点的kubeless的更改列表。Use new apps/v1 endpoint

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2020-10-10 10:34:32

首先,获取kubeless-controller pod的名称:

代码语言:javascript
复制
kubectl -n kubeless get pods

您可以从Kubeles控制器获取日志:

代码语言:javascript
复制
kubectl logs -n kubeless -c kubeless-function-controller kubeless-controller-manager-5dc8f64bb7-b9x4r
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60091934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档