kubectl 从头开始连接远程集群
kubectl connect with remote cluster from scratch
我创建了一个 local Kubernetes cluster using ansible。
一切都是 运行 但现在我尝试将我的 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?
所以我尝试了 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"
我知道我需要创建一个 clusterrolebinding,但我仍然需要一个初始的 "admin-ownership"?我错过或做错了什么步骤,所以我可以使用 kubectl 访问我的集群并获取我的 pods?
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: tag accepts either the filename of the CA certificate or an
"inline" base64-ed version of the PEM you can see it with:
kubectl config set-cluster $foo --certificate-authority=... --embed-certs=true
or you can cheat and use --insecure-skip-tls-verify=true
to switch
off the CA verification for testing things
如果在安装Kubernetes时没有生成证书,建议从Kubernetes TLS documentation开始。
您可以查看 GKE 或 AKS 等 Kubernetes 云提供商——它们提供了远程创建包含所有证书的 Kubernetes 配置文件的可能性,然后将其下载到本地 ~/.kube 目录。
如果您将其采用到本地安装,也许这将解决配置的一些问题。
它就像一个魅力,节省了很多时间。如果您仍然犹豫不决,请在此处提供 kubectl config view
的输出,以便我们帮助您解决问题。 (请在此处发布之前删除其中的敏感数据)。
我创建了一个 local Kubernetes cluster using ansible。
一切都是 运行 但现在我尝试将我的 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?
所以我尝试了 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"
我知道我需要创建一个 clusterrolebinding,但我仍然需要一个初始的 "admin-ownership"?我错过或做错了什么步骤,所以我可以使用 kubectl 访问我的集群并获取我的 pods?
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: tag accepts either the filename of the CA certificate or an "inline" base64-ed version of the PEM you can see it with:
kubectl config set-cluster $foo --certificate-authority=... --embed-certs=true
or you can cheat and use
--insecure-skip-tls-verify=true
to switch off the CA verification for testing things
如果在安装Kubernetes时没有生成证书,建议从Kubernetes TLS documentation开始。
您可以查看 GKE 或 AKS 等 Kubernetes 云提供商——它们提供了远程创建包含所有证书的 Kubernetes 配置文件的可能性,然后将其下载到本地 ~/.kube 目录。
如果您将其采用到本地安装,也许这将解决配置的一些问题。
它就像一个魅力,节省了很多时间。如果您仍然犹豫不决,请在此处提供 kubectl config view
的输出,以便我们帮助您解决问题。 (请在此处发布之前删除其中的敏感数据)。