需求:研发需要调试部署的pod是否能正常提供访问,但又不对pod进行暴露到集群外。
实现:通过Kubernetes的Port Forward机制对本机端口映射到pod端口来实现
一、单集群配置
1、安装kubectl
官网下载页面:https://kubernetes.io/docs/tasks/tools/install-kubectl/
下载对应Kubernetes 相同版本的kubectl:
https://storage.googleapis.com/kubernetes-release/release/v1.14.1/bin/windows/amd64/kubectl.exe
把下载的kubectl.exe文件存放在C:\k8s\bin目录下,并把该目录添加到PATH中(步骤略)
2、配置kubectl
1)需要获取配置文件:
a、一般部署的Kubernetes,会生成 $HOME/.kube/config,把该目录下的config文件,存放在Windows本地对应家目录C:\Users\admin\.kube下

b、如果rancher部署的,可在集群首页查看配置文件,复制下来也存放在账号的家目录

2)然后cmd中查看集群
kubectl get node

说明配置kubectl成功。
3、设置转发端口
1)把本地3080端口转发到容器的80端口
kubectl port-forward my-nginx-6d7ddd766f-4fxxc 3080:80
Forwarding from 127.0.0.1:3080 -> 80 Forwarding from [::1]:3080 -> 80

输出如上,说明转发成功。如果是部署在其他namespace上,需要用 -n 指定namespace。该窗口不能关闭。
2)本地浏览器访问
127.0.0.1:3080

二、多集群配置
如果是多个集群(测试、正式、CI/CD等环境),有两种方式进行配置。
1、指定kubeconfig文件
将多个集群的 config 文件都存放在 .kube 文件夹中,命令指定文件绝对路径。
kubectl --kubeconfig="C:\Users\admin\.kube\dev-config" get pod --all-namespaces
2、指定 context
把所有的集群文件合并为一个文件config。
apiVersion: v1 kind: Config clusters: - name: "production" cluster: server: "https://rancher.wmq.com/k8s/clusters/c-xaw" - name: "develop" cluster: server: "https://rancher.wmq.com/k8s/clusters/c-xaq" users: - name: "u-42lyr7ytst" user: token: "kubeconfig-u-42lyr7ytst.c-x497w:756z5v8s84cch4444kx33333395zg4klxwtaaabqrg" - name: "u-42lyr7ytst_dev" user: token: "kubeconfig-u-42lyr7ytst.c-xg99q:6sm7hhdlfx44449c4rs3333333333g3vzcjdjcaaazzq" contexts: - name: "prod" context: user: "u-42lyr7ytst" cluster: "production" - name: "dev" context: user: "u-42lyr7ytst_dev" cluster: "develop" current-context: "dev"
执行下面命令即可
kubectl --context dev get pod --all-namespaces
三、gui软件
如果觉得上面步骤很麻烦,这里推荐一个开源的gui软件:Kube Forwarder;支持多集群,只需要简单的导入各个集群的 kubeconfig 文件即可,很方便使用。
如下图:

