【问题标题】:New serviceaccount created for kubernetes cluster cannot exec into pods为 Kubernetes 集群创建的新服务帐户无法执行到 pod 中
【发布时间】:2021-12-28 18:58:06
【问题描述】:

我有一个脚本可以创建具有特定访问权限的用户。

脚本运行以下命令:

kubectl create serviceaccount username
kubectl create clusterrole readonlyuser --non-resource-url=* --verb=get,list,watch --resource=pods,pods/attach,pods/exec,pods/port-forward,pods/proxy,services/proxy
kubectl create clusterrolebinding username --serviceaccount=default:username --clusterrole=readonlyuser
kubectl create rolebinding username --serviceaccount=default:username --clusterrole=readonlyuser --namespace=namespace

当我尝试执行到该特定命名空间中的 pod 时,我得到以下信息:

Error from server (Forbidden): pods "<podname>" is forbidden: User "system:serviceaccount:default:username" cannot create resource "pods/exec" in API group "" in the namespace "namespace"

知道如何解决这个问题吗?

【问题讨论】:

    标签: kubernetes exec kubectl


    【解决方案1】:

    错误信息如下:

     cannot create resource "pods/exec" in API group "" in the namespace "namespace"
    

    于是创建了另一个集群角色和角色绑定如下:

    kubectl create clusterrole exec-readonlyuser --verb create --resource pods/exec
    kubectl create rolebinding exec-readonlyuser --clusterrole=exec-readonlyuser --serviceaccount default:namespace -n namespace
    

    现在尝试执行,它正在工作。

     kubectl exec -it nginx --as system:serviceaccount:namespace:username -- sh
     #
     #exit
    

    如果您使用的是yaml,则可以将其添加为同一集群角色中的另一条规则。

    【讨论】:

    • 你太棒了。这正是缺少的。
    猜你喜欢
    • 1970-01-01
    • 2020-08-22
    • 2019-10-19
    • 1970-01-01
    • 2019-05-04
    • 2020-12-25
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多