在 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>
如果有帮助,请告诉我。
我是 运行 我本地机器上 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>
如果有帮助,请告诉我。