V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
godfunc
V2EX  ›  Kubernetes

Pod 有两个容器,如果能让容器 A 可以使用容器 B 里面的命令

  •  
  •   godfunc · 2022-11-08 20:08:02 +08:00 · 2973 次点击
    这是一个创建于 780 天前的主题,其中的信息可能已经有所发展或是发生改变。

    k8s 中,一个 Pod 里面有 A,B 两个容器,假设 容器 B 里面有一个 dump 命令,现在向在容器 A 中使用这个 dump 命令,可以做到吗

    15 条回复    2022-11-10 10:11:40 +08:00
    dayeye2006199
        1
    dayeye2006199  
       2022-11-08 23:37:01 +08:00 via Android
    把 B 做成 RPC 或者 Web 服务,然后让 a 去调用。
    zoeeer
        2
    zoeeer  
       2022-11-09 00:09:37 +08:00   ❤️ 1
    如果是编译好的可执行文件,可以用 ldd `which dump` 查看依赖库,把可执行文件和所有依赖库都拷贝到对应位置
    cabbage
        3
    cabbage  
       2022-11-09 00:14:51 +08:00
    如果单纯就一个程序的话,pvc 打包出来挂载共享好了
    lhx2008
        4
    lhx2008  
       2022-11-09 00:25:56 +08:00 via Android
    可以通过 emptydir 共享 socket 文件
    tuutoo
        5
    tuutoo  
       2022-11-09 03:44:04 +08:00 via Android
    我的想法是在 ssh 免密的前提下
    直接 ssh 过去运行命令?
    ```bash
    ssh [email protected] "dump ..."
    ```
    wunonglin
        6
    wunonglin  
       2022-11-09 04:21:48 +08:00
    典型的 RPC 需求
    kennylam777
        7
    kennylam777  
       2022-11-09 04:35:51 +08:00
    EmtpyDir 分享 socket +1

    一個 Pod 內還可以 share processes namespace 。
    eudore
        8
    eudore  
       2022-11-09 08:37:38 +08:00
    1 、要是一个静态二进制
    eudore
        9
    eudore  
       2022-11-09 08:39:19 +08:00
    然后两个容器挂载同一个 hostpath ,打通存储启动时将二进制进去,修改 env PATH 就有命令。 如果不是静态二进制,尽量系统环境一样依赖一样,可以使用动态链接二进制。
    hualuogeng
        10
    hualuogeng  
       2022-11-09 08:48:58 +08:00
    @kennylam777 shared processes namespace 最简单
    EchoUtopia
        11
    EchoUtopia  
       2022-11-09 11:39:23 +08:00
    最简单的方法是容器 a 加上 dump 命令
    godfunc
        13
    godfunc  
    OP
       2022-11-09 15:25:22 +08:00
    @kennylam777 看了官方的示例,没太懂,如果我想在 shell 里面调用 nginx command 应该如何操作啊
    kennylam777
        14
    kennylam777  
       2022-11-09 23:35:01 +08:00
    @godfunc nginx command 那是 signal to PID 了,shared processes namespace 就是為了這種應用而生,Pod A 先把 nginx 的 PID 寫到 emtpyDir ,pod B 讀取 PID 然後用 kill 發 signal 給 nginx
    Davic1
        15
    Davic1  
       2022-11-10 10:11:40 +08:00
    是不是可以通过 ssh 直接在 B 上执行 dump 命令?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   954 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 22:01 · PVG 06:01 · LAX 14:01 · JFK 17:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.