这里有两个问题阻碍了您的进度: 1. **构建报错 (DNS 问题)**:`Temporary failure in name resolution` 说明 Docker 在构建过程中**没网**,无法连接到 Python 官方源下载 Flask。这在 VPS 上很常见,通常是因为 Docker 容器没法正确读取宿主机的 DNS 设置。 2. **代码未修改**:您刚才 `cat main.py` 的结果显示,代码里还是 `Hello Fei!`。如果您不修改代码内容(比如改成 v2),即便部署成功了,网页上显示的也没变化,您就不知道到底更新成功没有。 我们来一次性解决这两个问题。 --- ### 第一步:修改代码 (让 v2 显而易见) 请再次编辑 `main.py`,必须改一点内容,否则我们无法验证更新。 ```bash vim main.py ``` 把 `return` 那一行改成下面这样(加上 **v2** 字样): ```python return f"
Running in Pod: {pod_name}
" ``` *保存并退出 (`:wq`)* --- ### 第二步:使用“宿主网络”构建 (解决 DNS 报错) 为了解决 `pip install` 没网的问题,我们在 build 命令中加上 **`--network=host`**。这会让构建过程直接使用 VPS 的网络连接,不再受 Docker 网络的限制。 执行这条命令: ```bash # 加入了 --network=host 参数 docker build --network=host -t registry.u9.net3w.com/my-python-app:v2 . ``` --- ### 第三步:推送到私有仓库 构建成功后(不再报错 pip 失败),推送到您的私有仓库: ```bash docker push registry.u9.net3w.com/my-python-app:v2 ``` --- ### 第四步:更新 K3s 的“拉取钥匙” (必须做!) 刚才我们为了修仓库把密码改成了 `123456`,但 K3s 命名空间 (`demo-space`) 里的钥匙可能还是旧的。**如果不更新,K3s 会因为密码错误拉不到镜像。** ```bash # 1. 删掉旧钥匙 kubectl delete secret my-registry-key -n demo-space # 2. 创建新钥匙 (密码是 123456) kubectl create secret docker-registry my-registry-key \ --docker-server=registry.u9.net3w.com \ --docker-username=admin \ --docker-password=123456 \ --namespace=demo-space ``` --- ### 第五步:部署上线 1. **检查 YAML**:确保 `my-app.yaml` 里的 image 是 v2。 ```bash sed -i 's|image:.*|image: registry.u9.net3w.com/my-python-app:v2|' my-app.yaml ``` 2. **应用更新**: ```bash kubectl apply -f my-app.yaml ``` 3. **重启 Pod (强制拉取新镜像)**: ```bash kubectl rollout restart deployment my-python-app -n demo-space ``` 4. **观察状态**: ```bash watch kubectl get pods -n demo-space ``` **一旦看到新 Pod 跑起来,去浏览器刷新页面,看到 "(v2)" 字样就大功告成了!**