本文主要是介绍kubernetes:pods is forbidden: User “system:serviceaccount:dev:default” cannot create resource “pods”,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
背景:
在gitlib-ci 对接kubernetes的时候报错:
ERROR: Job failed (system failure): pods is forbidden: User “system:serviceaccount:dev:default” cannot create resource “pods” in API group “” in the namespace “dev”
原因:
k8s使用的RBAC权限访问控制,当前对namespace dev 没有操作权限
我在gitlab-ci.yml 文件里面 使用 --kubeconfig 带 kubeadm.conf 的admin权限管理文件去认证操作
一般存在于master节点的/root/.kube/config
kubectl --kubeconfig dev.conf -n dev get pod
我的集群使用的kubeadm安装的, 默认对每一个命名空间有一个默认的serviceaccount :default
如果在CI里面没有特别指定serviceaccount 那么将使用默认账户 system:serviceaccount:dev:default
最终的原因就是没有创建 对应 namespaces 的 集群角色绑定clusterrolebinding
解决办法:
执行一下命令,创建clusterrolebinding即可
kubectl create clusterrolebinding gitlab-cluster-admin --clusterrole=cluster-admin --group=system:serviceaccounts --namespace=dev
效果
附件:
gitlab-ci.yml
stages:- build- deploy
k8s-deploy:stage: deployimage: http://myharbor/kubectl:latestonly:- ci-testscript:- kubectl --kubeconfig dev.conf -n dev get pod tags:- k8s-runner
runner配置文件config.toml
[runners.kubernetes]host = ""bearer_token_overwrite_allowed = falseimage = "docker:dind"namespace = "dev"namespace_overwrite_allowed = ""privileged = truepull_policy = "if-not-present"helper_image = "http://myharbor/cfss/gitlab-runner-helper:x86_64-ac2a293c"service_account_overwrite_allowed = ""pod_annotations_overwrite_allowed = ""
参考:
https://gist.github.com/Machy8/da45ed785b0a14ab625f9b2614b9829b
这篇关于kubernetes:pods is forbidden: User “system:serviceaccount:dev:default” cannot create resource “pods”的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!