繁体   English   中英

kubectl从头开始与远程集群连接

[英]kubectl connect with remote cluster from scratch

使用ansible创建了一个本地Kubernetes集群 一切都在运行,但是现在我尝试将kubectl与群集(在VM中)连接。

我的集群在https://IP:6443

首先我得到:

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

所以我尝试了这个解决方案

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"

我知道我需要创建clusterrolebinding,但是仍然需要初始的“管理员所有权”吗? 我错过了什么步骤或做错了什么,所以可以使用kubectl访问群集并获取吊舱?

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版本的PEM,您可以通过以下方式查看它:

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

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

如果在安装Kubernetes时没有生成证书,建议从Kubernetes TLS文档开始 您可能会看到诸如GKE或AKS之类的Kubernetes云提供程序-他们提供了使用包含所有证书的远程创建Kubernetes配置文件的可能性,然后将其下载到本地〜/ .kube目录。 如果您将其用于本地安装,则可能会解决一些配置问题。 它就像一个护身符,可以节省大量时间。 如果您仍然不确定,请在此处提供kubectl config view的输出,以帮助我们解决问题。 (请先删除敏感数据,然后再在此处发布)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM