我在AWS上使用kops创建了kubernetes集群 . 我正在尝试使用kube-applier将 yaml
配置应用于我的集群:我使用 kube-applier
创建了一个部署:
apiVersion: "extensions/v1beta1"
kind: "Deployment"
metadata:
name: "kube-applier"
namespace: "kube-system"
spec:
# spec
并按照自述文件中的建议在 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 回答
使用正确的资源权限创建或查找
ClusterRole
,然后使用ClusterRoleBinding
将ServiceAccount
绑定到它BUT ,正如@jhernandez所说,你真的想为
kube-applier
创建一个专用的ServiceAccount
,而不是给我认为是default
一个非常非常特权的ClusterRole
(这是我在上面的例子中所做的,但你不应该做真的)创建一个新的
ServiceAccount
超级便宜:kubectl -n kube-system create sa kube-applier
然后在上面的subjects:
块中用name: kube-applier
替换name: default
.理想情况下,人们会创建一个自定义的最小权限
ClusterRole
而不是使用像_2510399这样的大型锤子,但生成正确的锤子需要一些严肃的打字,所以我会自行决定 .