从crontab无法使用kubectl终端命令,如何解决?

时间:2018-08-15 15:33:49

标签: python cron kubernetes kubectl

我下面有小的python脚本

import os
os.system('kubectl get pods --context students-cmn')

当我从终端手动运行此命令时,它没有问题,因此我将其配置为作为cron作业运行,但是当cron作业触发以下错误时

sh: kubectl: command not found

为什么,当cronjob触发时,kubectl无法正常工作?

任何人都可以帮助

2 个答案:

答案 0 :(得分:1)

首先,我想您正在计划将代码添加到python脚本中,这就是为什么要使用python。我假设您使用了可以运行命令的用户的crontab。

cron中执行命令时,必须指定命令的完整路径。要找到kubectl的完整路径,请在终端中发出以下命令:

which kubectl

它将打印完整路径。

然后,您编辑脚本(假设完整路径为“ / opt / Kubernetes / bin”):

import os
os.system('/opt/Kubernetes/bin/kubectl get pods --context students-cmn')

答案 1 :(得分:0)

当我尝试使用cron从CentOS 7将.ku / py文件执行“ kubectl”命令时,遇到了同样的问题。 我可以手动运行脚本.sh / .py文件,并且输出很好。 当我尝试使用脚本设置cron作业时,无法执行“ kubectl”命令。 它没有为cron事件生成任何日志。 如果您不介意,请支持我。

crontab : * * * * * python /home/sanglv/kube-status.py >> /tmp/status.txt

kube-status.py file : #!/usr/bin/env python #ls command import os os.system('/usr/bin/kubectl get pods --all-namespaces --kubeconfig="/root/.kube/config"')