[英]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.