不通过nodeport和Ingress,快速本地访问k8s 微服务的接口

概述

在我们访问k8s中的pod服务时,一般通过node port映射pod端口进行访问,还有一种是通过ingress或者istio通过域名方式来访问,虽然两种方式能满足我们需求,但是如果针对临时访问,配置起来还是有点复杂和耗时,那么我们就可以使用 kubectl port-forward来满足我们需求

port-forward 介绍

kubectl port-forward 是 Kubernetes 命令行工具 kubectl 提供的一个功能,用于在本地主机和 Kubernetes 集群中的 Pod 之间建立端口转发。

当你运行 kubectl port-forward 命令时,它会将本地主机上的一个端口与 Kubernetes 集群中的一个 Pod 的端口进行绑定。这样,在本地主机上监听的端口上收到的流量将被转发到 Pod 的端口上,反之亦然。

这个功能在开发和调试应用程序时非常有用。以下是一些 kubectl port-forward 的常见用途和好处:

  • 访问远程 Pod 的本地服务: 你可以将 Pod 的端口转发到本地主机,从而能够直接访问 Pod 上运行的服务。例如,你可以将一个运行在 Kubernetes 集群中的数据库 Pod 的端口转发到本地,以便在本地开发环境中连接和测试数据库。

  • 调试和日志记录: 通过将 Pod 的端口转发到本地,你可以使用本地工具来调试和监视在 Kubernetes 中运行的应用程序。你可以使用本地的调试器、日志记录工具或其他开发工具来检查应用程序的状态、调试问题或查看日志。

  • 绕过 Kubernetes 服务和负载均衡器: 有时候,你可能想直接访问运行在 Kubernetes 中的应用程序,而不经过 Kubernetes 的服务发现和负载均衡机制。通过将 Pod 的端口转发到本地,你可以绕过这些机制,直接连接到应用程序。

kubectl port-forward 命令的基本语法如下:

shell 复制代码
  kubectl port-forward <pod-name> [local-port:]pod-port [-n namespace]
  
  kubectl port-forward deployment/<deployment-name> [local-port:]pod-port [-n namespace]

基于以上介绍下面对port-forward命名进行一个简单验证

Kubectl 安装

  1. 下载
shell 复制代码
   curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
  1. 将 kubectl 置为可执行文件:
bash 复制代码
chmod +x ./kubectl
  1. 将可执行文件 kubectl 移动到系统可寻址路径 PATH 内的一个位置:
bash 复制代码
sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl

说明:

确保 /usr/local/bin 在你的 PATH 环境变量中。

  1. 测试一下,确保你安装的是最新的版本:
bash 复制代码
kubectl version --client

或者使用下面命令来查看版本的详细信息:

cmd 复制代码
kubectl version --client --output=yaml
  1. 安装插件后,清理安装文件:
bash 复制代码
rm kubectl kubectl.sha256

配置kubectl

访问rancher控制台,下载kubeCofig文件

执行cd 到当前用户跟目录,创建.kube文件夹

Shell 复制代码
cd & mkdir .kube & cd .kube

copy下载集群配置文件到.kube目录下,假设文件路径为:/Users/g2/Downloads/ ,文件名为:pdc-demo.yaml,那么命令如下

Shell 复制代码
mv /Users/g2/Downloads/pdc-demo.yaml ./config

执行kubectl get pods 查看配置是否生效,返回如下信息即生效

端口转发配置验证

下面使用port-forward命令对集群中的elastic-job和eureka进行本地访问

elatic-job访问验证

如下图,假如要访问elatic-job

那么执行以下命令,这里的命令表示访问本地8080端口转发的pod上,pod的端口为80

Shell 复制代码
kubectl port-forward elastic-job-86fc7b856-jxflx 8080:80

本地请求8080端口 地址,效果如下图

eureka访问验证

eureka的pod端口也为80映射到本地端口为8762

yaml 复制代码
 kubectl port-forward eureka-5d4cf57b88-l8bgd  8762:80

可以看到访问成功

相关推荐
码兄科技3 小时前
实战:基于Spring Boot + UniApp的地理信息小程序开发
spring boot·后端·uni-app
腾讯云云开发4 小时前
腾讯云 CloudBase 登上 WAIC:我们为 Agent 重新设计了云的生产线
后端
星栈5 小时前
从装一堆工具到看懂 Node 工程化思维:我的项目复盘记录
后端·node.js
65岁退休Coder5 小时前
LangChain v1.3.4 笔记 - 05 Agent 上下文记忆
后端
颜酱5 小时前
04 | 召回前置准备:搭好召回所需的四个数据库
前端·人工智能·后端
JaneConan5 小时前
鸿蒙 韶非 UI 系列:能力调用 startAbilityForResult,跳能力拿回参,鸿蒙能力路由入门
后端·harmonyos
晴空了无痕5 小时前
从 Go 基础到 K8s:一条可落地的 Go 服务端成长路线
开发语言·后端·golang·kubernetes
用户8356290780515 小时前
如何使用 Python 在 Excel 中添加、编辑和删除超链接
后端·python
花椒技术6 小时前
原本要 2 天的服务端冒烟前置审查,为什么 3 分半就能出报告?|QA 质量交付实践(三)
后端·ai编程·测试
达达尼昂6 小时前
AI 编程的工程化实践:Flutter AI Harness 的设计与落地
人工智能·后端·全栈