0

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

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

我得到没有这样的文件或目录错误。似乎配置文件不存在,或者可能位于我不知道的其他地方。根据此处的文档,我为 root 用户创建了一个 kubeconfig 文件(假设它默认不存在):

k0s kubeconfig create root

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

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,但那里也没有任何东西

我错过了什么?

4

2 回答 2

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 用户:

纳米 -f /etc/sudoers

然后

jenkins ALL=NOPASSWD: ALL

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

于 2022-02-05T04:31:16.760 回答
0

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

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

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

于 2022-01-30T18:52:46.153 回答