Powershell -执行多个命令-在Windows上执行kubectl端口转发

vcudknz3  于 2023-03-12  发布在  Shell
关注(0)|答案(2)|浏览(233)

我在Windows 10上运行minikube(无隧道)
有没有可能运行多个命令来阻塞控制台,直到一次全部退出?我在这里看到的是kubectl port-forward

kubectl port-forward -n istio-system service/grafana 13000:3000;
kubectl port-forward --address 0.0.0.0 pod/web-ui-deployment-ff6ffbd44-5vxqk 8080:1337;

仅输出:

Forwarding from 127.0.0.1:13000 -> 3000
Forwarding from [::1]:13000 -> 3000

本质上它是阻止下一个运行。Ctrl+C只是停止所有运行。
这个是为mac -kubectl port-forward multiple services准备的。
这些命令可以在两个PowerShell终端中单独运行,所以我不认为问题在于命令被挂起。

**注意:**运行一个命令需要按Ctrl+C退出。

but5z9lq

but5z9lq1#

第一个命令将“阻塞”,即一旦启动,PowerShell将等待进程完成(例如,直到您按Ctrl + C结束任务),然后返回并运行下一个命令。与您链接到的示例一样,解决方案是在后台启动进程,这将允许下一个命令运行。您可以使用Start-Process执行此操作

Start-Process kubectl -ArgumentList "port-forward -n istio-system service/grafana 13000:3000"
Start-Process kubectl -ArgumentList "port-forward --address 0.0.0.0 pod/web-ui-deployment-ff6ffbd44-5vxqk 8080:1337"
mwyxok5s

mwyxok5s2#

可以使用Start-Job启动两个后台作业:

$jobs = @(
  Start-Job {kubectl port-forward -n istio-system service/grafana 13000:3000}
  Start-Job {kubectl port-forward --address 0.0.0.0 pod/web-ui-deployment-ff6ffbd44-5vxqk 8080:1337}
) 

try {
  Write-Host "Port forwarding jobs running. Press Ctrl+C to stop..."
  $jobs |Wait-Job
}
finally {
  $jobs |Remove-Job -Force
}

要终止它,只需按Ctrl+C中断Wait-Job,从而执行finally

相关问题