为了账号安全,请及时绑定邮箱和手机立即绑定

Minikube,python alpine:找不到 python 命令

Minikube,python alpine:找不到 python 命令

拉丁的传说 2023-03-08 11:17:27
对于 K8 的专家来说,这听起来像是一个非常愚蠢的问题。但是我已经为此苦苦挣扎了一段时间,因此是下面的问题。我正在尝试通过 Minikube 和 docker 在本地部署一个简单的 Kubernetes 应用程序来测试 sidecar 容器模式。让我们从边车容器元素开始:文件FROM python:3.6-alpineRUN pip install boto3==1.14.20RUN pip install --upgrade awscli s3cmd   ENV APP_HOME_DIR=/home/sidecarRUN mkdir $APP_HOME_DIRADD run.sh $APP_HOME_DIRADD s3_sync.py $APP_HOME_DIRRUN chmod +x $APP_HOME_DIR/s3_sync.pyRUN chmod +x $APP_HOME_DIR/run.shENV BUCKET_NAME=ENV PROJECT_NAME=ENV FEATURE_BRANCH=ENV LOCAL_DIR=WORKDIR $APP_HOME_DIRENTRYPOINT ["./run.sh"]run.sh#!/bin/shwhile truedo    echo "Triggering an S3-SYNC"    python /home/sidecar/s3_sync.py -b $BUCKET_NAME -p $PROJECT_NAME -f $FEATURE_BRANCH -l $LOCAL_DIR    sleep 10done以及 python 文件s3_sync.py的简化版本:import loggingimport argparselogging.basicConfig(    level=logging.INFO,    format="%(asctime)s [%(levelname)s] %(message)s",    handlers=[logging.FileHandler("debug.log"), logging.StreamHandler()],)logger = logging.getLogger(__name__)MASTER = "master"def main():    bucket_name = args.bucket_name    project_name = args.project_name    branch = args.feature_branch    local_dir = args.local_dir    sync_type = "production" if branch == MASTER else "review"    logger.info(f"S3-SYNC starting for {sync_type} environment")if __name__ == "__main__":    parser = argparse.ArgumentParser()    parser.add_argument("-b", "--bucket_name", help="s3 bucket name", required=True)    parser.add_argument("-p", "--project_name", help="project name to sync", default="")    parser.add_argument("-f", "--feature_branch", help="git feature branch name", default="master")    parser.add_argument("-l", "--local_dir", help="local dir where to sync the s3 objects", required=True)    args = parser.parse_args()    main()如果我构建上面的内容并运行它:docker build -t sidecar_python .docker run -e BUCKET_NAME=MYBUCKET -e PROJECT_NAME=MYPROJECT -e FEATURE_BRANCH=MYBRANCH -e LOCAL_DIR=/home sidecar_python事情进展顺利。
查看完整描述

1 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

该/usr目录包含各种系统和应用软件。特别是,Python 二进制文件通常位于/usr/bin/python3Linux 系统(或容器)中。


您的 Kubernetes YAMLemptyDir在/usr. 这会隐藏该目录树中的所有内容,包括 Python 二进制文件和所有 Python 系统库。这导致了这个错误。


将卷安装在其他地方可以避免这个问题。容器化应用程序往往不会对“标准”FHS 路径过于挑剔,所以我可能会设置


  env:

    - name: LOCAL_DIR

      value: "/dags"

  volumeMounts:

    - name: dags

      mountPath: /dags


查看完整回答
反对 回复 2023-03-08
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信