需求:研發需要調試部署的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 文件即可,很方便使用。
如下圖:

