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



我经常运行以下任务:

  • 读取服务X的日志或
  • 在服务Y内连接外壳

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

kubectl logs `kubectl get pods --no-headers -o custom-columns=":metadata.name" | grep <partial_name>`

kubectl exec -it `kubectl get pods --no-headers -o custom-columns=":metadata.name" | grep <partial_name>` bash

你知道kubectl是否已经为此做好了准备吗?还是应该创建自己的别名集?

Kubernetes实例通过标签(键值对(松散耦合。正因为如此,Kubernetes提供了各种功能,可以帮助您对基于标签的对象集进行操作。

如果你有几个相同服务的pod,很有可能它们是由某个ReplicaSet使用某个特定标签管理的。如果你运行,你应该看到它

kubectl get pods --show-labels

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

kubectl logs -l key=value

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

添加到我的.zshconfig

sshpod () {
kubectl exec --stdin --tty `kubectl get pods --no-headers -o custom-columns=":metadata.name" | grep ${1} | head -n 1` -- /bin/bash
}

使用

sshpod podname

这个

  1. 查找所有pod
  2. greps需要名称
  3. 选择第一个
  4. ssh进入吊舱

您可以通过部署/服务等访问pod:

kubectl exec -it svc/foo -- bash
kubectl exec -it deployment/bar -- bash

Kubernetes会选择一个符合标准的pod并将您发送到它。

您可以启用shell自动完成。Kuectl为Bash和Zsh提供了这种支持,这将节省您大量的输入(您将使用TAB来获得建议/完成(。

Kuberentes文档提供了一组关于如何在可选kubectl配置下启用自动完成的信息。它涵盖了Linux上的Bash、MacOS上的Bassh和Zsh。

相关内容

  • 没有找到相关文章

最新更新