Kubernetes: `kubectl get` рдореЗрдВ рдЙрдиреНрдирдд рдкреЙрдб рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЬреБрд▓ре░ 2017  ┬╖  54рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: kubernetes/kubernetes

рдХреНрдпрд╛ рд╣реБрдЖ :

рдореИрдВ рдЙрди рдкреЙрдбреНрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХрдорд╛рдВрдб рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ

рдЖрдкрдХреЛ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдереА :

рдореИрдВ рдХреБрдЫ рд╡рд┐рдХрд▓реНрдк рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ:

  • рдХреБрдЫ рдЬрд╛рджреВ рдХрд╛ рдЭрдВрдбрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ
  • go/jsonpath . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП kubectl get рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рд╣реЛрдирд╛
  • рдкреЙрдб рдЪрд░рдг Running&Ready рдФрд░ Running рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░реЗрдВ
  • рддреИрдпрд╛рд░ рд╕реНрдерд┐рддрд┐ рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реНрд▓реИрдЧ рдХрд░реЗрдВ

рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ :

kubectl get pods --all-namespaces -o json  | jq -r '.items[] | select(.status.phase != "Running" or ([ .status.conditions[] | select(.type == "Ready" and .state == false) ] | length ) == 1 ) | .metadata.namespace + "/" + .metadata.name'

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

50140 рдЕрдм рдЗрди рдкреЙрдбреНрд╕ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдзреНрд╡рдЬ --field-selector рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

$ kubectl get pods --field-selector=status.phase!=Running

/рдмрдВрдж рдХрд░рдирд╛

рд╕рднреА 54 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

/ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛

/рд╕рд┐рдЧрд░реЗрдЯ рдХреНрд▓рд┐рдХ

рдпрд╣рд╛рдВ рд╡рд╣реА рд╣реИ, рдХреЗрд╡рд▓ рдЧреИрд░ рдЪрд▓ рд░рд╣реЗ рдХрдВрдЯреЗрдирд░ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓рдЧрддрд╛ рд╣реИ ...

рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рдХрд╣ рдкрд╛рдКрдВрдЧрд╛:

kubectl get pods --namespace foo -l status=pending

рдореБрдЭреЗ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .status == "False" рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рдВрд╢реЛрдзрди рдХрд░рдирд╛ рдкрдбрд╝рд╛

kubectl get pods -a --all-namespaces -o json  | jq -r '.items[] | select(.status.phase != "Running" or ([ .status.conditions[] | select(.type == "Ready" and .status == "False") ] | length ) == 1 ) | .metadata.namespace + "/" + .metadata.name'

50140 рдЕрдм рдЗрди рдкреЙрдбреНрд╕ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдзреНрд╡рдЬ --field-selector рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

$ kubectl get pods --field-selector=status.phase!=Running

/рдмрдВрдж рдХрд░рдирд╛

@dixudx

kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.4", GitCommit:"9befc2b8928a9426501d3bf62f72849d5cbcd5a3", GitTreeState:"clean", BuildDate:"2017-11-20T19:11:02Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.0", GitCommit:"0b9efaeb34a2fc51ff8e4d34ad9bc6375459c4a4", GitTreeState:"clean", BuildDate:"2017-11-29T22:43:34Z", GoVersion:"go1.9.1", Compiler:"gc", Platform:"linux/amd64"}
kubectl get po --field-selector=status.phase==Running -l app=k8s-watcher
Error: unknown flag: --field-selector

@asarkar --field-selector v1.9 рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖рд┐рдд рд╣реИ, рдЬреЛ рдЬрд▓реНрдж рд╣реА рд╕рд╛рдордиреЗ рдЖ рд░рд╣рд╛ рд╣реИред

@dixudx рдХреНрд╖реЗрддреНрд░ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдорди рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдЙрди рдкреЙрдбреНрд╕ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬрд┐рдирдореЗрдВ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдХрдВрдЯреЗрдирд░ рд╣реИрдВ рдЬреЛ рддрддреНрдкрд░рддрд╛ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдиреЙрди рд░реЗрдбреА рдкреЙрдб рд╣реИ (kubectl v1.9.1) READY 0/1 :

$ kubectl get pods                                       
NAME          READY     STATUS    RESTARTS   AGE
pod-unready   0/1       Running   0          50s

рдпрд╣ рдкреЙрдб рдЕрднреА рднреА рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдкрдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛:

$ kubectl get pods --field-selector=status.phase!=Running
No resources found.

/рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдирд╛

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдорд┐рд▓рд╛ред
рдореБрдЭреЗ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА:
kubectl рдкреЙрдбреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ --field-selector=status.ready!=True

рдПрдЪрдПрдо, рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдиреЗрд╕реНрдЯреЗрдб рд╕рд░рдгреА рдЖрдЗрдЯрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдЬреИрд╕реЗ рдореИрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ

kubectl get pods --field-selector=status.containerStatuses.restartCount!=0

рд▓реЗрдХрд┐рди рдпрд╣ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ, status.containerStatuses..restartCount рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ Error from server (BadRequest): Unable to find "pods" that match label selector "", field selector "status.containerStatuses..restartCount==0": field label not supported: status.containerStatuses..restartCount рджреЗрддрд╛ рд╣реИ

@artemyarulin status.containerStatuses[*].restartCount==0 . рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

рдзрдиреНрдпрд╡рд╛рдж, рдмрд╕ kubectl v1.9.3/cluster v1.9.2 рдХреЗ рд╕рд╛рде рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рд╡рд╣реА рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ - Error from server (BadRequest): Unable to find "pods" that match label selector "", field selector "status.containerStatuses[*].restartCount!=0": field label not supported: status.containerStatuses[*].restartCount ред рдХреНрдпрд╛ рдореБрдЭрд╕реЗ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рд░рд╣реА рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рдЕрдлрд╕реЛрд╕ рдХреА рдмрд╛рдд рд╣реИ, рд╡рд╣реА рдмрд╛рдд v1.9.4 рдХреЗ рд▓рд┐рдП рд╣реЛрддреА рд╣реИ:

рдореИрдВ рдпрд╣рд╛рдВ рдЬреЛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдореВрд▓ рдпреВрдЖрдИрдбреА рдХреЗ рд╕рд╛рде рд╕рднреА рдлреЛрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реИ ...

$ kubectl get pod --field-selector='metadata.ownerReferences[*].uid=d83a23e1-37ba-11e8-bccf-0a5d7950f698'
Error from server (BadRequest): Unable to find "pods" that match label selector "", field selector "ownerReferences[*].uid=d83a23e1-37ba-11e8-bccf-0a5d7950f698": field label not supported: ownerReferences[*].uid

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдмреЗрд╕рдмреНрд░реА рд╕реЗ рдЗрдВрддрдЬрд╝рд╛рд░ рд╣реИ тАвс┤ЧтАв

--рдлрд╝реАрд▓реНрдб-рдЪрдпрдирдХрд░реНрддрд╛='рдореЗрдЯрд╛рдбреЗрдЯрд╛.рд╕реНрд╡рд╛рдореАрд╕рдВрджрд░реНрдн[ ].uid=d83a23e1-37ba-11e8-bccf-0a5d7950f698'рдлрд╝реАрд▓реНрдб рд▓реЗрдмрд▓ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ: ownerReferences[ ].uid

рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИред

рдкреЙрдбреНрд╕ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ "metadata.name", "metadata.namespace", "spec.nodeName", "spec.restartPolicy", "spec.schedulerName", status.phase ","status.podIP", "status.nominatingNodeName" , "sepc.nodeName" рд╕рдорд░реНрдерд┐рдд рд╣реИрдВред

@migueleliasweb рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдкреЙрдб рдХреЛ рдлрд╛рдЗрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк jq рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

$ kubectl get pod -o json | jq '.items | map(select(.metadata.ownerReferences[] | .uid=="d83a23e1-37ba-11e8-bccf-0a5d7950f698"))'

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЖрдк Kubectl рдХреЗ JSONPath рд╕рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдзрдиреНрдпрд╡рд╛рдж @dixudx ред рд▓реЗрдХрд┐рди рдереЛрдбрд╝рд╛ рдФрд░ рдЕрдЪреНрдЫреЗ рд╕реЗ рд╕рдордЭ рд▓реВрдВред рдЕрдЧрд░ рдореИрдВ рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЛ рдХреБрдЫ рд╣рдЬрд╝рд╛рд░ рдкреЙрдбреНрд╕ рд╡рд╛рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░ рдореЗрдВ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдБ:

  • рдХреНрдпрд╛ APIServer рдЙрди рд╕рднреА рдХреЛ ETCD рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡реЗ рдЗрди-рдореЗрдореЛрд░реА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ?
  • рдпрд╛ рдХреНрдпрд╛ рдореЗрд░рд╛ kubectl рд╕рднреА рдкреЙрдб рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ?
  • рдпрд╛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ ETCD рдХреЗ рдЕрдВрджрд░ рд╣реЛрддреА рд╣реИ? рддреЛ рдХреЗрд╡рд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ?

рдХреНрдпрд╛ APIServer рдЙрди рд╕рднреА рдХреЛ ETCD рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╡реЗ рдЗрди-рдореЗрдореЛрд░реА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ?
рдпрд╛ рдХреНрдпрд╛ рдореЗрд░рд╛ рдХреБрдмреЗрдХреНрдЯрд▓ рд╕рднреА рдкреЙрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдФрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛?
рдпрд╛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ ETCD рдХреЗ рдЕрдВрджрд░ рд╣реЛрддреА рд╣реИ? рддреЛ рдХреЗрд╡рд▓ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд┐рдП рдЧрдП рдкрд░рд┐рдгрд╛рдо рд▓реМрдЯрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ?

@migueleliasweb рдпрджрд┐ Kubectl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп --field-selector рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдПрдкрд┐рд╕рд░реНрд╡рд░ рдХреЗ рдХреИрд╢ рдореЗрдВ рд╣реИред APIServer рдХреЗ рдкрд╛рд╕ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рднреА рдСрдмреНрдЬреЗрдХреНрдЯ (рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ) рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, etcd рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдШрдбрд╝реА рд╣реЛрдЧреАред Etcd рд╕реЗ рджрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рддрдм рдПрдкрд┐рд╕рд░реНрд╡рд░ рдХреЗ рдХреИрд╢реЗ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

--sort-by рдХреЗ рд▓рд┐рдП, рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ Kubectl рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рд╣реИред

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП kubectl get рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднреА рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ delete рдФрд░ describe рдкрд░ рд▓рд╛рдЧреВ рд╣реЛ рд╕рдХреЗ

90d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдореБрджреНрджреЗ рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
/remove-lifecycle stale рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд 30d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдмрд╛рд╕реА рдореБрджреНрджреЗ рд╕рдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрддрдГ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдмрдВрдж рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ /close рдХреЗ рд╕рд╛рде рдХрд░реЗрдВред

рд╕рд┐рдЧ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕/рдЯреЗрд╕реНрдЯ-рдЗрдВрдлреНрд░рд╛ рдФрд░/рдпрд╛ рдлреЗрдЬрдЯрд╛ рдХреЛ рдлреАрдбрдмреИрдХ рднреЗрдЬреЗрдВред
/рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

/рдирд┐рдХрд╛рд▓реЗрдВ-рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

рдореИрдВ рд╕рднреА рдкреВрд░реНрдг-рддреИрдпрд╛рд░ рдкреЙрдбреНрд╕ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП kubectl get po --all-namespaces | grep -vE '1/1|2/2|3/3' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдЖрдИрдПрдордПрдЪрдУ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдлреАрдЪрд░ рд╕реЗ рдЬреНрдпрд╛рджрд╛ рд╣реИ, рдпрд╣ рдХрд╛рдлреА рдЬрд░реВрд░реА рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреНрд░реИрд╢рдмреИрдХрдСрдл рд▓реВрдк рдореЗрдВ рдПрдХ рдкреЙрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ --field-selector=status.phase!=Running рджреНрд╡рд╛рд░рд╛ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИ, рдкреВрд░реЗ field-selector рдЪреАрдЬрд╝ рдХреЛ рдмрд╣реБрдд рдмреЗрдХрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред рдкреЙрдбреНрд╕ рдХреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдЬрд╕рди рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдмрд┐рдирд╛ рд╕рдорд╕реНрдпрд╛ рд╣реЛред

рдкрд╛рд╡рд░рд╢реЗрд▓ рдХреЗ рд╕рд╛рде, рдЗрд╕ рддрд░рд╣, рдЖрдк рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╕рднреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП

Get-PodStatus | ft -autosize

image

рдЙрдиреНрд╣реЗрдВ рдЫрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП

Get-PodStatus | where { ($_.status -eq "Running") -and ($_.state -eq "ready") } | ft -AutoSize

рдПрдлрд╡рд╛рдИрдЖрдИ:

kubectl get pods --field-selector=status.phase!=Succeeded

рдкреВрд░реНрдг рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрд╕реНрдХрд░рдг 217 рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЧрдП рдкреНрд░рддреАрдд рд╣реЛрддреЗ рд╣реИрдВред

рдирд╣реАрдВ:

kubectl get pods --field-selector=status.phase!=Completed рдЬреЛ, рдореЗрд░реЗ рд▓рд┐рдП, рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реЛрдЧрд╛, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ STATUS рдХреЛ 'рдкреВрд░реНрдг' рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рд╕реНрдЯреЗрдЯрд╕.рдлреЗрдЬ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ? рдореИрдВрдиреЗ рдПрдХ рдиреЛрдб рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдФрд░ рд╕рднреА рдкреЙрдбреНрд╕ рдЕрдЬреНрдЮрд╛рдд рдпрд╛ рдиреЛрдбрд▓реЙрд╕реНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╡реЗ рдлрд╝реАрд▓реНрдб-рдЪрдпрдирдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

$ kubectl get pods --field-selector=status.phase=Running --all-namespaces
NAMESPACE     NAME                                          READY   STATUS     RESTARTS   AGE
kube-system   coredns-78fcdf6894-9gc7n                      1/1     Running    0          1h
kube-system   coredns-78fcdf6894-lt58z                      1/1     Running    0          1h
kube-system   etcd-i-0564e0652e0560ac4                      1/1     Unknown    0          1h
kube-system   etcd-i-0af8bbf22a66edc1d                      1/1     Running    0          1h
kube-system   etcd-i-0e780f1e91f5a7116                      1/1     Running    0          1h
kube-system   kube-apiserver-i-0564e0652e0560ac4            1/1     Unknown    0          1h
kube-system   kube-apiserver-i-0af8bbf22a66edc1d            1/1     Running    1          1h
kube-system   kube-apiserver-i-0e780f1e91f5a7116            1/1     Running    1          1h
kube-system   kube-controller-manager-i-0564e0652e0560ac4   1/1     Unknown    1          1h
kube-system   kube-controller-manager-i-0af8bbf22a66edc1d   1/1     Running    0          1h
kube-system   kube-controller-manager-i-0e780f1e91f5a7116   1/1     Running    0          1h
kube-system   kube-router-9kkxh                             1/1     NodeLost   0          1h
kube-system   kube-router-dj9sp                             1/1     Running    0          1h
kube-system   kube-router-n4zzw                             1/1     Running    0          1h
kube-system   kube-scheduler-i-0564e0652e0560ac4            1/1     Unknown    0          1h
kube-system   kube-scheduler-i-0af8bbf22a66edc1d            1/1     Running    0          1h
kube-system   kube-scheduler-i-0e780f1e91f5a7116            1/1     Running    0          1h
kube-system   tiller-deploy-7678f78996-6t84j                1/1     Running    0          1h

рдореИрдВ рдЙрди рдЧреИрд░-рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдкреЙрдбреНрд╕ рдХреЛ рдЗрд╕ рдХреНрд╡реЗрд░реА рдХреЗ рд╕рд╛рде рд╕реВрдЪреАрдмрджреНрдз рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддрд╛ ...

рдХреНрдпрд╛ рдпрд╣ рдлрд╝реАрд▓реНрдб рдЪрдпрдирдХрд░реНрддрд╛ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдкреАрд╡реАрд╕реА рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рд▓рдЧ рд░рд╣рд╛ рд╣реИред

$ kubectl get pvc --field-selector=status.phase!=Bound
Error from server (BadRequest): Unable to find {"" "v1" "persistentvolumeclaims"} that match label selector "", field selector "status.phase!=Bound": "status.phase" is not a known field selector: only "metadata.name", "metadata.namespace"

рдпрд╣ рдлрд╝реАрд▓реНрдб рдЪрдпрдирдХрд░реНрддрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЕрднреА рднреА рдореБрдЭреЗ рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдореИрдВ "рдмреЗрджрдЦрд▓" рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ (рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рдирд╣реАрдВ рдЪрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ)ред рдореИрдВрдиреЗ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд┐рдпрд╛?

рдореИрдВрдиреЗ https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрдврд╝рд╛ рдерд╛, рдлрд┐рд░ рднреА рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

$ kubectl get po --field-selector status.phase!=Running
NAME                        READY     STATUS      RESTARTS   AGE
admin-55d76dc598-sr78x      0/2       Evicted     0          22d
admin-57f6fcc898-df82r      0/2       Evicted     0          17d
admin-57f6fcc898-dt5kb      0/2       Evicted     0          18d
admin-57f6fcc898-jqp9j      0/2       Evicted     0          17d
admin-57f6fcc898-plxhr      0/2       Evicted     0          17d
admin-57f6fcc898-x5kdz      0/2       Evicted     0          17d
admin-57f6fcc898-zgsr7      0/2       Evicted     0          18d
admin-6489584498-t5fzf      0/2       Evicted     0          28d
admin-6b7f5dbb5d-8h9kt      0/2       Evicted     0          9d
admin-6b7f5dbb5d-k57sk      0/2       Evicted     0          9d
admin-6b7f5dbb5d-q7h7q      0/2       Evicted     0          7d
admin-6b7f5dbb5d-sr8j6      0/2       Evicted     0          9d
admin-7454f9b9f7-wrgdk      0/2       Evicted     0          38d
admin-76749dd59d-tj48m      0/2       Evicted     0          22d
admin-78648ccb66-qxgjp      0/2       Evicted     0          17d
admin-795c79f58f-dtcnb      0/2       Evicted     0          25d
admin-7d58ff6cfd-5pt9p      0/2       Evicted     0          4d
admin-7d58ff6cfd-99pzq      0/2       Evicted     0          3d
admin-7d58ff6cfd-9cbjd      0/2       Evicted     0          3d
admin-b5d6d84d6-5q67l       0/2       Evicted     0          12d
admin-b5d6d84d6-fh2ck       0/2       Evicted     0          13d
admin-b5d6d84d6-r4d8b       0/2       Evicted     0          14d
admin-c56558f95-bxxq5       0/2       Evicted     0          7d
api-5445fd6b8b-4jts8        0/2       Evicted     0          3d
api-5445fd6b8b-5b2jp        0/2       Evicted     0          2d
api-5445fd6b8b-7km72        0/2       Evicted     0          4d
api-5445fd6b8b-8tsgf        0/2       Evicted     0          4d
api-5445fd6b8b-ppnxp        0/2       Evicted     0          2d
api-5445fd6b8b-qqnxr        0/2       Evicted     0          2d
api-5445fd6b8b-z77wp        0/2       Evicted     0          2d
api-5445fd6b8b-zjcmg        0/2       Evicted     0          2d
api-5b6647d48b-frbhj        0/2       Evicted     0          9d
api-9459cb775-5cz7f         0/2       Evicted     0          1d

$ kubectl get po --field-selector status.phase=Evicted
No resources found.
$ kubectl get po --field-selector status.phase==Evicted
No resources found.
$ kubectl get po --field-selector status.phase=="Evicted"
No resources found.
$ kubectl get po --field-selector status.phase="Evicted"
No resources found.

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.7", GitCommit:"0c38c362511b20a098d7cd855f1314dad92c2780", GitTreeState:"clean", BuildDate:"2018-08-20T10:09:03Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"10+", GitVersion:"v1.10.6-gke.11", GitCommit:"42df8ec7aef509caba40b6178616dcffca9d7355", GitTreeState:"clean", BuildDate:"2018-11-08T20:06:00Z", GoVersion:"go1.9.3b4", Compiler:"gc", Platform:"linux/amd64"}

рд░рдирд┐рдВрдЧ рдкреЙрдбреНрд╕ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреА рддреИрдпрд╛рд░реА рдЬрд╛рдВрдЪ рдкрд╛рд╕ рдХреА рд╣реИ (рдпрд╛ рдирд╣реАрдВ)ред

рд╕рд╛рде рд╣реА, рдпрд╣ рдХрд╣рд╛рдВ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╣реИ рдХрд┐ рддреИрдпрд╛рд░ рдХреЙрд▓рдо рдореЗрдВ рдорд╛рдиреЛрдВ рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ? (0/1, 1/1)

@рдпреЗ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдмреЗрджрдЦрд▓ рдПрдХ рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИред рдЪрд░рдг рдорд╛рди: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/

рдмреЗрджрдЦрд▓ рдПрдХ рд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/#podstatus -v1-core

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЗрд╕ рд╕рдордп рдлрд╝реАрд▓реНрдб-рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдкреВрдЫрддрд╛рдЫ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

CrashLoopBackOff рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реИред рдкреЙрдб-рдЬреАрд╡рдирдЪрдХреНрд░ рдбреЙрдХреНрд╕ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪрд░рдг?

17:18:13 $ kubectl get pods --field-selector=status.phase!=Running
No resources found.
17:19:32 $ kubectl get pods|grep CrashLoopBackOff
kubernetes-dashboard-head-57b9585588-lvr5t               0/1     CrashLoopBackOff   2292       8d
17:22:45 $ kubectl version
Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-01T20:08:12Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:28:14Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}

90d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдореБрджреНрджреЗ рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
/remove-lifecycle stale рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд 30d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдмрд╛рд╕реА рдореБрджреНрджреЗ рд╕рдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрддрдГ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдмрдВрдж рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ /close рдХреЗ рд╕рд╛рде рдХрд░реЗрдВред

рд╕рд┐рдЧ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕/рдЯреЗрд╕реНрдЯ-рдЗрдВрдлреНрд░рд╛ рдФрд░/рдпрд╛ рдлреЗрдЬрдЯрд╛ рдХреЛ рдлреАрдбрдмреИрдХ рднреЗрдЬреЗрдВред
/рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

/рдирд┐рдХрд╛рд▓реЗрдВ-рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

рд╕реНрдЯрд┐рд▓ рдПрдВрдб рдЗрд╢реНрдпреВ, 2 рд╕рд╛рд▓ рдмрд╛рдж

рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╛рдзрд╛рди рдХреЗ рдЗрддрдиреЗ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рд╣реИред

рдореИрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдБ kubectl get pods --all-namespaces | grep -Ev '([0-9]+)/\1'

рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА kubectl рдореЗрдВ jsonpath рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

рдЙрджрд╛рд╣рд░рдг: рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рдкреЙрдб рдХреЗ namespace рдФрд░ name рдХреЛ Running рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ред

kubectl get pods --all-namespaces -o jsonpath="{range .items[?(@.status.phase == 'Running')]}{.metadata.namespace}{' '}{.metadata.name}{'\n'}{end}"

@albertvaka рдЬреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдПрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ CrashLoopBackOff рдХреЗ рд╕рд╛рде рдПрдХ рдкреЙрдб рд╣реИ

$ kubectl get pods --all-namespaces -o jsonpath="{range .items[?(@.status.phase != 'Running')]}{.metadata.namespace}{' '}{.metadata.name}{'\n'}{end}"
default pod-with-sidecar
my-system glusterfs-brick-0
my-system sticky-scheduler-6f8d74-6mh4q
$ kubectl get pods --all-namespaces | grep -Ev '([0-9]+)/\1'
NAMESPACE       NAME                                        READY     STATUS             RESTARTS   AGE
default         pod-with-sidecar                            1/2       ImagePullBackOff   0          3m
default         pod-with-sidecar2                           1/2       CrashLoopBackOff   4          3m
my-system       glusterfs-brick-0                           0/2       Pending            0          4m
my-system       sticky-scheduler-6f8d74-6mh4q               0/1       ImagePullBackOff   0          9m

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ kubectl get pods . рдХреЗ рд╕рдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ рднреА рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реА

$ kubectl get pods --field-selector=status.phase!=Running,status.phase!=Succeeded --all-namespaces
NAMESPACE       NAME                                READY     STATUS              RESTARTS   AGE
default         pod-with-sidecar                    0/2       ContainerCreating   0          37s
my-system       glusterfs-brick-0                   0/2       Pending             0          3m
my-system       sticky-scheduler-6f8d74-6mh4q       0/1       ImagePullBackOff    0          7m

@albertvaka рдЬреЛ рдирд╣реАрдВ рджрд┐рдЦрд╛рдПрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ CrashLoopBackOff рдХреЗ рд╕рд╛рде рдПрдХ рдкреЙрдб рд╣реИ

рдпрд╣реА рддреЛ рдмрд╛рдд рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореБрдЭреЗ kubectl get pods . рдХреЗ рд╕рдорд╛рди рдЖрдЙрдЯрдкреБрдЯ рд╕реНрд╡рд░реВрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ

рдЖрдк рдЙрди рдХреЙрд▓рдо рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк jsonpath рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

@albertvaka рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдкреЙрдбреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рдмрд┐рдирд╛ рдСрдмреНрд╕рдЯреНрдпреВрд╕ рдЬреЗрд╕рди рдкрде рд╕рд┐рдВрдЯреИрдХреНрд╕ рд▓рд┐рдЦреЗ (рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдХреНрд░реИрд╢рд▓реВрдкрдмреИрдХрдСрдл рдХреЗ рдХрд╛рд░рдг рд╡реИрд╕реЗ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛) рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ . рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ CrashLoopBackOff рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкреЙрдбреНрд╕ рдХреЛ рдПрдХ рдХреНрд╡реЗрд░реА рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ kubectl get pods --field-selector=status.phase!=Running рдмрд╣реБрдд рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд╕рд░рд▓ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдХреБрдмреЗрдХреНрдЯрд▓ рдЧреЗрдЯ рдкреЙрдбреНрд╕ --рдиреЙрдЯ-рд░реЗрдбреА, рдпрд╛ рдХреБрдЫ рд╕реАрдзрд╛ред

рдЕрднреА рднреА рдПрдХ рдореБрджреНрджрд╛ рд╣реИред рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдореИрдВ "рд░рдирд┐рдВрдЧ" рдкреЙрдб рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддрд╛ рд╣реВрдВ:
kubectl get -n kube-system pods -lname=tiller --field-selector=status.phase=Running NAME READY STATUS RESTARTS AGE tiller-deploy-55c564dc54-2lfpt 0/1 Running 0 71m
рдореБрдЭреЗ рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдЯреЗрдирд░реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
kubectl get -n kube-system pods -lname=tiller --field-selector=status.containerStatuses[*].ready!=true

90d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдореБрджреНрджреЗ рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
/remove-lifecycle stale рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд 30d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдмрд╛рд╕реА рдореБрджреНрджреЗ рд╕рдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрддрдГ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдмрдВрдж рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ /close рдХреЗ рд╕рд╛рде рдХрд░реЗрдВред

рд╕рд┐рдЧ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕/рдЯреЗрд╕реНрдЯ-рдЗрдВрдлреНрд░рд╛ рдФрд░/рдпрд╛ рдлреЗрдЬрдЯрд╛ рдХреЛ рдлреАрдбрдмреИрдХ рднреЗрдЬреЗрдВред
/рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

/рдирд┐рдХрд╛рд▓реЗрдВ-рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

kubectl get po --all-namespaces|grep -v Running рдпрд╣ рдиреЙрди рд░рдирд┐рдВрдЧ рдкреЙрдб рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рдореИрдВ рдПрдХ рддреИрдпрд╛рд░ рд░рд╛рдЬреНрдп (рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреИрдпрд╛рд░) рджреНрд╡рд╛рд░рд╛ рдлрд▓реА рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдФрд░ рдХреБрдЫ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрддреНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдпрд╣рд╛рдВ рдПрдХ рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ рдкреНрд░рд╢реНрди рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ (рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ)

90d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдореБрджреНрджреЗ рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
/remove-lifecycle stale рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд 30d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдмрд╛рд╕реА рдореБрджреНрджреЗ рд╕рдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрддрдГ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдмрдВрдж рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ /close рдХреЗ рд╕рд╛рде рдХрд░реЗрдВред

рд╕рд┐рдЧ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕/рдЯреЗрд╕реНрдЯ-рдЗрдВрдлреНрд░рд╛ рдФрд░/рдпрд╛ рдлреЗрдЬрдЯрд╛ рдХреЛ рдлреАрдбрдмреИрдХ рднреЗрдЬреЗрдВред
/рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

/рдирд┐рдХрд╛рд▓реЗрдВ-рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

рдЗрд╕рдореЗрдВ рдореЗрд░реА рдЖрд╡рд╛рдЬ рдЬреЛрдбрд╝рдирд╛ - рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ kubectl get pods --ready рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдПрдХ рдХрджрдо рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬреЛ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рд╕рднреА рдлрд▓реА рддреИрдпрд╛рд░ рди рд╣реЛрдВ (рдФрд░ рдЕрдиреНрдпрдерд╛ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рдмрд╛рдж рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдВ) рдФрд░ grep рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ ... рдЬреЛ kubectl рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдиреЗ рдкрд░ рднрдВрдЧреБрд░ рд╣реЛрддрд╛ рд╣реИ

рдЬреИрд╕рд╛ рдХрд┐ @luvkrai рдиреЗ рдХрд╣рд╛, рдореБрдЭреЗ CrashLoopBackOff рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХрдВрдЯреЗрдирд░ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП grep рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрднреА рдХреИрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореИрдВ рдиреЛрдбрдирд╛рдо рджреНрд╡рд╛рд░рд╛ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реВрдВ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдиреЛрдб рд╣реИ рдЬреЛ рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХрд┐рд╕реА рднреА рддрд░рд╣ рдПрдХ рд╕реБрдкрд░ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИред рдЕрдЬреАрдм рдмрд╛рдд рд╣реИ рдХрд┐ рд╣рдо рдЗрди рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рдХреЛ "STATUS" рдХреЙрд▓рдо рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреВрд▓ рдХреЗ рдмрд┐рдирд╛ рдЙрд╕ рдХреЙрд▓рдо рдкрд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред

oc get pods --all-namespaces -o wide --sort-by=.spec.nodeName | grep -Ev "(Running|Completed)"

рдпрджрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдЧреЛрд▓рд╛рдВрдЧ рдХрд╛ рдЕрдзрд┐рдХ рдЬреНрдЮрд╛рди рд╣реЛрддрд╛, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "STATUS" рдХреЙрд▓рдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХреИрд╕реЗ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдпрд╣рд╛рдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд╕реЗ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
https://github.com/kubernetes/kubectl/blob/7daf5bcdb45a24640236b361b86c056282ddcf80/pkg/describe/describe.go#L679

@ alexburlton-sonocent grep рдХреЗ рдХреБрдЫ рднрдВрдЧреБрд░ рдкрд╣рд▓реБрдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк --no-headers --output custom-columns= рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЖрдк рдХреМрди рд╕реЗ рдХреЙрд▓рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдЙрд╕реА рд╕рдорд╕реНрдпрд╛ рдореЗрдВ рднрд╛рдЧ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рд╕реНрдЯреЗрдЯрд╕ рдХреЙрд▓рдо рдореЗрдВ рдбрд╛рд▓реА рдЧрдИ рд╣реИ рдкреЙрдб рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рднрд░реЛрд╕реЗрдордВрдж рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдХреБрдЫ рдРрд╕рд╛ рд╣реИ рдЬреЛ рдореИрдВ рдЙрди рд╕рднреА рдкреЙрдбреНрд╕ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХрдВрдЯреЗрдирд░ рд╡рд┐рдлрд▓ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ)

kubectl get po --all-namespaces | gawk 'match($3, /([0-9])+\/([0-9])+/, a) {if (a[1] < a[2] && $4 != "Completed") print $0}'
NAMESPACE        NAME                               READY   STATUS      RESTARTS   AGE
blah             blah-6d46d95b96-7wsh6              2/4     Running     0          33h

90d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдореБрджреНрджреЗ рдкреБрд░рд╛рдиреЗ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
/remove-lifecycle stale рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рддрд╛рдЬрд╝рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд 30d рдирд┐рд╖реНрдХреНрд░рд┐рдпрддрд╛ рдХреЗ рдмрд╛рдж рдмрд╛рд╕реА рдореБрджреНрджреЗ рд╕рдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрддрдГ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд░ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЕрднреА рдмрдВрдж рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рдЗрд╕реЗ /close рдХреЗ рд╕рд╛рде рдХрд░реЗрдВред

рд╕рд┐рдЧ-рдЯреЗрд╕реНрдЯрд┐рдВрдЧ, рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕/рдЯреЗрд╕реНрдЯ-рдЗрдВрдлреНрд░рд╛ рдФрд░/рдпрд╛ рдлреЗрдЬрдЯрд╛ рдХреЛ рдлреАрдбрдмреИрдХ рднреЗрдЬреЗрдВред
/рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

/рдирд┐рдХрд╛рд▓реЗрдВ-рдЬреАрд╡рдирдЪрдХреНрд░ рдмрд╛рд╕реА

рдпрд╣рд╛рдБ рджреЗрдЦреЗрдВ

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

sanjana-bhat picture sanjana-bhat  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

arun-gupta picture arun-gupta  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

jadhavnitind picture jadhavnitind  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

montanaflynn picture montanaflynn  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

tbchj picture tbchj  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ