kubectl exec 遇到 unable to upgrade connection Forbidden 的办理办法 ...

宁睿  金牌会员 | 2024-8-10 06:52:07 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 567|帖子 567|积分 1709

  1. [root@master01 ~]# kubectl get pod -A
  2. NAMESPACE              NAME                                         READY   STATUS             RESTARTS   AGE
  3. default                myapp-test01-7d64789fb5-k5rx6                1/1     Running            1          4d20h
  4. default                myapp-test01-7d64789fb5-q99mh                1/1     Running            1          4d20h
  5. kube-flannel           kube-flannel-ds-bhcqx                        1/1     Running            1          5d1h
  6. kube-flannel           kube-flannel-ds-j8d6j                        1/1     Running            1          5d1h
  7. kube-public            nginx-wl-67f75b9476-7x445                    1/1     Running            0          3d1h
  8. kube-system            coredns-7f8c5c6967-wvzt4                     0/1     Running            59         4d21h
  9. kubernetes-dashboard   dashboard-metrics-scraper-5b8896d7fc-wqvls   1/1     Running            0          134m
  10. kubernetes-dashboard   kubernetes-dashboard-897c7599f-l8z6n         0/1     CrashLoopBackOff   29         134m
  11. xy101                  nginx1-794dd8cb7b-95gfw                      1/1     Running            0          124m
  12. xy101                  nginx1-794dd8cb7b-ps48f                      1/1     Running            0          124m
  13. xy101                  nginx1-794dd8cb7b-w58xs                      1/1     Running            0          115m
  14. [root@master01 ~]# kubectl exec -it -n xy101 nginx1-794dd8cb7b-w58xs -- sh
  15. error: unable to upgrade connection: Forbidden (user=system:anonymous, verb=create, resource=nodes, subresource=proxy)
复制代码
分析办理题目:
在执行 kubectl exec、run、logs 等命令时,apiserver 会将哀求转发到 kubelet 的 https 端口,并且我使用的 Kubernetes 集群启用了 RBAC。
这里界说 RBAC 规则,授权 apiserver 使用的证书(kubernetes.pem)用户名(CN:kuberntes-master)访问 kubelet API 的权限:
  1. [root@master01 ~]# kubectl create clusterrolebinding kube-apiserver:kubelet-apis --clusterrole=system:kubelet-api-admin --user kubernetes-master
  2. clusterrolebinding.rbac.authorization.k8s.io/kube-apiserver:kubelet-apis created
复制代码
授予 kube-apiserver 访问 kubelet API 的权限
完成后再执行:
  1. kubectl exec -it -n xy101 nginx1-794dd8cb7b-w58xs -- sh
复制代码
办理办法2:
为 system:anonymous 临时绑定一个 cluster-admin 的权限
  1. [root@master01 ~]# kubectl create clusterrolebinding system:anonymous --clusterrole=cluster-admin --user=system:anonymous
  2. clusterrolebinding.rbac.authorization.k8s.io/system:anonymous created
复制代码
这个权限放太松了,很危险。 可以只对 anonymous 用户绑定须要权限即可,修改为:
  1. kubectl create clusterrolebinding kube-apiserver:kubelet-apis --clusterrole=system:kubelet-api-admin --user=system:anonymous
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表