【问题标题】:kubernetes kubectl exec forbiddenKubernetes kubectl exec 被禁止
【发布时间】:2022-02-11 07:19:51
【问题描述】:

我做了一个基本的 kubernetes 安装,并添加了 hello-world pod。当我尝试 kubectl exec 时,出现以下错误。

kubectl logs hello-world-pod1

Error from server (Forbidden): pods "hello-world-pod1" is forbidden: User "system:node:kubnode1" cannot get resource "pods/log" in API group "" in the namespace "default"

kubectl exec -it hello-world-pod1 -- /bin/sh

Error from server (Forbidden): pods "hello-world-pod1" is forbidden: User "system:node:kw1" cannot create resource "pods/exec" in API group "" in the namespace "default"

没有任何特殊安装,只是基本说明,并且无法访问基本 pod 的外壳,我研究了互联网但找不到任何解决方案或错误来源。

【问题讨论】:

  • 您正在使用 kubelet 的 kubeconfig。尝试使用正确的 kubeconfig 运行。
  • 这听起来像是 Kubernetes RBAC 问题,您必须联系集群管理员。
  • 它的标准安装,我可以在其中找到正确的 kubeconfig

标签: docker kubernetes


【解决方案1】:

这是一个访问问题,它与 pod 本身无关,您需要使用具有访问权限的凭据。 您可以使用kubectl auth can-i 命令检查您是否有访问权限。

如果 pod 没有您尝试执行的 shell,但不是“用户“系统:节点:kw1”无法创建”错误,您将收到错误。

【讨论】:

  • 感谢您指向我至少可以知道在哪里检查的路径。我研究并发现了这个 kubectl auth can-i '' '' 命令来检查我是否拥有所有权限 命令返回“是”,尽管它是基本的 kubernetes 安装,并且我按照文档中的说明进行了所有安装,在这种情况下,我是否缺少一些设置,当我在主节点中执行时,它说你拥有所有权利,但 exec 说仍然被禁止:) 我试图在 node1 中执行,因为我看到 pod 住在那里。当我尝试在主节点中访问 hello-world 的 shell 时,它给出如下:
  • root@kuberM1 /root: kubectl auth can-i '' '' 是 root@kuberM1 /root: kubectl exec -it hello-world-pod1 -- /bin /sh 来自服务器的错误:错误拨号后端:拨号 tcp 10.0.2.46:10250:连接:没有路由到主机 root@kuberM1 /root:
  • 根据那个错误,你试过this solution吗?
【解决方案2】:

由于您的情况出现以下错误:

Error from server: error dialing backend: dial tcp 10.0.2.46:10250: connect: no route to host

我建议禁用所有节点上的防火墙。 要解决未禁用工作节点防火墙的问题,请运行:

systemctl disable firewalld && systemctl stop firewalld
-Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1...
-Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.```

另见参考资料:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 2017-08-25
    • 2019-05-23
    • 1970-01-01
    • 2021-05-23
    • 2021-05-02
    • 1970-01-01
    相关资源
    最近更新 更多