如何通过port-forward命令在本地访问 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 命令的基本语法如下:
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 安装
- 下载
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
- 将 kubectl 置为可执行文件:
chmod +x ./kubectl
- 将可执行文件 kubectl 移动到系统可寻址路径
PATH内的一个位置:
sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl
说明:
确保 /usr/local/bin 在你的 PATH 环境变量中。
- 测试一下,确保你安装的是最新的版本:
kubectl version --client
或者使用下面命令来查看版本的详细信息:
kubectl version --client --output=yaml
- 安装插件后,清理安装文件:
rm kubectl kubectl.sha256
配置kubectl
访问rancher控制台,下载kubeCofig文件

执行cd 到当前用户跟目录,创建.kube文件夹
cd & mkdir .kube & cd .kube
copy下载集群配置文件到.kube目录下,假设文件路径为:/Users/g2/Downloads/ ,文件名为:pdc-demo.yaml,那么命令如下
mv /Users/g2/Downloads/pdc-demo.yaml ./config
执行kubectl get pods 查看配置是否生效,返回如下信息即生效

端口转发配置验证
下面使用port-forward命令对集群中的elastic-job和eureka进行本地访问

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

那么执行以下命令,这里的命令表示访问本地8080端口转发的pod上,pod的端口为80
kubectl port-forward elastic-job-86fc7b856-jxflx 8080:80

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

eureka访问验证

eureka的pod端口也为80映射到本地端口为8762
kubectl port-forward eureka-5d4cf57b88-l8bgd 8762:80

可以看到访问成功

如何通过port-forward命令在本地访问 k8s 集群服务的更多相关文章
- 【转载】浅析从外部访问 Kubernetes 集群中应用的几种方式
一般情况下,Kubernetes 的 Cluster Network 是属于私有网络,只能在 Cluster Network 内部才能访问部署的应用.那么如何才能将 Kubernetes 集群中的应用 ...
- Kubernetes 系列(一):本地k8s集群搭建
我们需要做以下工作: (1)安装VMware,运行CentOs系统,一个做master,一个做node. (2)安装K8s. (3)安装docker和部分镜像会需要访问外网,所以你需要做些网络方面的准 ...
- 6.K8s集群升级、etcd备份和恢复、资源对象及其yaml文件使用总结、常用维护命令
1.K8s集群升级 集群升级有一定的风险,需充分测试验证后实施 集群升级需要停止服务,可以采用逐个节点滚动升级的方式 1.1 准备新版本二进制文件 查看现在的版本 root@k8-master1:~# ...
- 命令行部署repmgr管理集群+switchover+切换测试
本次部署未使用securecmd/kbha工具.无需普通用户到root用户的互信. 建立系统数据库安装用户组及用户,在所有的节点执行 root用户登陆服务器,创建用户组及用户并且设置密码 [root@ ...
- Hadoop(五)搭建Hadoop与Java访问HDFS集群
前言 上一篇详细介绍了HDFS集群,还有操作HDFS集群的一些命令,常用的命令: hdfs dfs -ls xxx hdfs dfs -mkdir -p /xxx/xxx hdfs dfs -cat ...
- Hadoop(五)搭建Hadoop客户端与Java访问HDFS集群
阅读目录(Content) 一.Hadoop客户端配置 二.Java访问HDFS集群 2.1.HDFS的Java访问接口 2.2.Java访问HDFS主要编程步骤 2.3.使用FileSystem A ...
- 使用Rancher Server部署本地多节点K8S集群
当我第一次开始我的Kubernetes之旅时,我一直在寻找一种设置本地部署环境的方式.很多人常常会使用minikube或microk8s,这两者非常适合新手在单节点集群环境下进行操作.但当我已经了解了 ...
- 使用kubectl管理Kubernetes(k8s)集群:常用命令,查看负载,命名空间namespace管理
目录 一.系统环境 二.前言 三.kubectl 3.1 kubectl语法 3.2 kubectl格式化输出 四.kubectl常用命令 五.查看kubernetes集群node节点和pod负载 5 ...
- IntelliJ IDEA的下载、安装和WordCount的初步使用(本地模式和集群模式)
包括: IntelliJ IDEA的下载 IntelliJ IDEA的安装 IntelliJ IDEA中的scala插件安装 用SBT方式来创建工程 或 选择Scala方式来创建工程 本地模式或集群 ...
- 【Service Fabric】小白入门记录 本地Service Fabric集群安装及设置
本篇内容是自学自记,现在我还不知道Service Fabric究竟是怎么个入门法,反正按照入门教程先进行本地Service Fabric集群的安装,万里路始于足下,要学习总得先把环境装好了才能开始学习 ...
随机推荐
- Elasticsearch之环境搭建
一.安装 elasticsearch -- 拉取镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:8.9.1 -- 创建 doc ...
- Springboot实现注解判断权限
Springboot实现注解判断权限 今天记录一下使用springboot的注解来给方法加权限 避免了每个方法都需要大量的权限判断 超级好用√ @ 目录 Springboot实现注解判断权限 1.创建 ...
- div 让a内容居中方法
<div>标签是HTML中的一个重要标签,它代表了一个文档中的一个分割区块或一个部分.在<div>标签中,我们可以放置各种内容,包括文本.图像.链接等等.有时候,我们需要将其中 ...
- Redis系列之——持久化
一 持久化的作用 1.1 什么是持久化 redis的所有数据保存在内存中,对数据的更新将异步的保存到硬盘上 1.2 持久化的实现方式 快照:某时某刻数据的一个完成备份, -mysql的Dump -re ...
- Go 项目代码布局
Go 项目代码布局 目录 Go 项目代码布局 一.Go 语言"创世项目"结构 1.1 src 目录结构三个特点 二.Go 项目布局演进 2.1 演进一:Go 1.4 版本删除 pk ...
- postman导入请求到jmeter进行简单压测,开发同学一学就会
背景 这个事情也是最近做的,因为线上nginx被我换成了openresty,然后接入层服务也做了较大改动,虽然我们这个app(内部办公类)并发不算高,但好歹还是压测一下,上线时心里也稳一点. 于是用j ...
- 文心一言 VS 讯飞星火 VS chatgpt (120)-- 算法导论10.3 5题
五.用go语言,设 L 是一个长度为 n 的双向链表,存储于长度为 m 的数组key.prev 和next 中.假设这些数组由维护双链自由表 F的两个过程 ALLOCATE-OBJECT 和 FREE ...
- 机器学习实战5-KMeans聚类算法
概述 聚类 VS 分类 有监督学习 VS 无监督学习 sklearn中的聚类算法 KMeans KMeans参数&接口 n_clusters n_clusters就是KMeans中的K就是告诉 ...
- CSS属性 Position的几种定位方式
作者:WangMin 格言:努力做好自己喜欢的每一件事 在讲几种定位方式之前,我们先来了解一下什么是普通流(normal flow)? 除非专门指定,否则所有框都在普通流中定位.普通流中元素框的位置由 ...
- 谈谈SSO单点登录的设计实现
谈谈SSO单点登录的设计实现 本篇将会讲讲单点登录的具体实现. 实现思路 其实单点登录在我们生活中很常见,比如学校的网站,有很多个系统,迎新系统,教务系统,网课系统.我们往往只需要登录一次就能在各个系 ...