Mac和Windows下 idea连接k8s集群详解

设备版本:

1、k8s-server:v1.21.2

2、k8s-client:v1.19.3

3、ktConnect:0.3.6(自测发现Mac不受版本影响)

4、idea:2022.2.3 (不影响)

5、Mac:10.15.7

备注:查看方式 kubectl version、ktctl -v

配置kubectl

目的:本地可以直接控制k8s集群

1、下载kubectl

# 官网地址:https://kubernetes.io/zh-cn/docs/tasks/tools/install-kubectl-macos/
# 安装最新版本
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"

如果需要指定版本,使用下面指令:

# 说明:如果需要下载某个指定的版本,用该指定版本号替换掉命令的这个部分:
$(curl -L -s https://dl.k8s.io/release/stable.txt)。 
# 例如:要为 Intel macOS 系统下载 v1.25.0 版本,则输入:
curl -LO "https://dl.k8s.io/release/v1.25.0/bin/darwin/amd64/kubectl"

# 对于 Apple Silicon 版本的 macOS,输入:
curl -LO "https://dl.k8s.io/release/v1.25.0/bin/darwin/arm64/kubectl"

备注:Windows下载雷同,可参考官网

2、将 kubectl 置为可执行文件:

chmod +x ./kubectl

3、将可执行文件 kubectl 移动到系统可寻址路径 PATH 内的一个位置(其实就是将文件放到环境变量中):

sudo mv kubectl /usr/local/bin/kubectl 

4、验证是否安装成功

kubectl version --client

备注:还有其他安装方式不在此处讲解,上边已附官网地址

5、配置config

5.1、 在当前用户目录下创建.kube

mkdir /Users/用户名/.kube

# eg: 用户名为zhangsan
mkdir /Users/zhangsan/.kube

5.2、在k8s集群master节点,/root/.kube目录下,将config文件copy到本地,放到当前用户.kube目录下

# master节点目录地址
/root/.kube

mv config /root/.kube/

备注:Windows坏境下,也是将config文件放到当前用户目录下的/.kube目录下

6、验证是否可以操作k8s集群

kubectl get pods 

配置kt

目的:创建本地与k8s集群通道,可以相互调用,调试代码,但是大多数场景还是本地连接集群较多,此处只讲解从本地到集群的”单向VPN“,如需想了解其他(Exchange/Mesh/Preview),请在评论区留言,本人再分享一篇专辑

1、下载ktctl

# 官网地址:https://alibaba.github.io/kt-connect/#/zh-cn/guide/downloads
$ curl -OL https://github.com/alibaba/kt-connect/releases/download/v0.3.6/ktctl_0.3.6_MacOS_x86_64.tar.gz

2、解压

tar zxf ktctl_0.3.6_MacOS_x86_64.tar.gz

3、配置ktctl

mv ktctl /usr/local/bin/ktctl

4、验证是否安装成功

ktctl --version

5、启动ktctl

sudo ktctl -n 命名空间 connect
eg:
sudo ktctl -n test connect

6、请求验证

Windows有一些区别,无法直接访问集群内服务,需要做代理,详情请看配置idea

# 访问集群内服务
$ curl http://<POD_IP>:<PORT> #本地直接访问PodIP
$ curl http://<CLUSTER_IP>:<PORT> # 本地直接访问ClusterIP
$ curl http://<SVC_NAME>:<PORT> #使用Service的域名访问
$ curl http://<SVC_NAME>.<namespace_name>:<PORT> #本地访问带有命名空间的service
$ curl http://<svc_NAME>.<namespace_name>.svc.cluster.local:<port> #集群dns解析访问

验证结果:如果可以访问到,则说明配置没有问题,如果访问不到,请看核心步骤

核心步骤

检测完kubectl与ktctl版本没有问题后,如果本地还是无法连接到k8s集群,则是DNS缓存的问题,此时执行一下命令,清除缓存,再重新连接(Windows不存在此情况)

# 版本:Mac OS X 12 (Sierra) and later:
sudo killall -HUP mDNSResponder
sudo killall mDNSResponderHelper
sudo dscacheutil -flushcache

# 版本:Mac OS X 11 (El Capitan) and OS X 12 (Sierra):
sudo killall -HUP mDNSResponder

# 版本:Mac OS X 10.10 (Yosemite), Versions 10.10.4+:
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

配置idea

这个要分Mac和Windows来说明:

1、Mac:

在本人自测场景下,idea无需配置代理,可直接访问到集群内服务;

原因:本人推测,由于配置了环境变量,做了全局代理,当站点请求集群内部服务时,也会通过VPN隧道;

有不同见解,请在评论区留言,欢迎探讨

2、Windows:

需要在启动项目前,配置代理IP和代理端口,否则无法访问到集群内部服务

1、操作如下,需要在idea启动参数中配置如下代理

VM options:-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=2223

  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值