gmi*_*ile 9 erlang elixir kubernetes
我有一个kubernetes集群.
我可以轻松连接到远程容器,并运行连接到live production erlang节点的shell节点:
$ kubectl exec myapp-2431125679-cwqvt -i -t -- iex --name debugging@127.0.0.1 --remsh myliveapp@127.0.0.1 --cookie my_secret_cookie
Erlang/OTP 18 [erts-7.3.1] [source] [64-bit] [smp:2:2] [async-threads:10] [kernel-poll:false]
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(myliveapp@127.0.0.1)1>
Run Code Online (Sandbox Code Playgroud)
我需要的,虽然是要能够运行:observer针对远程现场制作的Erlang节点.
我也可以这样做:
杀死本地epmd进程:
killall epmd
Run Code Online (Sandbox Code Playgroud)将选定的远程端口转发到本地计算机:
kubectl port-forward myapp-2431125679-cwqvt 35609 4369
Run Code Online (Sandbox Code Playgroud)
我知道我的应用程序在远程容器上的端口35609上epmd运行,默认情况下4369是端口运行,这是我的远程容器的情况.
跑:
iex --name debugging@127.0.0.1 --cookie marketplace -e ':observer.start()'
Run Code Online (Sandbox Code Playgroud)从顶部菜单中选择我感兴趣的应用程序:observer.
我的问题是:
最终,我可以将此过程变为单行或将其转换为shell脚本吗?
现在杀人epmd看起来真的很脏,我很想能够特别避免这种情况.
是的,你可以把它变成一个 shell 脚本。我确实为此用例创建了一个 shell 脚本,但我使用的是 SSH。我的方法看起来和你的一样,我也必须在本地杀死 epmd 。但我能够将它包装到 bash 脚本中。您可以在这里获取它: https: //github.com/dominicletz/remote_observe/
该脚本还自动发现远程波束端口。所以你最终会得到一行:
remote_observe -c <cookie> <server-address>
我没有方便尝试的 Kubernetes 部署,但它可能可以轻松移植来调用kubectl port-forward <server-address> <port>而不是当前的 ssh 转发。
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |