我们正在尝试在非默认的k8s namespace 上使用nextflow,我们使用的 namespace 是nextflownamespace
。我们已经创建了PVC,并确保默认服务帐户具有管理员角色绑定(bind)。我们收到一个错误,表明nextflow无法访问PVC:
"message": "persistentvolumeclaims \"my-nextflow-pvc\" is forbidden:
User \"system:serviceaccount:mynamespace:default\" cannot get resource
\"persistentvolumeclaims\" in API group \"\" in the namespace \"nextflownamespace\"",
在该错误中,我们看到system:serviceaccount:mynamespace:default
错误地指向我们的默认 namespace mynamespace
,而不是我们创建供nextflow使用的nextflownamespace
。我们尝试将
debug.yaml = true
添加到我们的nextflow.config
中,但是找不到提交给k8s的YAML以验证错误。我们的配置文件如下所示:profiles {
standard {
k8s {
executor = "k8s"
namespace = "nextflownamespace"
cpus = 1
memory = 1.GB
debug.yaml = true
}
aws{
endpoint = "https://s3.nautilus.optiputer.net"
}
}
我们确实验证了当我们将命名空间更改为另一个任意值时,错误消息使用了新的任意命名空间,但是服务帐户名继续错误地指向用户的默认命名空间。我们尝试了我们能想到的
profiles.standard.k8s.serviceAccount = "system:serviceaccount:nextflownamespace:default"
的每个变体,但这些尝试没有得到任何改变。 最佳答案
我认为最好避免在Nextflow中使用嵌套的config profiles。我要么从您的配置文件中删除“标准”层,要么将“标准”设为一个单独的配置文件:
profiles {
standard {
process.executor = 'local'
}
k8s {
executor = "k8s"
namespace = "nextflownamespace"
cpus = 1
memory = 1.GB
debug.yaml = true
}
aws{
endpoint = "https://s3.nautilus.optiputer.net"
}
}
关于kubernetes - Nextflow没有使用正确的服务帐户将工作流部署到kubernetes,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64072826/