argo 报错 failed to save outputs: Failed to establish pod watch: unknown
学习argo 的demo 的时候,第一个hello world 就报错了报错信息如下:failed to save outputs: Failed to establish pod watch: unknown (get pods)报错原因:其实是因为Argo在默认安装好之后,workflow-controller默认使用的是"default" 账户去调用K8S api-server 查询pod信
·
学习argo 的demo 的时候,第一个hello world 就报错了
报错信息如下:
failed to save outputs: Failed to establish pod watch: unknown (get pods)
报错原因:
其实是因为Argo在默认安装好之后,workflow-controller默认使用的是"default" 账户去调用K8S api-server 查询pod信息的,但是"default" 账户的权限可能不够。
解决办法:
创建拥有create pod之类的权限的workflow账户给argo使用:
apiVersion: v1
kind: ServiceAccount #
metadata:
name: workflow
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: workflow-role
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- watch
- patch
- apiGroups:
- ""
resources:
- pods/log
verbs:
- get
- watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: workflow-binding
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: workflow-role
subjects:
- kind: ServiceAccount
name: workflow
最后: 你在apply上面的文件后,还需要在你的argo的任务yaml文件里增加spec.serviceAccountName:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
name: <wf-name>
spec:
serviceAccountName: workflow # 这里说明这个是一个啥用户级别的
entrypoint: <entrypoint-name>
templates:
链接:参考文章
概念解释
- ServiceAccount:
创建用户: 有一个什么样的角色,角色叫workflow - Role
创建角色:这个角色可以在k8s干什么,CURD pods - RoleBinding
用户角色关联绑定:workflow 可以CURD pods
最后在创建pods的时候需要说明这个pods属于那个ServiceAccount,也就是这个pod 关联的资源(controller等)具有什么操作权限。
更多推荐
已为社区贡献8条内容
所有评论(0)