如何设置kubectl端口转发?详细分步指南

2021年11月21日03:20:49 发表评论 1,381 次浏览

kubectl端口转发教程介绍

Kubectl port-forward 允许你从本地主机访问内部 Kubernetes 集群进程并与之交互。你可以使用此方法来调查问题并在本地调整你的服务,而无需事先公开它们。

Kubectl 是用于管理 Kubernetes 集群的主要命令行工具。它对于部署应用程序、管理集群资源和构建复杂框架至关重要。

如何设置kubectl端口转发?这个简洁的教程向你展示了如何使用 kubectl 将端口转发到 Kubernetes 集群中的 pod,包括相关的kubectl设置端口转发示例

先决条件

  • 一个 Kubernetes 集群
  • 一个完全配置好的 kubectl命令行工具

Kubernetes 端口转发如何工作?

尽管 Kubernetes 是一个高度自动化的编排系统,但端口转发过程需要直接和重复的用户输入。一旦 pod 实例失败,连接就会终止,并且需要通过手动输入相同的命令来建立新的转发。

由于kubectl已经具有内置的端口转发功能,因此整个过程得以简化。

  1. 用户在本地机器上使用kubectl命令行与 Kubernetes 交互。
  2. port-forward命令指定集群资源名称并定义端口转发到的端口号。
  3. 因此,Kubernetes API 服务器会在你的本地主机和集群上运行的资源之间建立一个 HTTP 连接。
  4. 用户现在可以直接使用该特定 pod,以诊断问题或在必要时进行调试。

端口转发是一种工作密集型方法。但是,在某些情况下,它是访问内部集群资源的唯一方式。

注意:端口转发仅在处理单个 Pod 时才实用,不能用于服务。

kubectl端口转发教程:基本 kubectl port-forward 命令

kubectl设置端口转发示例:该port-forward命令建立从目标 pod 到你的本地主机的隧道。该命令要求你定义资源的类型或名称以及本地和远程端口号:

kubectl port-forward TYPE/NAME [options] LOCAL_PORT:REMOTE_PORT

如果多个 Pod 与类型/名称标准匹配,则默认情况下会随机选择一个。为避免这种不一致,请尽可能精确地定义 pod。你可以通过键入以下内容手动列出命名空间中的pod 来找到确切的 pod 名称:

kubectl -n yournamespace get pods

该列表提供了该命名空间内 pod 的名称。

如何设置kubectl端口转发?详细分步指南

kubectl 端口转发到特定 Pod

如何设置kubectl端口转发?例如,以下命令将允许你访问集群中的MongoDB 部署。pod 的名称是mongo-db-r3pl1ka3,端口号是 5762:

kubectl port-forward pod/mongo-db-r3pl1ka3 8080:5762

Kubernetes API 现在侦听本地端口 8080 并将数据转发到定义的 pod 上的端口 5762。

随机本地端口

在本地监听一个随机端口,并转发到指定 pod 内的端口 5762:

kubectl port-forward pod/mongo-db-r3pl1ka3 :5762

对应的本地和远程端口

使用相同的端口(8080、5762)在本地和特定 pod 内侦听和转发数据:

kubectl port-forward pod/mongo-db-r3pl1ka3 8080 5762

随机本地 IP 地址

在任何本地地址上侦听端口 8080,转发到指定 pod 中的端口 5762:

kubectl port-forward --address 0.0.0.0 pod/mongo-db-r3pl1ka3 8888:5762

为端口转发指定本地 IP 地址

如何设置kubectl端口转发?使用定义的 IP 侦听本地主机上的端口 8080,转发到 pod 中的端口 5762:

kubectl port-forward --address localhost,10.153.40.102 pod/mongo-db-r3pl1ka3 8080:5762

使用 Deployment 选择 port-forward Pod

kubectl设置端口转发示例:在本地和 Pod 内使用相同的端口 (8080 5762) 侦听和转发数据。该部署使用定义哪些pod是:

kubectl port-forward deployment/mydeployment 8080 5762

允许服务定义端口转发 Pod

在本地和 Pod 内使用相同的端口 (8080 5762) 侦听和转发数据。所述服务所使用选择哪个吊舱是:

kubectl port-forward service/myservice 8080 5762

kubectl端口转发教程结论

如何设置kubectl端口转发?你现在可以使用该port-forward命令连接到 Kubernetes 集群中的任何 pod。如果单个 Pod 开始出现故障,你就可以访问该服务并纠正任何问题。

Kubernetes 集群中的端口转发对于不用于远程公开的后端服务特别有用。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: