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