2016-08-30 22 views
6

Nhìn vào http://kubernetes.io/docs/user-guide/labels/#selecting-sets-of-nodes có vẻ như có thể chọn một phạm vi nhất định các nhóm dựa trên nhãn. Nhưng trong trường hợp của tôi, tôi muốn chọn tất cả các nhóm trên một nút nhưng tôi không muốn gắn nhãn mỗi nhóm trên nút tương ứng của chúng.Kubertnetes API - nhận được Pod trên các nút cụ thể

Tôi có thiếu thứ gì đó từ tài liệu hoặc không thể chọn bằng nút? Nếu tôi làm:

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

Có thể sử dụng bất kỳ tiêu đề nào trong số này làm công cụ chọn không? Nếu có làm thế nào để làm điều đó với bust kubectl quan trọng nhất, làm thế nào để làm điều đó với API?

Cảm ơn trước

Trả lời

3

Những gì bạn muốn được hỗ trợ trong Kubernetes API server-side như thế này:

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

Tuy nhiên tùy chọn đó chọn lĩnh vực không được xây dựng vào kubectl nào: https://github.com/kubernetes/kubernetes/pull/50140

+0

FYI Điều này hiện đã được hợp nhất – deedubs

13

Ví dụ sắp xếp vỏ bằng nodeName:

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

hoặc bằng số lần khởi động lại

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

Ví dụ lọc theo nodeName sử dụng cờ --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

Điều thú vị là có thể sắp xếp theo những dữ liệu này nhưng điều duy nhất có thể được lọc theo công cụ chọn là ".spec.selector". – Regnoult

+0

Các bộ lọc được thực hiện phía máy chủ, phân loại là phía máy khách –

+0

Có một '}' phụ giữa hai đầu. Nên là '{{end}} {{end}}' – noah

1

Bạn cũng có thể truy vấn cho tất cả các vỏ một một nút với lệnh sau

kubectl get pods -o wide --all-namespaces | grep <YOUR-NODE> 
Các vấn đề liên quan