报错是这么冒出来的。用 promptflow 1.14 把流程打成容器部署到 AKS,改了 flow.dag.yaml 里的提示词重新构建,Pod 里跑出来还是上一版文案,镜像 tag 已更新但行为没变。
中间走过弯路,把「部署清单里 imagePullPolicy 是 IfNotPresent,节点复用旧镜像」当成主因,改完现象没变。
排查方向其实有限,先把可能性排一排。Dockerfile 里先 COPY 缓存层,改动的文件没进新层。也可能是容器内挂载了旧版 flow 目录,覆盖了镜像里的内容。
少数情况下是流程里引用的是注册到 workspace 的旧连接与旧变体。
进容器看实际文件内容
kubectl exec -it deploy/flow -- cat /app/flow.dag.yaml | head -40
接着确认镜像 digest 是否为最新构建
kubectl get pod -o jsonpath='{.items[0].status.containerStatuses[0].imageID}'
强制拉取新镜像并滚动重启
kubectl rollout restart deploy/flow && kubectl set image deploy/flow flow=repo/flow:1.14.3
等前面都确认过,再检查是否有旧版 flow 目录挂载覆盖
kubectl get deploy flow -o yaml | grep -A6 volumeMounts
别只看报错消失,验证要多做一步。Pod 内 flow.dag.yaml 的内容与仓库一致,重启后输出新文案,镜像 digest 与构建流水线记录一一对应。
容易忽略的是,镜像 tag 会骗人,digest 不会,排查这类问题先看容器里的文件内容再看部署清单,缓存层和挂载是最常见的两处。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
