【问题标题】:kubectl connect with remote cluster from scratchkubectl 从头开始​​连接远程集群
【发布时间】:2018-10-22 14:49:56
【问题描述】:

我创建了一个local Kubernetes cluster using ansible。 一切都在运行,但现在我尝试将我的kubectl 与集群(在虚拟机中)连接。

我的集群在https://IP:6443上运行

首先我得到了:

$ kubectl get pods
The connection to the server localhost:8080 was refused - did you specify the right host or port?

所以我尝试了this solution

kubectl config set-credentials kubeuser/IP --username=kubeuser --password=kubepassword
kubectl config set-cluster IP --insecure-skip-tls-verify=true --server=https://IP:6443
kubectl config set-context default/IP/kubeuser --user=kubeuser/IP --namespace=default --cluster=IP
kubectl config use-context default/IP/kubeuser

又试了一次:

$ kubectl get pods
Error from server (Forbidden): pods is forbidden: User "system:anonymous" cannot list pods in the namespace "default"

我知道我需要创建一个集群角色绑定,但我仍然需要一个初始的“管理员所有权”吗?为了让我可以使用 kubectl 访问我的集群并获取我的 pod,我遗漏了哪一步或做错了什么?

【问题讨论】:

  • 您使用什么凭据进行连接? kubeuser 和 kubepassword 是从哪里来的?你确认这些是正确的吗?
  • 我仍然需要一个初始的“管理员所有权” 是的,并且“集群管理员”凭据在任何一个主节点上的 /etc/kubernetes/admin.conf 中; IIRC 你也可以在 on 主节点上使用kubectl 作为集群管理员执行,并从那里创建自己的 serviceAccount
  • @MatthewLDaniel 我已经检查过它存在,将它用作 min .kube/config 但现在我无法连接到服务器:x509,而我在同一天创建了集群。证书似乎无效,它们可能是自签名的
  • 是的,但cluster: 标签接受 CA 证书的文件名或 PEM 的“内联”base64 版本;你可以用kubectl config set-cluster $foo --certificate-authority=... --embed-certs=true看,也可以作弊用--insecure-skip-tls-verify=true关掉CA验证来测试东西

标签: kubernetes rbac kubectl


【解决方案1】:

Kubectl 是一个用于远程管理 Kubernetes 集群的命令行工具。

Kubectl 正在使用您必须连接到集群的配置文件。由于许多主要或次要更改,您的配置文件可能不一致。如果进一步分析问题没有显示出好的结果,请尝试 rm -f ~/.kube/config 并从头开始。

如我所见,您怀疑问题出在自签名证书上。它可能需要更新客户端上的集群根证书颁发机构 (CA),然后刷新本地列表以获取有效证书。

进入本地 CA 目录,检查 ca.crt 文件是否存在,然后将其复制到客户端。 对于客户端,请执行以下操作:

sudo cp ca.crt /usr/local/share/ca-certificates/kubernetes.crt
sudo update-ca-certificates

我同意 Matthew L. Daniel 提供的建议:

cluster: 标签接受 CA 证书的文件名或 PEM 的“内联”base64 版本,您可以通过以下方式查看:

kubectl config set-cluster $foo --certificate-authority=... --embed-certs=true

或者你可以作弊并使用--insecure-skip-tls-verify=true切换 关闭 CA 验证以进行测试

如果您在安装 Kubernetes 时没有生成证书,我建议从 Kubernetes TLS documentation 开始。 你可以看看像 GKE 或 AKS 这样的 Kubernetes 云提供商——它们可以远程创建包含所有证书的 Kubernetes 配置文件,然后将其下载到本地 ~/.kube 目录。 如果您将其用于本地安装,也许这将解决配置的一些问题。 它就像一种魅力,可以节省大量时间。如果您仍然犹豫不决,请在此处提供kubectl config view 的输出,以便我们帮助您解决问题。 (请在此处发布之前从中删除敏感数据)。

【讨论】:

    猜你喜欢
    • 2016-04-06
    • 2017-04-15
    • 2017-10-19
    • 2015-09-02
    • 2018-07-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    相关资源
    最近更新 更多