使用部分 pod-name 移植 kubernetes pod

Portforwarding a kubernetes pod using partial pod-name

我正在使用一个包含大约 10 个 kubernetes pods 的测试环境,我需要与之进行大量交互,尤其是端口转发。

我每天花很多时间来列出 pods、获取 pod 名称并在命令中使用它。

由于我所有的 pods 都以固定名称开头,后跟一些每天更改几次的随机字符串,因此我正在寻找一种仅使用固定名称来转发(以及可能的其他命令)的方法pod 名称的一部分。

所以不做

kubectl port-forward pods/planning-api-5fbf84cd4-mbxmn 8081:8081 -n production

我想要类似的东西

kubectl port-forward pods/planning-api* 8081:8081 -n production

理想情况下,我希望将它放入某种我可以 运行 的脚本中,这样多个语句也可以工作,只要它们不需要我的手动干预。

我使用的任何 pods 实例都不会超过一个,所以这不会成为问题。更改 pod 名称以删除随机部分不是一个选项。

我正在使用 windows 机器来实现此目的。使用 kubectl 替代方案是一种选择。

谁能告诉我这是否可以实现以及如何实现?

您可以在服务或控制器上执行 port-forward,即部署,假设您有服务或控制器,这就足够了。

kubectl port-forward svc/planning-api 8081:80
# or
kubectl port-forward deploy/planning-api 8081:8081

这样就无需知道随机 pod 后缀。

或者,您可以使用一些 shell 基础知识。即 grep 和命令替换:

kubectl port-forward "$(kubectl get pod -o name | grep planning-api)" 8081:8081