【问题标题】:File not found error when copying kubeconfig file to jenkins context将 kubeconfig 文件复制到 jenkins 上下文时找不到文件错误
【发布时间】:2022-02-05 12:31:16
【问题描述】:

我正在尝试使用 Jenkins 访问 k0s 集群,以便从 Jenkins 管道进行部署。为了在 kubeconfig 文件中复制/粘贴集群凭据,我尝试使用“~/.kube/config”命令访问,但出现“没有这样的文件或目录”的错误,即当我运行时:

sudo cp ~/.kube/config ~/.jenkins/.kube/

我收到 No such file or directory 错误。似乎配置文件不存在,或者可能位于我不知道的其他地方。 根据文档here,我为 root 用户创建了一个 kubeconfig 文件(假设它默认不存在):

k0s kubeconfig create root

但是当我重新尝试复制时,我仍然收到同样的错误“没有这样的文件或目录”。根据此命令k0s kubeconfig create root 的输出,kubeconfig 文件已创建

WARN[2022-01-30 17:44:16] no config file given, using defaults

apiVersion: v1
clusters:

cluster:
server: https://10.XXX.XXX.XXX:6443
certificate-authority-data: xxxxxxxx
name: k0s
contexts:
context:
cluster: k0s
user: root
name: k0s
current-context: k0s
kind: Config
preferences: {}
users:
name: root
user:
client-certificate-data: xxxxxxxxxxxx

我可以使用命令k0s kubectl config view 验证文件确实存在:

apiVersion: v1
clusters:

cluster:
certificate-authority-data: DATA+OMITTED
server: https://localhost:6443
name: local
contexts:
context:
cluster: local
namespace: default
user: user
name: Default
current-context: Default
kind: Config
preferences: {}
users:
name: user
user:
client-certificate-data: REDACTED
client-key-data: REDACTED

其中一篇文章建议使用命令 k0s kubectl get pods -v=6 来查看 kubeconfig 文件的确切位置,但是当我运行它时 -v 似乎不支持 k0s :

Error: unknown shorthand flag: 'v' in -v=6
See 'k0s kubectl get --help' for usage

作为检查,我已完成 cd ~/.kube/config 但那里也没有任何内容

我错过了什么?

【问题讨论】:

  • 您使用的是哪个版本的 Kubernetes,您是如何设置集群的?您是否使用裸机安装或某些云提供商?重现您的问题很重要。
  • 裸机服务器
  • 请回答我的其他问题,尤其是您使用的版本。此外,请准确说明您是如何创建此集群的。

标签: jenkins kubernetes kubeconfig k0s


【解决方案1】:

我发现我错过了什么:

~/.kube/config 默认情况下根本不会由 k0s 创建。 k0s 默认创建的是“打破常规”管理 kubeconfig,它位于 /var/lib/k0s/pki/admin.conf

所以我不得不这样做:

  1. cp /var/lib/k0s/pki/admin.conf ~/.kube/config
  2. cp ~/.kube/config/admin.conf /var/lib/jenkins
  3. 将 jenkins 用户添加到 sudo 用户:

nano -f /etc/sudoers

然后

jenkins ALL=NOPASSWD: ALL

然而,推荐的方法是使用适当的 RBAC 为 Jenkins 提供专用访问权限,仅允许所需的访问权限,例如服务帐户令牌。作为下一步,我将不得不在另一个 Jenkins 实例上对此进行测试,因为我无法再撤销访问权限(使用 admin.conf 的缺点)

【讨论】:

    【解决方案2】:

    您可以使用以下命令将 kubeconfig 复制到位置 /root/.kube/config

    k0s kubectl config view --raw > ~/.kube/config
    

    创建文件后,您应该不会收到上述错误"no such file or directory"

    【讨论】:

      猜你喜欢
      • 2021-05-20
      • 1970-01-01
      • 2019-05-19
      • 2018-02-10
      • 2023-01-26
      • 1970-01-01
      • 2021-05-15
      • 2021-06-02
      • 1970-01-01
      相关资源
      最近更新 更多