K8S 黑魔法之如何从 Pod 拿到节点的命令行

搞 K8S 运维的时候,偶尔会遇到一个难题,定位到问题出在某个节点上,而由于权限审批,错误配置等等各种原因,没有办法拿到节点的 SSH 权限,无法进入节点命令行进一步排障。

这个时候,就可以用这个黑魔法,通过在 K8S 集群内创建一个特别的 Pod,直接拿到某个节点的 Shell。

1. 创建并调度一个 Pod 到指定的节点,这里我们用 Deployment

yaml 复制代码
apiVersion: apps/v1
kind: Deployment
metadata:
  name: maint
spec:
  replicas: 1
  selector:
    matchLabels:
      app: maint
  template:
    metadata:
      labels:
        app: maint
    spec:
      nodeName: TARGET_NODE_NAME
      containers:
        - name: maint
          image: debian:12
          args:
            - sleep
            - 999999
          securityContext:
            privileged: true
      hostPID: true

注意以下几点:

  • 使用 nodeName 调度这个 Pod 到要调试的节点
  • 设置 securityContext.privilegedtrue
  • 设置 hostPIDtrue

2. 在 Pod 中执行以下命令

shell 复制代码
nsenter -t 1 -m -u -n -i bash
  • nsenter 命令允许在特定命名空间(此处指 Linux 资源隔离命名空间,而非 Kubernetes 命名空间)上执行命令
  • -t 1 参数指定使用 PID 1 的命名空间,因为设置了 hostPID: true,容器内看到的 PID 1 进程就是宿主机的 PID 1 进程
  • -m -u -n -i 复用命名空间的 挂载,UTS,网络 和 IPC

执行该命令后,就能够拿到一个在节点上运行的 bash 进程,进行进一步工作了。

相关推荐
云水一下15 分钟前
DVWA从入门到精通(四):CSRF(跨站请求伪造)
安全·csrf·dvwa
tuddy78946426 分钟前
Codex++ 安全边界探秘:从模型能力到风险防御
人工智能·python·安全
hbugs00132 分钟前
【案例分享】全网首个华三数据中心流量可视化实验,基于EVE-NG V7平台
网络·网络协议·安全·devops·eve-ng
深盾科技_Virbox34 分钟前
深盾科技·Virbox产品体系全景解读:软件安全如何从加密锁走向全生命周期
java·大数据·算法·安全·软件需求
ejinxian1 小时前
微虚拟机 smolvm 与Docker 容器比较
运维·docker·容器·smolvm
云边云科技_云网融合1 小时前
零信任安全:数字化时代的企业防护新范式
人工智能·安全·ai
爱码少年1 小时前
Docker如何一次查看多个容器日志
运维·docker·容器
thinking_talk2 小时前
腾讯云AI Agent安全中心综合评测
人工智能·安全·腾讯云
山东穆柯传感器2 小时前
安全触边损坏如何维修及更换配件
网络·安全
蜀道山老天师2 小时前
K8s 数据存储全解析:从 EmptyDir 到 PV/PVC
云原生·容器·kubernetes