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

2022-11-08 20:08:02 +08:00
 godfunc

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

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

一個 Pod 內還可以 share processes namespace 。
eudore
2022-11-09 08:37:38 +08:00
1 、要是一个静态二进制
eudore
2022-11-09 08:39:19 +08:00
然后两个容器挂载同一个 hostpath ,打通存储启动时将二进制进去,修改 env PATH 就有命令。 如果不是静态二进制,尽量系统环境一样依赖一样,可以使用动态链接二进制。
hualuogeng
2022-11-09 08:48:58 +08:00
@kennylam777 shared processes namespace 最简单
EchoUtopia
2022-11-09 11:39:23 +08:00
最简单的方法是容器 a 加上 dump 命令
wtfedc
2022-11-09 13:59:05 +08:00
godfunc
2022-11-09 15:25:22 +08:00
@kennylam777 看了官方的示例,没太懂,如果我想在 shell 里面调用 nginx command 应该如何操作啊
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
2022-11-10 10:11:40 +08:00
是不是可以通过 ssh 直接在 B 上执行 dump 命令?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/893669

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX