You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何通过kubectl访问集群节点?关于u@node$与u@pod$的疑问

如何通过kubectl访问Kubernetes集群节点

Hey there! Great question—kubectl doesn’t have a direct exec-style command for nodes like it does for pods, but there’s a clean, supported way to get access using the kubectl debug command, which is the recommended approach these days. Here’s how to do it:

方法一:使用kubectl debug创建特权Pod访问节点

这是Kubernetes官方推荐的方式,不需要你拥有节点的SSH登录凭证,只要你的kubectl账号有足够权限就行:

  • 首先,找到你要访问的节点名称:
    kubectl get nodes
    
  • 执行以下命令进入目标节点的交互式终端:
    kubectl debug node/<你的节点名称> -it --image=ubuntu
    
    比如你的节点叫worker-01,命令就是:
    kubectl debug node/worker-01 -it --image=ubuntu
    
  • 执行完后,你会进入一个和节点共享主机命名空间的特权Pod终端,此时你就可以执行文档中标注为u@node$的所有命令了——这个环境几乎和直接登录节点主机完全一致。

注意事项

  • 确保你的kubectl用户拥有nodes/debug权限,如果权限不足,需要联系集群管理员调整RBAC规则。
  • 如果你使用的是Kubernetes 1.24及更早版本,kubectl debug可能还处于alpha阶段,需要替换为kubectl alpha debug
  • 操作完成后,记得清理临时创建的debug Pod:
    kubectl delete pod <debug-pod名称>
    
    你可以用kubectl get pods找到这个Pod的名称,通常格式是node-debugger-<节点名称>-<随机字符串>

备选方法:通过SSH直接访问节点(非kubectl方式)

如果你的集群允许直接SSH访问节点,你也可以通过节点的公网/内网IP + 登录凭证(密钥或密码)直接连接,但这种方式不属于kubectl操作范畴,需要你提前获取节点的访问信息。

内容的提问来源于stack exchange,提问作者Chris G.

火山引擎 最新活动