我在本地机器上的 minikube 集群内运行 rails 服务。我喜欢在我的代码中设置断点,以便与流程进行交互。这在 Minikube 中不起作用。我可以附加到运行我的 rails 容器的 pod 并点击binding.pr
我的代码中的语句,而不是获得交互式断点,我只是看到 pry 尝试创建一个断点,但最终直接越过它。任何人都知道如何让这个工作?我猜部署的吊舱本身不是交互式的。
问问题
432 次
1 回答
4
您正在尝试对您的应用程序进行交互式访问。
您的问题是由于 k8s 默认情况下没有为容器分配 TTY 和 stdin 缓冲区造成的。
我已经复制了您的问题并找到了解决方案。
要获得交互式断点,您必须在 Deployment 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
您可以在此处找到有关它的更多信息。
请记住在附加到 pod 时使用 -it 选项,如下所示:
kubectl attach -it <pod_name>
让我知道这是否有帮助。
于 2019-10-21T13:14:57.230 回答