K8S|Mac下kubectl远程调试另一集群

背景

历史原因,公司本地没有k8s集群.要调试一个kubectl的脚本,无论是本地写,远程运行,还是远程写远程运行,效率都不咋高.想来想去,如果能跨公网调用远程的api-server,效率自然不可同日而语.
经过一翻折腾,联调成功,特记录一下.
先决条件:
本机的kubectl脚本与远程版本一致.
本机能访问远程的api-server
指定kubectl配置文件kubeconfig

kubectl版本

之所以要统一版本,是因为在使用过程中发现不同版本的客户端,同样的命令,输出竟然不一样.为了本地开发的版本可以无缝在远程运行,自己要先解决这个问题.
查看版本

kubectl version
Client Version: version.Info{
    Major:"1", 
    Minor:"16+", 
    GitVersion:"v1.16.6-beta.0", 
    GitCommit:"e7f962ba86f4ce7033828210ca3556393c377bcc", 
    GitTreeState:"clean", 
    BuildDate:"2020-01-15T08:26:26Z",
    GoVersion:"go1.13.5", 
    Compiler:"gc", Platform:"darwin/amd64"
}

本机是1.16.6,而我远程是v1.10.4
下载

 curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.10.4/bin/darwin/amd64/kubectl

添加执行权限

chmod +x ./kubectl

查看当前软链

ls -lh /usr/local/bin/kubectl
lrwxr-xr-x  1 root  admin    55B Feb 10 22:14 /usr/local/bin/kubectl -> /Applications/Docker.app/Contents/Resources/bin/kubectl

替换

mv ./kubectl /usr/local/bin/kubectl

之所以要替换这个软链是因为这样可以不用在调试的脚本中再指定一次kubectl路径了.当然了再指定一次是好习惯.
参考:
https://k8smeetup.github.io/docs/tasks/tools/install-kubectl/

远程访问api-server

这部分,开始我是直接通过rinetd这个小工具,直接将远程6443映射到公网,然后通过ip白名单访问的,结果发现这样会提示证书有问题

Unable to connect to the server: x509: 
certificate is valid for 127.0.0.1, 10.66.2.254,10.68.0.1, 
not xx.xxx.xxx.xx

既然如此,我直接在远程用Docker分分钟启动一个ipsec vpn server得了

cat vpn.env
VPN_IPSEC_PSK=your_ipsec_pre_shared_key
VPN_USER=your_vpn_username
VPN_PASSWORD=your_vpn_password

docker run \
    --name ipsec-vpn-server \
    --env-file ./vpn.env \
    --restart=always \
    -p 500:500/udp \
    -p 4500:4500/udp \
    -d --privileged \
    hwdsl2/ipsec-vpn-server

本机的话,用系统自带的拨号工具,类型选择Cisco IPSec即可

参考:
https://github.com/hwdsl2/docker-ipsec-vpn-server

kubeconfig

这块牵扯kubectl连接集群时,寻找配置文件顺序了.
kubectl 会按顺序加载和合并来自下面位置的配置

1.--kubeconfig=/path/to/.kube/config 命令行标志

2.KUBECONFIG=/path/to/.kube/config 环境变量

3.$HOME/.kube/config 配置文件

正常情况下,都是直接使用的第三项.接下来的工作就简单了,把本地的.kube/config文件备份一下,把远程的下载过来.

参考:
https://k8smeetup.github.io/docs/tasks/administer-cluster/share-configuration/s

见证奇迹

查看一下集群信息

kubectl cluster-info
Kubernetes master is running at https://10.66.2.254:6443
CoreDNS is running at https://10.66.2.254:6443/api/v1/namespaces/kube-system/services/coredns:dns/proxy
Heapster is running at https://10.66.2.254:6443/api/v1/namespaces/kube-system/services/heapster/proxy
kubernetes-dashboard is running at https://10.66.2.254:6443/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
monitoring-grafana is running at https://10.66.2.254:6443/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
InfluxDB is running at https://10.66.205.2:6443/api/v1/namespaces/kube-system/services/monitoring-influxdb:http/proxy

接下来就愉快的玩耍kubectl了.


相关博文

About rainbird

IOS攻城狮
This entry was posted in K8S and tagged , , , , , , , , , . Bookmark the permalink.

发表评论