无法在jenkins管道中执行kubectl命令

问题描述 投票:0回答:2

无法在 jenkins 管道中运行 Kubectl 命令,但通过命令行可以正常工作。

我正在 ec2 ubuntu 实例上运行管道,我已经安装了 jenkins,最后它将应用程序部署到 eks 集群(ec2 连接到集群)。一切都发生在我的主要詹金斯安装中,我没有使用任何詹金斯代理。

我已经在 ec2 实例上安装了 kubectl 命令,我使用该命令使用普通命令行成功连接到 eks 集群。我可以从系统中的任何位置运行 kubectl 命令。但是当我在管道中运行

kubectl apply -f .
命令时,它会说

kubectl apply -f deployment.yaml
/var/lib/jenkins/workspace/java-app-ECR@tmp/durable-b43cd65c/script.sh: 4: kubectl: not found

我的詹金斯也使用与我用来执行命令行命令的同一用户执行命令。当我在管道中提供 kubectl 命令的完整路径时,它说权限被拒绝

/home/ubuntu/bin/kubectl apply -f deployment.yaml
/var/lib/jenkins/workspace/java-app-ECR@tmp/durable-47c860e3/script.sh: 4: /home/ubuntu/bin/kubectl: Permission denied

但我的用户“ubuntu”拥有位于此路径中的文件

ubuntu:~/bin$ pwd
/home/ubuntu/bin
ubuntu:~/bin$ ll
total 43996
drwxrwxr-x  2 ubuntu ubuntu     4096 Jun 20 13:06 ./
drwxr-x--- 12 ubuntu ubuntu     4096 Jun 20 13:06 ../
-rwxrwxr-x  1    777 ubuntu 45039616 Jun 20 13:06 kubectl*

尝试过这个如何在 jenkins 中设置 kubectl 没有多大帮助 请指导

ubuntu jenkins amazon-ec2 kubectl
2个回答
0
投票

如果您最近安装了 kubectl,请考虑重新启动 Jenkins 或 ec2 实例,看看这是否会让 Jenkins 拾取该命令。如果没有,请将 kubectl bin 添加到 Jenkins 本身内的路径(请参阅此答案)。

至于第二部分,Jenkins 通常会创建自己的用户,称为

jenkins
,并且很可能不会使用您的
ubuntu
用户。尝试检查您的用户列表以查看是否已创建 Jenkins 用户。如果有,请向
jenkins
用户授予文件权限,然后重试。


0
投票

我在 Jenkins Pipeline 中运行 kubectl 命令时遇到问题,收到错误消息“/var/lib/jenkins/workspace/dev@tmp/durable-01108c31/script.sh.copy: 1: kubectl: not find”

排除故障后,我找到了解决问题的解决方案。

确保kubectl二进制文件具有执行权限。

将 kubectl 二进制文件移动到 /usr/local/bin/ 目录。您可以通过运行 sudo mv /path/to/kubectl /usr/local/bin/ 来完成此操作。通过将二进制文件移动到此目录,它就可以在系统范围内访问。

执行这些步骤后,kubectl 命令应在 Jenkins 管道中成功执行,并且管道应以成功状态结束。

© www.soinside.com 2019 - 2024. All rights reserved.