- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 docker 镜像,其中包含一个 python 文件,该文件使用 sys.stdin() 从命令行接受参数。我可以使用以下命令运行图像
cat file.csv | docker run -i -t my_image
kubectl run -i my_deployment --image=gcr.io/${PROJECT_ID}/my_image:v1 --port 8080
kubectl expose deployment my_deployment --type=LoadBalancer --port 80 --target-port 8080
curl http://allocated_ip
最佳答案
Kubernetes 通常假设它部署的容器是长生命周期和自治的。如果您在 Pod 中部署某些东西,尤其是通过 Deployment,它应该能够在没有任何特定输入的情况下自行运行。如果它立即退出,Kubernetes 将重新启动它,你很快就会陷入可怕的 CrashLoopBackOff
状态。
简而言之:您需要重新设计容器以不使用标准输入,标准输出是它的主要接口(interface)。
您将网络端点添加到服务中的直觉可能是正确的,但 Kubernetes 不会自己这样做。如果你重建你的应用程序以拥有一个 Flask 服务器并监听一个端口,那么你可以很容易地将它部署到 Kubernetes。如果应用程序希望数据进入标准输入并且其结果进入标准输出,那么添加 Kubernetes 网络元数据将无济于事:在您的示例中,如果容器内没有任何东西在端口 8080 上监听,那么网络连接将永远不会去任何地方.
关于docker - 如何在接受命令行参数的 kubernetes 上运行 docker 镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54424063/
我是一名优秀的程序员,十分优秀!