Как искать по произвольным полям, используя селектор полей с kubectl? - PullRequest
3 голосов
/ 12 апреля 2019

В этом doc поддерживаемые поля не перечислены, и я не могу найти их должным образом. С некоторыми испытаниями и экспериментами я заметил следующее:

Это хорошо работает и находит несколько пакетов:

kubectl get pods --field-selector=spec.restartPolicy=Never

Но это приводит к ошибке:

kubectl get pods --field-selector=spec.serviceAccount=default

No resources found.
Error from server (BadRequest): Unable to find {"" "v1" "pods"} that match label selector "", field selector "spec.serviceAccount=default": field label not supported: spec.serviceAccount

Так как это решено? Я знаю, что могу найти с JSONPath, но это AFAIK фильтрации на стороне клиента.

1 Ответ

2 голосов
/ 12 апреля 2019

Вы можете выбрать serviceAccount, используя следующий запрос:

kubectl get pods --field-selector=spec.serviceAccountName="default"

--field-selector в настоящее время выбирает только значения, основанные на равенстве, и в этом тоже имеет очень ограниченную поддержку для выбора модуля на основе полей. Следующие поля поддерживаются --field-selector:

metadata.name
metadata.namespace
spec.nodeName
spec.restartPolicy
spec.schedulerName
spec.serviceAccountName
status.phase
status.podIP
status.nominatedNodeName

Как вы уже знаете, вам нужно полагаться на jsonpath, чтобы выбрать любое другое поле, кроме полей выше.

Вы можете перейти по следующей ссылке, чтобы узнать больше:

https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/core/v1/conversion.go#L160-L167] 1

...