Azure 按部署名称或标签选择器筛选Kubernetes事件

Azure 按部署名称或标签选择器筛选Kubernetes事件,azure,kubernetes,kubectl,Azure,Kubernetes,Kubectl,运行kubectl get events时,是否有一种方法可以在不知道pod名称的情况下按事件进行筛选 我正在尝试使用,它仅限于将参数传递给kubectl get events,但不允许子shell和管道,因此grep和awk不可用 我尝试使用kubectl get events--field selector involvedObject.name=my microservice name,这在一定程度上(即,对于部署资源)有效,但对于POD无效 使用kubectl get events--f

运行
kubectl get events
时,是否有一种方法可以在不知道pod名称的情况下按事件进行筛选

我正在尝试使用,它仅限于将参数传递给
kubectl get events
,但不允许子shell和管道,因此
grep
awk
不可用

我尝试使用
kubectl get events--field selector involvedObject.name=my microservice name
,这在一定程度上(即,对于部署资源)有效,但对于POD无效

使用
kubectl get events--field selector app.kubernetes.io/name=my microservice name
不会返回任何结果,尽管按照
kubectl description pod-pod name
中所示配置了该标签

理想情况下,如果有一种使用通配符的方法,例如
kubectl get events--field selector involvedObject.name=*my microservice name*
,将是最好的情况

非常感谢您的帮助


谢谢

我没有azure环境,但我可以在播客上显示事件

master $ kubectl get events --field-selector involvedObject.kind=Pod
LAST SEEN   TYPE     REASON      OBJECT      MESSAGE
<unknown>   Normal   Scheduled   pod/nginx   Successfully assigned default/nginx to node01
5m13s       Normal   Pulling     pod/nginx   Pulling image "nginx"
5m8s        Normal   Pulled      pod/nginx   Successfully pulled image "nginx"
5m8s        Normal   Created     pod/nginx   Created container nginx
5m8s        Normal   Started     pod/nginx   Started container nginx
为什么我知道
involvedObject.kind
有效,因为它的json输出显示键是存在的

        "involvedObject": {
            "apiVersion": "v1",
            "fieldPath": "spec.containers{nginx}",
            "kind": "Pod",
            "name": "nginx",
            "namespace": "default",
            "resourceVersion": "604",
            "uid": "7ebaaf99-aa9c-402b-9517-1628d99c1763"
        },
您需要尝试的另一种方法是
jsonpath
,以json格式获取输出

kubectl get events -o json

然后将json复制粘贴到,并使用

Thank@BMW进行操作。如果pod名称的末尾有这样的随机字符,这也会起作用吗?``$kubectl get pods NAME READY STATUS重新启动运行0 1m的my-microservice-NAME-4098151155-494nl 1/1。这是我遇到的最大问题,因为额外的字符以及无法在Azure任务中指定它们。我可能需要切换到PowerShell或Bash。它应该可以工作。
字段选择器
正在查找
involvedObject.name
的键,如果您担心它,它不会介意随机字符,您可以在它上添加配额或双配额似乎对我不起作用:
$kubectl get events
events:
`从消息中键入原因年龄``-`11m正常杀人pod/temp-centos-db2-connectivity-test-5b6fcb7d98-rn5mn停止容器centos
$kubectl获取事件--字段选择器involvedObject.kind=pod,involvedObject.name=temp-centos-db2-connectivity-test
在默认名称空间中找不到任何资源。
$
您的POD似乎没有在
默认名称空间中运行,然后您可以再添加一个筛选器
involvedObject.namespace=xxxx
它们实际上正在运行
默认名称空间。如果我使用全名作为字段选择器的一部分,我可以返回结果:
--字段选择器involvedObject.name=temp-centos-db2-connectivity-test-5b6fcb7d98-rn5mn
。我们还有
app.kubernetes.io/name/temp-centos-db2-connectivity-test
标签,但没有任何明显的区别。
kubectl get events -o json