【问题标题】:Running python script from kubernetes with input args使用输入参数从 kubernetes 运行 python 脚本
【发布时间】:2020-12-12 04:20:15
【问题描述】:

我正在尝试使用输入 args 从 kubernetes 运行 python 脚本(在 python 上使用 import argsparse),python 脚本在 kubernetes 上运行良好,没有任何输入 args,以下命令 python python_script.py -e $(date -d '2020/08/23') -d 7 -m 运行也没有问题泊坞窗图像。

我正在尝试构建我的 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 但仍然出现错误。

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

谢谢。

【问题讨论】:

    标签: bash python-2.7 docker kubernetes kubernetes-helm


    【解决方案1】:

    当您使用命令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
    

    【讨论】:

    • 整个命令 python python_script.py ... 需要在单个 args: 行内,但可能与 -c 分开。
    • 成功了!如果您可以使用@DavidMaze 修复 Victor,请为未来的人编辑答案,感谢你们俩! :)
    • @VictorWong args 中 '-c' 下的 '->' 有什么作用?
    • @2bon2b 你可以在yaml-multiline.info阅读更多相关信息
    猜你喜欢
    • 1970-01-01
    • 2015-04-11
    • 1970-01-01
    • 2021-11-24
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    相关资源
    最近更新 更多