运行 端口自动转发的脚本
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 个副本,它会为您处理流量分配。
我想为特定的 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 个副本,它会为您处理流量分配。