使用输入参数从Kubernetes运行python脚本

问题描述

我正在尝试从kubernetes上运行带有输入args的python脚本(在python上使用import argsparse),该python脚本在kubernetes上没有任何输入args的情况下运行良好,而且以下命令python python_script.py -e $(date -d '2020/08/23') -d 7 -m可以正常运行在docker映像上。

我正在尝试构建我的values.yaml文件,以便kubernetes也可以运行它,但到目前为止没有成功。

我的values.yaml文件(仅与脚本相关的部分):

- name: python-script
  command: ["python"]
  args:
    - "python_script.py"
    - "-e $(date -d '2020/08/23')"
    - "-d 7"
    - "-m"
  resources:
    limits:
      cpu: 50m
      memory: 512Mi
    requests:
      cpu: 50m
      memory: 512Mi
  failedJobsHistoryLimit: 1
  successfulJobsHistoryLimit: 3
  concurrencyPolicy: Forbid
  restartPolicy: Never

在kubernetes上运行时的输出python_script.py: error argument -e/--end_date: Not a valid date: ' $(date -d "2020/08/23")'.

就像kubernetes出于某种原因甚至没有将bash命令$(date -d "2020/08/23")解析为有效日期一样,而docker映像没有任何问题。

我尝试在python文件后添加另一个["bash"]命令,并在其中添加args,但仍然出现错误。

有什么想法吗?任何帮助将不胜感激!

谢谢。

解决方法

使用命令python运行时,不会调用shell

所以尝试:

- name: python-script
  command: ["/bin/sh"]
  args:
    - -c
    - >-
        python python_script.py
        -e $(date -d '2020/08/23')
        -d 7
        -m
  resources:
    limits:
      cpu: 50m
      memory: 512Mi
    requests:
      cpu: 50m
      memory: 512Mi
  failedJobsHistoryLimit: 1
  successfulJobsHistoryLimit: 3
  concurrencyPolicy: Forbid
  restartPolicy: Never

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...