如何通过部分名称访问 kubernetes pod?

Pro*_*oli 5 kubernetes kubectl

我经常运行这样的任务:

  • 阅读服务日志 X
  • 在服务内附加一个 shellY

我总是使用我的历史中的一些东西,例如:

kubectl logs `kubectl get pods --no-headers -o custom-columns=":metadata.name" | grep <partial_name>`
Run Code Online (Sandbox Code Playgroud)

或者

kubectl exec -it `kubectl get pods --no-headers -o custom-columns=":metadata.name" | grep <partial_name>` bash
Run Code Online (Sandbox Code Playgroud)

您知道是否kubectl已经为此做好了准备吗?或者我应该创建自己的一组别名?

Ale*_*hin 2

Kubernetes 实例通过标签(键值对)松散耦合。因此,Kubernetes 提供了各种功能,可以帮助您根据标签操作对象集。

如果您有相同服务的多个 Pod,那么它们很可能由某个 ReplicaSet 使用某些特定标签进行管理。如果您运行以下命令,您应该会看到它:

kubectl get pods --show-labels
Run Code Online (Sandbox Code Playgroud)

现在,例如,为了聚合日志,您可以使用标签选择器,例如:

kubectl logs -l key=value
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅: https: //kubernetes.io/docs/concepts/overview/working-with-objects/labels/