2016-08-30 4 views
6

Рассматривая http://kubernetes.io/docs/user-guide/labels/#selecting-sets-of-nodes, можно выбрать определенный диапазон стручков на основе меток. Но в моем случае я хочу выбрать все контейнеры на одном узле, но я не хочу помечать каждый блок на соответствующем узле.Kubertnetes API - получает Pods на определенных узлах

Я что-то пропустил из документации или просто невозможно выбрать по узлу? Если я:

kubectl --server="<SERVER>" --namespace=<NS> get pods -o wide | head 
    NAME READY  STATUS    RESTARTS AGE  NODE 

Может любой из этих заголовка можно использовать в качестве селектора? Если да, то как это сделать с kubectl bust наиболее важно, как это сделать с API?

Заранее спасибо

ответ

3

То, что вы хотите, поддерживается в Kubernetes API на стороне сервера, как это:

curl --cacert ca.crt --cert apiserver.crt --key apiserver.key https://<server>:<port>/api/v1/namespaces/<namespace>/pods?fieldSelector=spec.nodeName%3Dsomenodename 

Однако этот вариант селектор поля не встроен в kubectl еще: https://github.com/kubernetes/kubernetes/pull/50140

+0

FYI. Это теперь объединено. – deedubs

13

Пример сортировки по стручки NodeName:

kubectl get pods -o wide --sort-by="{.spec.nodeName}" 

или по количеству перезапусков

kubectl get pods --sort-by="{.status.containerStatuses[:1].restartCount}" 

Пример фильтрации по NodeName с использованием --template флаг:

$ kubectl get nodes 

NAME       STATUS      AGE 
ip-10-0-90-30.ec2.internal Ready      2d 
ip-10-0-90-35.ec2.internal Ready      2d 
ip-10-0-90-50.ec2.internal Ready,SchedulingDisabled 2d 
ip-10-0-91-60.ec2.internal Ready      2d 
ip-10-0-91-65.ec2.internal Ready      2d 


$kubectl get pods --template '{{range .items}}{{if eq .spec.nodeName "ip-10-0-90-30.ec2.internal"}}{{.metadata.name}}{{"\n"}}{{end}}}{{end}}' 

filebeat-pezch 
app-5xole 
node-exporter-6kfs8 
prometheus-0 
sso-359976856-wu8zt 
+0

Это interestin g, что можно сортировать по этим данным, но единственное, что можно отфильтровать с помощью селектора, это то, что находится на «.spec.selector». – Regnoult

+0

Фильтры выполняются на стороне сервера, сортировка на стороне клиента –

+0

Между двумя концами есть дополнительный '}'. Должно быть '{{end}} {{end}}' – noah

1

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

kubectl get pods -o wide --all-namespaces | grep <YOUR-NODE> 
Смежные вопросы