在kubernetes中挂载默认令牌时,我遇到了问题,它不再适用于我,我想在创建Github问题之前直接询问,所以我的设置基本上是一个带有手动部署etcd (包括certs、.The)的HA裸金属集群,运行节点寄存器,我只是不能部署荚,总是给出错误:
MountVolume.SetUp failed for volume "default-token-ddj5s" : secrets "default-token-ddj5s" is forbidden: User "system:node:tweak-node-1" cannot get secrets in the namespace "default": no path found to object
在调整节点-1是我的节点名称和主机名之一时,我发现了一些类似的问题:- https://github.com/kubernetes/kubernetes/issues/18239 - https://github.com/kubernetes/kubernetes/issues/25828。
但是没有人接近解决我的问题,因为问题不是相同的,我只在尝试运行pods时使用默认名称空间,并且尝试设置两个RBAC ABAC,结果都是相同的,这是一个用于部署的模板,显示版本为etcd配置:
apiVersion: kubeadm.k8s.io/v1alpha1
kind: MasterConfiguration
api:
advertiseAddress: IP1
bindPort: 6443
authorizationMode: ABAC
kubernetesVersion: 1.8.5
etcd:
endpoints:
- https://IP1:2379
- https://IP2:2379
- https://IP3:2379
caFile: /opt/cfg/etcd/pki/etcd-ca.crt
certFile: /opt/cfg/etcd/pki/etcd.crt
keyFile: /opt/cfg/etcd/pki/etcd.key
dataDir: /var/lib/etcd
etcdVersion: v3.2.9
networking:
podSubnet: 10.244.0.0/16
apiServerCertSANs:
- IP1
- IP2
- IP3
- DNS-NAME1
- DNS-NAME2
- DNS-NAME3发布于 2017-12-19 19:50:28
您的节点必须使用与其节点API对象名称相匹配的凭据,如https://kubernetes.io/docs/admin/authorization/node/#overview中所述。
为了获得Node授权者的授权,kubelets必须使用一个凭据,该凭据必须将它们识别为位于system:node组中,用户名为system:node:。此组和用户名格式匹配作为kubelet引导的一部分为每个kubelet创建的标识。
发布于 2017-12-21 09:33:10
更新
因此,具体的解决方案是,问题在于我使用1.8.x版本并手动复制证书和密钥,每个kubelet没有自己的系统:节点绑定或https://kubernetes.io/docs/admin/authorization/node/#overview中指定的特定密钥
RBAC节点权限在1.8中,将根本不创建绑定。 当使用RBAC时,系统:节点集群角色将继续创建,以便与将其他用户或组绑定到该角色的部署方法兼容。
我用了两种方法:
1-使用kubeadm join而不是从master1复制/etc/kubernetes文件
2-部署后修补系统的集群绑定:节点
kubectl patch clusterrolebinding system:node -p '{"apiVersion":
"rbac.authorization.k8s.io/v1beta1","kind":
"ClusterRoleBinding","metadata": {"name": "system:node"},"subjects":
[{"kind": "Group","name": "system:nodes"}]}'https://stackoverflow.com/questions/47892799
复制相似问题