我在使用 kubeless 调用函数时遇到问题。 这是函数规范
---
apiVersion: kubeless.io/v1beta1
kind: Function
metadata:
name: smk
namespace: smktest
spec:
handler: hello.handler
runtime: python2.7
function: |
import json
def handler():
return "hello world"
deployment:
spec:
template:
spec:
containers:
- env:
- name: FOO
value: bar
name: "smk-deployment"
resources:
limits:
cpu: 100m
memory: 100Mi
requests:
cpu: 100m
memory: 100Mi
当我尝试调用如下函数时,
kubeless function call smk
我得到
FATA[0000] Unable to find the service for smk
两部分问题
- 如何将函数公开为服务
- 如何指定此函数所需的环境变量? 谢谢
更新运行 kubeless 函数 ls --namespace=smktest 产生如下结果
NAME NAMESPACE HANDLER RUNTIME DEPENDENCIES STATUS
smk smktest hello.handler python2.7 MISSING: Check controller logs
接下来我尝试kubectl logs -n kubeless -l kubeless=controller
有大量的错误日志,但我没有看到特定于此功能的任何内容
当我尝试调用如下函数时,
kubeless function call smk
我得到
FATA[0000] Unable to find the service for smk
跑步
kubeless function ls --namespace=smktest
那么当然,您还需要在调用命令中包含--namespace=smktest
:
kubeless function call --namespace=smktest smk
如何指定此函数所需的环境变量?谢谢
据我所知,似乎有两种方法在使用中:
- 提供一个
Deployment
模板,function controller
似乎合并了该模板,但据我所知,Deployment
中需要container: image:
模板,因此您必须指定一个模板才能访问其env:
声明 - 否则,"作弊"并使用
Pod
的ServiceAccount
令牌手动请求群集资源,其中可能包括ConfigMap
、Secret
,甚至解析您自己的kubeless.io/function
清单并从其注释或类似内容中提取某些内容