从kube-system命名空间应用kubernetes配置

时间:2018-06-18 14:58:41

标签: kubernetes kube-applier

我在AWS上使用kops创建了kubernetes集群。我尝试使用kube-applieryaml配置应用于我的群集:我使用kube-applier创建了部署:

apiVersion: "extensions/v1beta1"
kind: "Deployment"
metadata:
  name: "kube-applier"
  namespace: "kube-system"
spec:
  # spec

并按照README中的建议在kube-system命名空间中启动它: kubectl --namespace=kube-system apply -f deployment.yaml

但是当收到要申请的新文件时,kube-applier会因此错误而失败:

$ kubectl apply -f /git/deployment.yaml
Error from server (Forbidden): error when retrieving current configuration of:
&{0xc43034ca91 0xc43034ca91 kube-system kube-applier /git/applier-deployment.yaml 0xc421432531  false}
from server for: "/git/deployment.yaml": deployments.extensions "kube-applier" is forbidden: User "system:serviceaccount:kube-system:default" cannot get deployments.extensions in the namespace "kube-system"

如何向kube-applier pod授予权限以在其他命名空间中应用配置?

Kubernetes版本:Server Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.6", GitCommit:"9f8ebd171479bec0ada837d7ee641dec2f8c6dd1", GitTreeState:"clean", BuildDate:"2018-03-21T15:13:31Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}

1 个答案:

答案 0 :(得分:2)

  

如何向kube-applier pod授予权限以在其他命名空间中应用配置?

使用正确的资源权限创建或查找ClusterRole,然后使用ServiceAccountClusterRoleBinding绑定到该{/ 1}}

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
    # C.R.B. don't have a "namespace:"
    name: my-kube-applier
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: default
  namespace: kube-system

,正如@jhernandez所说,你真的想为ServiceAccount创建一个专用的kube-applier,而不是给予我认为是非常非常特权的ClusterRole default 1}}到ServiceAccount SA(这是我在上面的示例中所做的,但你不应该做真的)

创建新的kubectl -n kube-system create sa kube-applier非常便宜:name: default然后将name: kube-applier替换为上面subjects:块中的ClusterRole

理想情况下,人们可以创建自定义的最低权限cluster-admin,而不是像{{1}}那样使用大量的锤子,但生成正确的会产生一些严重的打字,所以我将由您自行决定。

相关问题