运行 端口自动转发的脚本

Script for running port-forward automatically

我想为特定的 pod 名称(app3,我在这个命名空间中有多个应用程序,我需要 运行 仅用于 app3 ) 当我 运行 这个脚本时。

例如

kubectl port-forward pods/app3-86499b66d-dfwf7 8000:8000 -n web

我已经开始

kubectl get pod -n webide-system | grep app3

输出为:

app3-86499b66d-dfwf7 1/1 Running 0 18h

但是,我不确定如何获取输出,即 pod 名称和 运行 转发到它的端口 以下粗体为常量

pods/app3-86499b66d-dfwf7

每次部署都会发生变化

-86499b66d-dfwf7

知道如何让它与脚本一起工作吗?

POD_NAME=`kubectl get pod -n webide-system | grep app3 | sed 's/ .*//'`

kubectl port-forward pods/$POD_NAME  8000:8000  -n web

@Beta 提供的答案是正确的,但我想向您展示另一种方法。

您可以使用服务公开 pod:

$ kubectl expose pod app3-86499b66d-dfwf7 --port 8000 --name app3
service/app3 exposed

但在这种情况下,pod 是使用 pod-template-hash 引用的,因此当重新创建时,服务将不再工作。

这就是公开部署更好的选择的原因:

$ kubectl expose deployment app3 --port 8000
service/app3 exposed

现在您可以使用 pord-forward 功能访问它,如下所示:

$ kubectl port-forward service/app3 8000:8000
Forwarding from 127.0.0.1:8000 -> 8000
Forwarding from [::1]:8000 -> 8000

第二种方法额外采用负载均衡的情况,因此如果您有超过 1 个副本,它会为您处理流量分配。