【问题标题】:Pip install failing on kubernetes pod在 kubernetes pod 上安装 Pip 失败
【发布时间】:2021-01-28 22:25:05
【问题描述】:

我是 Python 和 kubernetes 的新手。我正在尝试在 GCP 上的 k8s pod 中部署一个 docker 容器,一小时左右后它被杀死。下面是 docker 文件和我正在尝试执行的脚本。

FROM python:3.7-slim AS build

WORKDIR /app

COPY . .

RUN pip3 install pymysql && pip3 install waitress

ENV DICT_FILE="/opt/srv/projects.dict" \
    MODEL_FILE="/opt/srv/projects.model.cpickle" \
    INDEX_FILE="/opt/srv/projects.index" \
    EXTERNAL_INDEX_FILE="/opt/srv/projects.mm.metadata.cpickle"

EXPOSE 5000
EXPOSE 3306

ENTRYPOINT ["/bin/sh", "serve.sh"]

serve.sh

#!/bin/sh

mkdir -p /opt/srv
python3 setup.py bdist_wheel
pip3 install dist/app_search*.whl && semanticsearch-preprocess

cp /app/dist/app_search*.whl /opt/srv/
cd /opt/srv

pip3 install app_search*.whl

waitress-serve --call app_search.app:main

崩溃前我看到的最后一条日志是

成功安装Flask-1.1.2 Jinja2-2.11.2 MarkupSafe-1.1.1 Werkzeug-0.16.1 aniso8601-8.0.0 attrs-20.2.0 certifi-2020.6.20 chardet-3.0.4 click-7.1.2 flask-restplus-0.12.1 gensim-3.6.0 idna-2.10 importlib-metadata-2.0.0 itsdangerous-1.1.0 jsonschema-3.2.0 numpy-1.19.2 pyrsistent-0.17.3 pytz-2020.1 requests-2.24.0 scipy-1.5.2 6-1.15.0 smart-open-3.0.0 app-search-0.0.9 urllib3-1.25.10 zipp-3.3.0

如果我 docker build 并在我的本地机器上运行,则该应用程序可以运行并在端口 5000 上提供服务

【问题讨论】:

  • 您应该在 Dockerfile 中运行那些“安装”命令(就像 your subsequent question 所做的那样)。是否有日志消息说明没有成功安装?

标签: python docker kubernetes google-cloud-platform


【解决方案1】:

当您在 Kubernetes 上运行容器时,使用的操作系统是 COS(Container Optimized OS)。其上的容器是安全的,并防止在运行时进行任何更新。在这里,你尝试在运行时添加依赖和复制文件,它不起作用!

在构建容器时安装所有你需要的东西,并且只在运行时执行你的容器。

当然,如果你将卷附加到你的容器,你可以在这个挂载的卷上读写

在您的本地环境中,您没有相同的约束,Docker 运行对您更公平!

【讨论】:

    猜你喜欢
    • 2020-07-07
    • 2020-09-16
    • 1970-01-01
    • 2022-11-09
    • 2014-09-07
    • 2018-10-23
    • 2021-04-28
    • 2018-06-29
    • 2015-02-28
    相关资源
    最近更新 更多