Фильтрация событий Kubernetes по имени развертывания или метке выбора - PullRequest
0 голосов
/ 08 марта 2020

При запуске kubectl get events, есть ли способ фильтрации по событиям, не зная имени модуля?

Я пытаюсь сделать это с Azure Pipeline's Kubectl задача , которая ограничена передачей аргументов kubectl get events, но не допускает подоболочек и каналов, поэтому grep и awk недоступны.

Я пытался использовать kubectl get events --field-selector involvedObject.name=my-microservice-name , который работает в некоторой степени (т. е. для ресурса развертывания), но не для модулей.

Использование kubectl get events --field-selector app.kubernetes.io/name=my-microservice-name не возвращает результатов, несмотря на то, что эта метка настроена, как показано в kubectl describe pod <my-microservice-name>-pod-name.

В идеале, если есть способ использовать символы подстановки, такие как kubectl get events --field-selector involvedObject.name=*my-microservice-name*, будет лучшим вариантом.

Любая помощь очень ценится.

Спасибо!

1 Ответ

1 голос
/ 08 марта 2020

У меня нет среды 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 и involvedObject.name.

master $ kubectl run redis --image=redis --generator=run-pod/v1
master $ kubectl run nginx --image=nginx --generator=run-pod/v1
master $ kubectl get events --field-selector involvedObject.kind=Pod,involvedObject.name=nginx
LAST SEEN   TYPE     REASON      OBJECT      MESSAGE
<unknown>   Normal   Scheduled   pod/nginx   Successfully assigned default/nginx to node01
16m         Normal   Pulling     pod/nginx   Pulling image "nginx"
16m         Normal   Pulled      pod/nginx   Successfully pulled image "nginx"
16m         Normal   Created     pod/nginx   Created container nginx
16m         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 в https://jsonpath.com/ и поиграйте с методами jsonpath

...