【问题标题】:kubectl command showing emptykubectl 命令显示为空
【发布时间】:2022-01-19 01:33:23
【问题描述】:

我有一个用例,我需要在crontab 中运行kubectl 命令。我收到所有 kubectl 命令的空响应

我试过了

#!/bin/sh

/usr/bin/kubectl get po >> /cron.txt

我们将不胜感激!

【问题讨论】:

  • 您确定在默认命名空间中运行 pod 吗?尝试-A 包含所有命名空间。 kubectl 使用来自 ~/.kube/config 的配置,这是用户特定的
  • 是的。当我手动运行 shell 文件时。它提供了所需的输出。但是当我运行 cron 时,它什么也没做
  • 您是否尝试在 crontab 上调用此文件,例如:bash script.sh
  • * * * * * /bin/sh /script.sh 其他东西正在处理这个文件,但不是 kubectl
  • 我在 shell 文件中尝试了 kubectl 版本,它只显示客户端版本/usr/bin/kubectl version >> /cron.txt,但是当我手动运行脚本文件时,它显示了两个版本(客户端/服务器)。看起来在通过 cron 运行时它没有访问服务器。虽然我也试过设置 KUBECONFIG 变量,但是没用

标签: kubernetes cron kubectl


【解决方案1】:

我不知道你为什么没有得到任何输出,但我想我知道为什么它没有告诉你为什么没有得到输出。

您的命令行只会获取标准输出,并将标准错误放在地板上。 stderr 很可能会告诉你为什么它不起作用。

尝试将命令行更改为:

/usr/bin/kubectl get po 2>&1 >> /cron.txt

【讨论】:

  • 谢谢。我试过了。但是没有用。我试过设置 KUBECONFIG 变量,但问题是一样的
  • 我在 shell 文件中尝试了 kubectl 版本,它只显示客户端版本/usr/bin/kubectl version >> /cron.txt,但是当我手动运行脚本文件时,它显示了两个版本(客户端/服务器)。看起来在通过 cron 运行时它没有访问服务器。虽然我也试过设置 KUBECONFIG 变量,但是没用
  • 当 cron 作业运行时,它不会以您的身份运行,而是以 root 身份运行。 serverfault.com/questions/247043/…
【解决方案2】:

由于您尝试使用bashsh 运行它,问题在于~/.kube/config 在您的home 中。

如果您通过 crontab -e 添加 Cron,则您正在向 root 用户添加 cron,而 root 在其 home 中没有 ~/.kube/config

有几种方法可以解决您的问题,看看哪一种更适合您:

  • 如果出于某种原因需要使用root 用户运行它,您可以将文件从~/.kube/config 复制到/root/.kube/config,但这不是一个好习惯。

  • 您可以设置像$KUBECONFIG 这样的环境变量并将文件位置导出到整个系统。看看configure-access-multiple-clusters/#linux-1

  • 您还可以设置contrab 并强制您的用户运行它,为此您需要编辑/创建 /etc/cron.d/ 中的文件并传递用户名,例如:

.

0 7 * * * username /usr/bin/kubectl get po >> ~/cron.txt

如果您有任何问题,请告诉我。

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2021-01-19
    • 2020-09-04
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 2021-05-02
    相关资源
    最近更新 更多