kubernetes v1.8.8中 RBAC DENY 解决办法
1 问题
在node1上,安装kubelet后,查看日志:
root@node1:~# tailf /var/log/syslog Jan 15 15:01:07 node1 kubelet[17646]: I0115 15:01:07.080370 17646 kubelet_node_status.go:273] Setting node annotation to enable volume controller attach/detach Jan 15 15:01:07 node1 kubelet[17646]: I0115 15:01:07.084014 17646 kubelet_node_status.go:431] Recording NodeHasSufficientDisk event message for node 192.168.122.3 Jan 15 15:01:07 node1 kubelet[17646]: I0115 15:01:07.084061 17646 kubelet_node_status.go:431] Recording NodeHasSufficientMemory event message for node 192.168.122.3 Jan 15 15:01:07 node1 kubelet[17646]: I0115 15:01:07.084084 17646 kubelet_node_status.go:431] Recording NodeHasNoDiskPressure event message for node 192.168.122.3 Jan 15 15:01:07 node1 kubelet[17646]: I0115 15:01:07.084106 17646 kubelet_node_status.go:82] Attempting to register node 192.168.122.3 Jan 15 15:01:07 node1 kubelet[17646]: E0115 15:01:07.086790 17646 kubelet_node_status.go:106] Unable to register node "192.168.122.3" with API server: nodes is forbidden: User "system:node:192.168.122.3" cannot create nodes at the cluster scope Jan 15 15:01:07 node1 kubelet[17646]: E0115 15:01:07.309503 17646 eviction_manager.go:238] eviction manager: unexpected err: failed to get node info: node "192.168.122.3" not found
在master结点上查看日志,apiserver日志报错,大量的组件都是RBAC DENY状态。:
copy
root@master:~# tailf /var/log/syslog Jan 18 14:39:39 master kube-apiserver[2638]: I0118 14:39:39.885925 2638 rbac.go:116] RBAC DENY: user "system:node:192.168.122.3" groups ["system:nodes" "system:authenticated"] cannot "list" resource "services" cluster-wide Jan 18 14:39:39 master kube-apiserver[2638]: I0118 14:39:39.886076 2638 wrap.go:42] GET /api/v1/services?limit=500&resourceVersion=0: (490.18µs) 403 [[kubelet/v1.9.0 (linux/amd64) kubernetes/925c127] 192.168.122.3:33354] Jan 18 14:39:40 master kube-apiserver[2638]: I0118 14:39:40.097660 2638 rbac.go:116] RBAC DENY: user "system:node:192.168.122.3" groups ["system:nodes" "system:authenticated"] cannot "list" resource "pods" cluster-wide Jan 18 14:39:40 master kube-apiserver[2638]: I0118 14:39:40.098047 2638 wrap.go:42] GET /api/v1/pods?fieldSelector=spec.nodeName%3D192.168.122.3&limit=500&resourceVersion=0: (930.577µs) 403 [[kubelet/v1.9.0 (linux/amd64) kubernetes/925c127] 192.168.122.3:33354] Jan 18 14:39:40 master kube-apiserver[2638]: I0118 14:39:40.359008 2638 wrap.go:42] GET /api/v1/namespaces/kube-system/endpoints/kube-scheduler: (16.594085ms) 200 [[kube-scheduler/v1.9.0 (linux/amd64) kubernetes/925c127/leader-election] 192.168.122.2:57472] Jan 18 14:39:40 master kube-apiserver[2638]: I0118 14:39:40.367652 2638 wrap.go:42] PUT /api/v1/namespaces/kube-system/endpoints/kube-scheduler: (7.997847ms) 200 [[kube-scheduler/v1.9.0 (linux/amd64) kubernetes/925c127/leader-election] 192.168.122.2:57472] Jan 18 14:39:40 master kube-apiserver[2638]: I0118 14:39:40.749509 2638 rbac.go:116] RBAC DENY: user "system:node:192.168.122.3" groups ["system:nodes" "system:authenticated"] cannot "list" resource "nodes" cluster-wide
2 原因:
按照k8s官方文档(https://kubernetes.io/docs/admin/authorization/rbac/#service-account-permissions),存在如下的clusterrolebing。
1.8版本之前.开启rbac后,apiserver默认绑定system:nodes组到system:node的clusterrole。v1.8之后,此绑定默认不存在,需要手工绑定,否则kubelet启动后会报认证错误,使用kubectl get nodes查看无法成为Ready状态。
默认角色与默认角色绑定
API Server会创建一组默认的 ClusterRole和 ClusterRoleBinding对象。 这些默认对象中有许多包含 system:前缀,表明这些资源由Kubernetes基础组件”拥有”。 对这些资源的修改可能导致非功能性集群(non-functional cluster) 。一个例子是 system:node ClusterRole对象。这个角色定义了kubelets的权限。如果这个角色被修改,可能会导致kubelets无法正常工作。
所有默认的ClusterRole和ClusterRoleBinding对象都会被标记为kubernetes.io/bootstrapping=rbac-defaults。
使用命令kubectl get clusterrolebinding和kubectl get clusterrole可以查看系统中的角色与角色绑定
使用命令kubectl get clusterrolebindings system:node -o yaml或kubectl describe clusterrolebindings system:node查看system:node角色绑定的详细信息:
root@master:~# kubectl describe clusterrolebindings system:node Name: system:node Labels: kubernetes.io/bootstrapping=rbac-defaults Annotations: rbac.authorization.kubernetes.io/autoupdate=true Role: Kind: ClusterRole Name: system:node Subjects: Kind Name Namespace ---- ---- ---------
system:node角色默认绑定为空。
创建角色绑定
在整个集群中授予 ClusterRole ,包括所有命名空间。
从错误日志中可看出信息:user "system:node:192.168.122.3" groups ["system:nodes" "system:authenticated"]或者从kubelet.kubeconfig查看使用的用户。
在整个集群范围内将 system:node ClusterRole 授予用户”system:node:192.168.122.3”或组”system:nodes”:
root@master:~# kubectl create clusterrolebinding kubelet-node-clusterbinding --clusterrole=system:node --user=system:node:192.168.122.3 clusterrolebinding "kubelet-node-clusterbinding" created root@master:~# kubectl describe clusterrolebindings kubelet-node-clusterbinding Name: kubelet-node-clusterbinding Labels: <none> Annotations: <none> Role: Kind: ClusterRole Name: system:node Subjects: Kind Name Namespace ---- ---- --------- User system:node:192.168.122.3 root@master:~#root@master:~# kubectl delete clusterrolebindings kubelet-node-clusterbinding clusterrolebinding "kubelet-node-clusterbinding" deleted root@master:~# #给所有nodes root@master:~# kubectl create clusterrolebinding kubelet-node-clusterbinding --clusterrole=system:node --group=system:nodes clusterrolebinding "kubelet-node-clusterbinding" created root@master:~# root@master:~# kubectl describe clusterrolebindings kubelet-node-clusterbinding Name: kubelet-node-clusterbinding Labels: <none> Annotations: <none> Role: Kind: ClusterRole Name: system:node Subjects: Kind Name Namespace ---- ---- --------- Group system:nodes
此时节点状态变更为Ready
copy
root@master:~# kubectl get nodes NAME STATUS ROLES AGE VERSION 192.168.122.3 Ready <none> 1h v1.9.0
转载于:https://blog.51cto.com/foxhound/2121569
kubernetes v1.8.8中 RBAC DENY 解决办法相关推荐
- dw读取access中的图片_怎样从Access数据库中读取图片?解决办法
当前位置:我的异常网» C# » 怎样从Access数据库中读取图片?解决办法 怎样从Access数据库中读取图片?解决办法 www.myexceptions.net 网友分享于:2013-03-0 ...
- Java11.0.2怎么生成JRE_java环境变量配置,jdk13.0.1中没有jre解决办法
标签:完成后 回车 手动 完成 cmd 没有 alt span 环境变量配置 java.Oracle中下载了最新的jdk13.0.1,安装之后发现没自动生成jre,导致 ...
- 当子元素用position:relative;时,父元素的overflow:hidden;在ie中失效的解决办法
当子元素用position:relative;时,父元素的overflow:hidden;在ie中失效的解决办法: 给父元素也加上position:relative; 到现在也不知道为什么会出现这样的 ...
- ng-bind-html在ng-repeat中问题的解决办法
ng-bind-html在ng-repeat中问题的解决办法 参考文章: (1)ng-bind-html在ng-repeat中问题的解决办法 (2)https://www.cnblogs.com/le ...
- error:LNK2005 已经在*.obj文件中定义的解决办法
有B和A两个代码,在文件B.obj中报错"已经在A.obj文件中定义的解决办法XXX" 报错原因是重复定义 把A或者B 里面任意一方的XXX注释掉即可解决.
- 主机ping不通虚拟机 TTL传输中过期的解决办法
主机ping不通虚拟机 TTL传输中过期的解决办法 Linux 虚拟机设置的自动获取ip地址. 虚拟机ip地址改变之后,虚拟机可以ping通主机,主机ping虚拟机显示TTL传输中过期,CRT连接不上 ...
- Office word文档中的乱码解决办法
Office word文档中的乱码解决办法 1.打开被损坏的文档单击"文件/另存为"菜单,在 "保存类型"列表中,选择"RTF格式",然后单 ...
- 远程连接不上docker中的mysql解决办法
远程连接不上docker中的mysql解决办法 查看docker中线程,发现mysql中行动状态 我首先删除docker中的映射(先停止,再删除): //停止运行mysql01 dcoerk stop ...
- 1920像素的屏幕在部分浏览器(chrome,IE等)中只有1536px解决办法
1920像素的屏幕在部分浏览器(chrome,IE等)中只有1536px解决办法 在桌面右键->显示设置,将缩放改为100%. PC端多屏适配方案请查看这篇文章:https://blog.csd ...
- 印花烫金过程中常见问题与解决办法
印花烫金过程中常见问题与解决办法 1. 烫金细线条有飞金现象怎么办? 冷烫,斜撕: 选择剥离层紧的烫金纸: 温度不宜过高,低温也会好些: 压力不宜过重. 2. 烫出来变色.变暗或发蓝光怎么办? 应注意 ...
最新文章
- C#调用WebService实例和开发
- LayoutInflater中调用系统服务
- BZOJ2329: [HNOI2011]括号修复(Splay)
- linux 多路径 parted,Ubuntu存储多路径配置
- golang 1.10 mutex互斥锁源码
- 【安全牛学习笔记】抓包嗅探
- [转]【Linux】一幅图秒懂LoadAverage(负载)
- 数字游戏---巧妙解答
- 运动目标跟踪(十二)--KCF跟踪及CSK,CN对比
- [转]GO err is shadowed during return
- MAC中JAVA安装和环境变量设置,java 11
- java jre32下载_JRE7 32位官方下载
- 华为od python_华为运维开发-华为OD工资待遇怎么样 - 华为技术有限公司 - 职友集...
- Flash遮罩层初识
- VS2013编译eXosip2-5.0.0
- vue 表格固定首行首列(纯css)
- dialogfragment监听返回键
- 文件查找,打包压缩,解压相关分享
- 一文读懂java中的Reference和引用类型
- 《Getting Real中文版》读书笔记