如何在没有 ssh 的情况下从我的本地计算机在托管在 ec2 实例上的集群上使用 kubectl 命令
How can I use kubectl commands on my cluster hosted on ec2 instances from my local machine without ssh
我希望能够在没有 ssh 的情况下从我的本地计算机在我的主 ec2 实例上使用 kubectl
命令。我尝试将 .kube
复制到本地,但问题是我的 kubeconfig
正在使用专用网络,因此当我尝试从本地 运行 kubectl
时,我无法连接.
这是我尝试过的:
user@somehost:~/aws$ scp -r -i some-key.pem ubuntu@some.ip.0.0:.kube/ .
user@somehost:~/aws$ cp -r .kube $HOME/
user@somehost:~/aws$ kubectl version
我得到了:
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.7", GitCommit:"1dd5338295409edcfff11505e7bb246f0d325d15", GitTreeState:"clean", BuildDate:"2021-01-13T13:23:52Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Unable to connect to the server: dial tcp some.other.ip.0:6443: i/o timeout
有没有一种方法可以改变 kubeconfig
当我 运行 从本地向 运行 命令时告诉我的 kubectl
ec2 实例?
您必须使用外部可访问 IP 更改 kubectl 配置中的 clusters.cluster.server
键。
为此,您的具有主节点的 VM 必须分配有外部 IP。
根据您配置集群的方式,您可能需要 add additional name to Kubernetes API server certificate
使用 kubeadm
您可以使用
重置集群
kubeadm reset
在所有节点(包括master)上,然后
kubeadm init --apiserver-cert-extra-sans=<master external IP>
或者,您可以使用 --insecure-skip-tls-verify
标志发出命令。例如
kubectl --insecure-skip-tls-verify get pods
我希望能够在没有 ssh 的情况下从我的本地计算机在我的主 ec2 实例上使用 kubectl
命令。我尝试将 .kube
复制到本地,但问题是我的 kubeconfig
正在使用专用网络,因此当我尝试从本地 运行 kubectl
时,我无法连接.
这是我尝试过的:
user@somehost:~/aws$ scp -r -i some-key.pem ubuntu@some.ip.0.0:.kube/ .
user@somehost:~/aws$ cp -r .kube $HOME/
user@somehost:~/aws$ kubectl version
我得到了:
Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.7", GitCommit:"1dd5338295409edcfff11505e7bb246f0d325d15", GitTreeState:"clean", BuildDate:"2021-01-13T13:23:52Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}
Unable to connect to the server: dial tcp some.other.ip.0:6443: i/o timeout
有没有一种方法可以改变 kubeconfig
当我 运行 从本地向 运行 命令时告诉我的 kubectl
ec2 实例?
您必须使用外部可访问 IP 更改 kubectl 配置中的 clusters.cluster.server
键。
为此,您的具有主节点的 VM 必须分配有外部 IP。
根据您配置集群的方式,您可能需要 add additional name to Kubernetes API server certificate
使用 kubeadm
您可以使用
kubeadm reset
在所有节点(包括master)上,然后
kubeadm init --apiserver-cert-extra-sans=<master external IP>
或者,您可以使用 --insecure-skip-tls-verify
标志发出命令。例如
kubectl --insecure-skip-tls-verify get pods