gpt4 book ai didi

kubernetes - 如何使用上下文为 ServiceAccount 创建角色

转载 作者:行者123 更新时间:2023-12-03 08:28:58 26 4
gpt4 key购买 nike

我想为具有上下文的服务帐户创建一个角色。
我的目标是能够运行kubectl get pods与服务帐户的上下文。

为此,我需要:

  • 创建服务帐号
  • 创建角色
  • 创建绑定(bind)角色
  • 创建上下文

  • 我创建了一个服务帐户:
    kubectl create serviceaccount myservice

    角色.yaml:
    kind: Role
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
    namespace: development
    name: my-role
    rules:
    - apiGroups: ["", "extensions", "apps"]
    resources: ["pods"]
    verbs: ["get"]

    绑定(bind)角色.yaml:
    kind: RoleBinding
    apiVersion: rbac.authorization.k8s.io/v1beta1
    metadata:
    name: my-role-binding
    namespace: development
    subjects:
    - kind: ServiceAccount
    name: myservice
    namespace: development
    apiGroup: ""
    roleRef:
    kind: Role
    name: my-role
    apiGroup: ""

    我希望能够运行 kubectl get pods在服务帐户 myservice 的上下文中.

    要创建上下文,我需要这样的东西:
    kubectl config set-context myservice-context --cluster=kubernetes --user=???

    但是我不能使用 --user对于服务帐户。
    那么我该怎么做呢?

    我想用 kubectl config set-credentials但它只是创建一个用户,我已经有了服务帐户。

    编辑:
    这是我尝试使用服务帐户的 token 创建用户,然后将其与 kubectl --context=myservice-context get pods 一起使用但它失败了:
    enter image description here

    最佳答案

    看来您的 ~/.kube/config 中可能缺少集群。文件。如果是权限问题,我希望看到 error: You must be logged in to the server (Unauthorized)Error from server (Forbidden) .

    您看到的错误 The connection to the server localhost:8080 was refused - did you specify the right host or port?意味着没有您在 kubeconfig 中指定的名称的集群。

    我会检查您的 kubeconfig 是否包含集群名称 kubernetescertificate-authority-data和各自的server .

    例如,我首先尝试使用不存在的服务帐户使用无效集群,然后再次使用确实存在于我的 kubeconfig 中的集群。 .

    错误的集群名称:

    kubectl config set-context service-context \
    --cluster=doesnotexist \
    > --namespace=default \
    > --user=service-account
    Context "service-context" modified.
    ➜ ~ kubectl --context=service-context get pods
    The connection to the server localhost:8080 was refused - did you specify the right host or port?

    好的集群名称:
    kubectl config set-context service-context \
    --cluster=exists \
    --namespace=default \
    --user=service-account
    Context "service-context" modified.
    ➜ ~ kubectl --context=service-context get pods
    error: You must be logged in to the server (Unauthorized)

    后来的错误表明您的用户/权限有问题。前者建议 cluster在您的 kubeconfig 中不存在.

    编辑:

    还记得使用 sudo 时它使用 /root/.kube/config这可能不是你想要的

    关于kubernetes - 如何使用上下文为 ServiceAccount 创建角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51124298/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com