在 Minikube 中调试 rails 应用程序

Debugging a rails application in Minikube

我是 运行 我本地机器上 minikube 集群内的 rails 服务。我喜欢在我的代码中设置断点以便与流程进行交互。这在 Minikube 中不起作用。我可以附加到 pod 运行 我的 rails 容器并在我的代码中点击 binding.pr 语句,而不是得到一个交互式断点,我只是看到撬动尝试创建一个断点,但最终会越过它。有人知道如何让它工作吗?我猜部署的 pod 本身不是交互式的。

您正在尝试获取对您的应用程序的交互式访问。

你的问题是k8s没有分配TTY导致的 和默认情况下容器的标准输入缓冲区。

我已经复制了您的问题并找到了解决方案。

要获得交互式断点,您必须向部署 yaml 添加 2 个标志以指示您需要交互式会话:

   stdin: true
   tty: true

这是一个部署示例:

   apiVersion: apps/v1
   kind: Deployment
   metadata:
     labels:
       run: test
     name: test
   spec:
     selector:
       matchLabels:
         run: test
     template:
       metadata:
         labels:
           run: test
       spec:
         containers:
         - image: test
           name: test
           stdin: true
           tty: true

您可以找到更多相关信息here

记得在附加到 pod 时使用 -it 选项,如下所示:

   kubectl attach -it <pod_name>

如果有帮助,请告诉我。