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,输入命令:
| 12
 3
 4
 5
 
 | 
 
 C:\Users\a94391> ssh -L 18443:192.168.49.2:8443 -N -f docker_user@192.168.56.101
 docker_user@192.168.56.101's password:
 
 | 
此时可以在本地开发环境通过curl进行简单验证:
curl https://127.0.0.1:18443
只要不是 Connection refused 那么可以认为连接成功了。
修改config内容
| 12
 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: v1clusters:
 - 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
 | 
| 12
 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)
 }
 
 |