1 问题

在node1上,安装kubelet后,查看日志:

  1. 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

  1. 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角色绑定的详细信息:

  1. 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

  1. 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 解决办法相关推荐

  1. dw读取access中的图片_怎样从Access数据库中读取图片?解决办法

    当前位置:我的异常网» C# » 怎样从Access数据库中读取图片?解决办法 怎样从Access数据库中读取图片?解决办法 www.myexceptions.net  网友分享于:2013-03-0 ...

  2. Java11.0.2怎么生成JRE_java环境变量配置,jdk13.0.1中没有jre解决办法

    标签:完成后   回车   手动   完成   cmd   没有   alt   span   环境变量配置 java.Oracle中下载了最新的jdk13.0.1,安装之后发现没自动生成jre,导致 ...

  3. 当子元素用position:relative;时,父元素的overflow:hidden;在ie中失效的解决办法

    当子元素用position:relative;时,父元素的overflow:hidden;在ie中失效的解决办法: 给父元素也加上position:relative; 到现在也不知道为什么会出现这样的 ...

  4. ng-bind-html在ng-repeat中问题的解决办法

    ng-bind-html在ng-repeat中问题的解决办法 参考文章: (1)ng-bind-html在ng-repeat中问题的解决办法 (2)https://www.cnblogs.com/le ...

  5. error:LNK2005 已经在*.obj文件中定义的解决办法

    有B和A两个代码,在文件B.obj中报错"已经在A.obj文件中定义的解决办法XXX" 报错原因是重复定义 把A或者B 里面任意一方的XXX注释掉即可解决.

  6. 主机ping不通虚拟机 TTL传输中过期的解决办法

    主机ping不通虚拟机 TTL传输中过期的解决办法 Linux 虚拟机设置的自动获取ip地址. 虚拟机ip地址改变之后,虚拟机可以ping通主机,主机ping虚拟机显示TTL传输中过期,CRT连接不上 ...

  7. Office word文档中的乱码解决办法

    Office word文档中的乱码解决办法 1.打开被损坏的文档单击"文件/另存为"菜单,在 "保存类型"列表中,选择"RTF格式",然后单 ...

  8. 远程连接不上docker中的mysql解决办法

    远程连接不上docker中的mysql解决办法 查看docker中线程,发现mysql中行动状态 我首先删除docker中的映射(先停止,再删除): //停止运行mysql01 dcoerk stop ...

  9. 1920像素的屏幕在部分浏览器(chrome,IE等)中只有1536px解决办法

    1920像素的屏幕在部分浏览器(chrome,IE等)中只有1536px解决办法 在桌面右键->显示设置,将缩放改为100%. PC端多屏适配方案请查看这篇文章:https://blog.csd ...

  10. 印花烫金过程中常见问题与解决办法

    印花烫金过程中常见问题与解决办法 1. 烫金细线条有飞金现象怎么办? 冷烫,斜撕: 选择剥离层紧的烫金纸: 温度不宜过高,低温也会好些: 压力不宜过重. 2. 烫出来变色.变暗或发蓝光怎么办? 应注意 ...

最新文章

  1. C#调用WebService实例和开发
  2. LayoutInflater中调用系统服务
  3. BZOJ2329: [HNOI2011]括号修复(Splay)
  4. linux 多路径 parted,Ubuntu存储多路径配置
  5. golang 1.10 mutex互斥锁源码
  6. 【安全牛学习笔记】抓包嗅探
  7. [转]【Linux】一幅图秒懂LoadAverage(负载)
  8. 数字游戏---巧妙解答
  9. 运动目标跟踪(十二)--KCF跟踪及CSK,CN对比
  10. [转]GO err is shadowed during return
  11. MAC中JAVA安装和环境变量设置,java 11
  12. java jre32下载_JRE7 32位官方下载
  13. 华为od python_华为运维开发-华为OD工资待遇怎么样 - 华为技术有限公司 - 职友集...
  14. Flash遮罩层初识
  15. VS2013编译eXosip2-5.0.0
  16. vue 表格固定首行首列(纯css)
  17. dialogfragment监听返回键
  18. 文件查找,打包压缩,解压相关分享
  19. 一文读懂java中的Reference和引用类型
  20. 《Getting Real中文版》读书笔记

热门文章

  1. 《oracle每天一练》Oracle冷备份与数据恢复
  2. 【IT历史】SP和CP
  3. Java基础语法(基本语句)
  4. 模仿c#Func和Action的函数指针模板
  5. Spring 的 IOC原理
  6. Mariadb数据库设置及操作 一主多从 备份还原(实测笔记)
  7. 面向对象练习——校园管理系统
  8. 【leetcode】617. Merge Two Binary Trees
  9. Oracle ORA-01555(快照过旧)
  10. HTML5之WebSocket