You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm Cloud Code插件Debug模式异常:无法调试K8s集群中Flask应用

解决Skaffold调试Flask应用未打开调试页面的问题

核心问题

你的Skaffold配置仅添加了调试注解,但未完整启用调试规则,同时缺少Flask应用的调试器配置,导致Skaffold仅以开发模式运行,无法触发调试会话。

分步解决方案

1. 完善Skaffold配置的调试规则

修改你的skaffold.yaml,在构建工件中明确启用调试,并指定调试端口(以debugpy默认的5678为例):

apiVersion: skaffold/v4beta2
kind: Config
metadata:
  annotations:
    debug.cloud.google.com/config: "{}"
  name: python-skaffold
build:
  local:
    push: true
    useDockerCLI: true
  artifacts:
  - image: 192.168.22.17:5001/python-hello-world
    context: src
    # 添加调试配置
    debug:
      enabled: true
      port: 5678
manifests:
  rawYaml:
  - kubernetes-manifests/hello.deployment.yaml
  - kubernetes-manifests/hello.service.yaml

2. 配置Flask应用的调试器(Dockerfile修改)

确保你的Flask应用使用debugpy启动(而非普通的flask run),允许远程调试连接:

FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
# 安装Flask和debugpy
RUN pip install flask debugpy
COPY . .
# 用debugpy启动,监听所有网卡的5678端口,等待调试器连接
CMD ["python", "-m", "debugpy", "--listen", "0.0.0.0:5678", "--wait-for-client", "app.py"]

3. 确认Kubernetes Deployment暴露调试端口

在hello.deployment.yaml的容器配置中,添加调试端口的暴露:

containers:
- name: hello-world
  image: 192.168.22.17:5001/python-hello-world
  ports:
  - containerPort: 5000  # Flask应用服务端口
  - containerPort: 5678  # 调试器端口

4. 手动触发Skaffold调试并验证

先放弃IDE按钮,在终端执行:

skaffold debug

观察输出日志,确认是否有Port forwarding pod/<pod-name> 5678 -> 5678这类端口转发成功的信息。

5. 配置IDE远程调试(以VS Code为例)

在.vscode/launch.json中添加远程调试配置,映射本地代码路径到容器内路径:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Python: Remote Attach",
      "type": "python",
      "request": "attach",
      "connect": {
        "host": "localhost",
        "port": 5678
      },
      "pathMappings": [
        {
          "localRoot": "${workspaceFolder}/src",
          "remoteRoot": "/app"
        }
      ]
    }
  ]
}

配置完成后,启动IDE的调试会话,即可连接到运行在K8s中的Flask应用。

6. 排查端口连通性

如果仍无法连接,手动执行端口转发:

kubectl port-forward <你的Pod名称> 5678:5678

然后用telnet localhost 5678或nc -zv localhost 5678测试本地端口是否能连通。如果不通,检查容器内debugpy是否正确监听0.0.0.0(而非仅127.0.0.1)。

内容的提问来源于stack exchange,提问作者ali haririan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 10:05:31