首页 文章

默认服务帐户无法使用jenkins上的kubernetes插件

提问于
浏览
1

我已经配置了Kubernetes插件来驱动奴隶 . 但是我遇到访问控制问题 . 主人试图启动新的pod(奴隶)时出错

配置代理Kubernetes Pod模板时遇到意外异常io.fabric8.kubernetes.client.KubernetesClientException:执行失败:POST at:https://kubernetes.default/api/v1/namespaces/npd-test/pods . 消息:禁止!已配置的服务帐户无权访问 . 服务帐户可能已被撤销..在io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:315)io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport . java:266)at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:237)at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:230) at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleCreate(OperationSupport.java:208)at io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleCreate(BaseOperation.java:643)at io.fabric8位于org.csanchez.jenkins.plugins的org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud $ ProvisioningCallback.call(KubernetesCloud.java:636)中的.kubernetes.client.dsl.base.BaseOperation.create(BaseOperation.java:300) .kubernetes.KubernetesCloud $ ProvisioningCallback.call(KubernetesCloud.java:581)at jenkins.util.ContextResettingExecutorService $ 2.call(Con textResettingExecutorService.java:46)java.util.concurrent.FutureTask.run(FutureTask.java:266)java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker .run(ThreadPoolExecutor.java:617)在java.lang.Thread.run(Thread.java:745)

我已检查位于 /var/run/secrets/kubernetes.io/serviceaccount/token 的默认服务帐户的访问权限,并尝试使用令牌在 https://kubernetes.default/api/v1/namespaces/npd-test/pods. 中创建一个窗格并且它可以正常工作 .

不确定为什么插件抱怨服务帐户没有访问权限 .

我尝试使用None凭据和Kubernetes服务帐户凭据(无法指定帐户)配置Kubernetes插件,但都不起作用 .

1 回答

  • 1

    很奇怪,服务帐户通常适合您,但在Jenkins中不起作用 . 在我的设置中,我必须添加一个 RoleBinding 来为服务帐户提供 edit 角色(我的命名空间实际上是 jenkins 但我在这里更改它以匹配您的命名空间) .

    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: RoleBinding
    metadata:
      name: jenkins
      namespace: npd-test
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: edit
    subjects:
    - kind: ServiceAccount
      name: default
      namespace: npd-test
    

    在我这样做之后,我像这样配置了Kubernetes Cloud插件,它对我有用 .

    Kubernetes URL: https://kubernetes.default.svc.cluster.local
    Kubernetes server certificate key:
    Disable https certificate check: off
    Kubernetes Namespace: npd-test
    Credentials: - none -
    

相关问题