我是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请求-2.24.0 scipy-1.5.2 六个1.15.0 smart-open-3.0.0 app-search-0.0.9 urllib3-1.25.10 zipp-3.3.0
如果我在本地计算机上构建并运行docker,则该应用程序将正常运行并在端口5000上提供服务
答案 0 :(得分:1)
在Kubernetes上运行容器时,使用的操作系统是COS(容器优化的操作系统)。其上的容器是安全的,可防止在运行时进行任何更新。在这里,您尝试添加依赖项并在运行时复制文件,这是行不通的!
安装构建容器时所需的所有内容,并且仅在运行时执行容器。
当然,如果将卷附加到容器上,则可以在此已装载的卷上读写
在您的本地环境中,您没有相同的限制,而Docker运行对您而言更公平!