2

我已经配置了 Kubernetes 插件来启动从属服务器。但是我在访问控制方面遇到了问题。当 master 尝试启动新的 pod(slave)时出现错误

配置代理 Kubernetes Pod 模板 io.fabric8.kubernetes.client.KubernetesClientException 时遇到意外异常:执行失败:POST 在:https://kubernetes.default/api/v1/namespaces/npd-test/pods. 消息:禁止!配置的服务帐户无权访问。服务帐户可能已被撤销......在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport. java:266) 在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:237) 在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:230)在 io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleCreate(OperationSupport.java:208) 在 io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleCreate(BaseOperation.java:643) 在 io.fabric8 .kubernetes.client.dsl.base.BaseOperation.create(BaseOperation.java:300) 在 org.csanchez。

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

不知道为什么插件抱怨服务帐户无权访问。

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

4

2 回答 2

3

奇怪的是,服务帐户正常为您工作,但在 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 -
于 2017-05-23T22:03:18.397 回答
0

下面创建一个服务帐户以从命名空间jenkins构建到命名空间build。我省略了规则,但如果您需要它们,我也可以添加它们。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: jenkins

---

kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: jenkins
  namespace: build

---

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: jenkins
  namespace: build
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: jenkins
subjects:
- kind: ServiceAccount
  name: jenkins
  namespace: jenkins
于 2019-09-16T12:31:36.773 回答