我想编写一个包装器kubectl来仅显示失败的 pod,这意味着它应该只显示 Ready 列值不相同的项目(即0/1, 0/2, 1/2, 2/3,等)
$ kubectl get pods --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
default pod-with-sidecar 1/2 ErrImagePull 0 39s
kube-system calico-node-chcqq 2/2 Running 2 7d
kube-system calico-policy-controller-6449789dd6-z5t5j 1/1 Running 0 7d
kube-system etcd 1/1 Running 0 7d
kube-system kube-apiserver 1/1 Running 2 7d
kube-system kube-controller-manager 1/1 Running 0 7d
kube-system kube-dns-5c76d6bddb-8zhmq 3/3 Running 1 7d
kube-system kube-proxy-xq8j6 1/1 Running 0 7d
kube-system kube-scheduler- 1/1 Running 0 7d
kube-system tiller-deploy-5b7cb9cfd7-j725s 1/1 Running 0 7d
my-system glusterfs-brick-0 0/2 Pending 0 3m
my-system sticky-scheduler-6d968f8d74-xvjqn 0/1 ImagePullBackOff 0 4m
Run Code Online (Sandbox Code Playgroud)
所以从上面的输出我想打印这些失败的豆荚
NAMESPACE NAME READY STATUS RESTARTS AGE
default pod-with-sidecar 1/2 ErrImagePull 0 4m
my-system glusterfs-brick-0 0/2 Pending 0 56s
my-system sticky-scheduler-6d968f8d74-xvjqn 0/1 ImagePullBackOff 0 8m
Run Code Online (Sandbox Code Playgroud)
这有效!
$ kubectl get pods --all-namespaces | grep -vE '1/1|2/2|3/3'
NAMESPACE NAME READY STATUS RESTARTS AGE
default pod-with-sidecar 1/2 ErrImagePull 0 4m
my-system glusterfs-brick-0 0/2 Pending 0 56s
my-system sticky-scheduler-6d968f8d74-xvjqn 0/1 ImagePullBackOff 0 8m
Run Code Online (Sandbox Code Playgroud)
但是,如果我2/4,0/4,0/5,0/6在Ready列中有等等,grep -vE '1/1|2/2|3/3'它将不起作用,我该怎么做才能使其适用于所有此类情况
MWZ*_*MWZ 10
您可以使用以下方法来做到这一点--field-selector:
kubectl get pods --all-namespaces --field-selector=status.phase!=Running
Run Code Online (Sandbox Code Playgroud)
使用 GNU grep:
| grep -Ev '([0-9]+)/\1'
Run Code Online (Sandbox Code Playgroud)
输出:
NAMESPACE NAME READY STATUS RESTARTS 年龄 默认 pod-with-sidecar 1/2 ErrImagePull 0 39s 我的系统 glusterfs-brick-0 0/2 待定 0 3m 我的系统粘性调度程序 6d968f8d74-xvjqn 0/1 ImagePullBackOff 0 4m
| 归档时间: |
|
| 查看次数: |
3458 次 |
| 最近记录: |