我想写一个包装kubectl
仅显示失败的 Pod,这意味着它应该只显示 Ready 列值不相同的项目(即0/1, 0/2, 1/2, 2/3,
etc.)
$ 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
所以从上面的输出我想打印这些失败的豆荚
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
这有效!
$ 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
但如果我有的话那就行不通2/4,0/4,0/5,0/6
等在Ready
专栏,我能做什么grep -vE '1/1|2/2|3/3'
使其适用于所有此类情况
参考:https://github.com/kubernetes/kubernetes/issues/49387 https://github.com/kubernetes/kubernetes/issues/49387