client-go 远程连接 K8s(Minikube)
复制配置文件到本地
- 先将 minikube 拷贝到本地(或者只拷贝
.kube/config 需要的文件)
1
| cp -r /home/docker_user/.minikube /root/
|

- 拷贝
.kube 文件夹
1
| cp -r /home/docker_user/.kube /root/
|

添加 SSH 端口转发
本地肯定是访问不了的,所以需要在本地试验环境添加远程主机的端口转发。
Windows 端口转发,打开 Windows 的 cmd,输入命令:
1 2 3 4
|
ssh -L 18443:192.168.49.2:8443 -N -f docker_user@192.168.56.101
|
此时可以在本地开发环境通过 curl 进行简单验证:
1
| curl https://127.0.0.1:18443
|
只要不是 Connection refused,那么可以认为连接成功了。
修改 config 内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| apiVersion: v1 clusters: - cluster: certificate-authority: C:/Users/94391/.minikube/ca.crt extensions: - extension: last-update: Sat, 26 Nov 2022 17:40:15 CST provider: minikube.sigs.k8s.io version: v1.28.0 name: cluster_info server: https://127.0.0.1:18443 name: minikube contexts: - context: cluster: minikube extensions: - extension: last-update: Sat, 26 Nov 2022 17:40:15 CST provider: minikube.sigs.k8s.io version: v1.28.0 name: context_info namespace: default user: minikube name: minikube current-context: minikube kind: Config preferences: {} users: - name: minikube user: client-certificate: C:/Users/94391/.minikube/profiles/minikube/client.crt client-key: C:/Users/94391/.minikube/profiles/minikube/client.key
|
代码测试
client-go 对应 k8s-1.23.3 版本
1
| go get k8s.io/client-go@v0.23.3
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
config, err := clientcmd.BuildConfigFromFlags("", clientcmd.RecommendedHomeFile) if err != nil { panic(err) } clientset, err := kubernetes.NewForConfig(config) if err != nil { panic(err) } coreV1 := clientset.CoreV1() pod, err := coreV1.Pods("kube-system").Get(context.TODO(), "etcd-minikube", v1.GetOptions{}) if err != nil { fmt.Println(err) } else { fmt.Println(pod.Name) }
|