我已经配置了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 回答
很奇怪,服务帐户通常适合您,但在Jenkins中不起作用 . 在我的设置中,我必须添加一个
RoleBinding
来为服务帐户提供edit
角色(我的命名空间实际上是jenkins
但我在这里更改它以匹配您的命名空间) .在我这样做之后,我像这样配置了Kubernetes Cloud插件,它对我有用 .