我只需打印Kubernetes Events的特定字段,按特定字段排序。
这是为了帮助我收集有关我的命名空间的遥测和分析
我怎么能这样做?
答案 0 :(得分:10)
按照命令执行。
它打印按创建时间戳排序的事件。
用户go-template
也可以过滤掉kubernetes-event
对象的特定字段。
kubectl get events --sort-by='.metadata.creationTimestamp' -o 'go-template={{range .items}}{{.involvedObject.name}}{{"\t"}}{{.involvedObject.kind}}{{"\t"}}{{.message}}{{"\t"}}{{.reason}}{{"\t"}}{{.type}}{{"\t"}}{{.firstTimestamp}}{{"\n"}}{{end}}'
答案 1 :(得分:2)
如果您不介意将输出视为JSON:
kubectl get event -o json | jq '.items |= sort_by(.lastTimestamp)'
这需要jq。
答案 2 :(得分:1)
func tokenSourceFromJSON(ctx context.Context, jsonData string, scopes ...string) (oauth2.TokenSource, error) {
creds, err := google.CredentialsFromJSON(ctx, []byte(jsonData), scopes...)
if err != nil {
return nil, err
}
return creds.TokenSource, nil
}
答案 3 :(得分:1)
我正在使用以下命令对时间戳进行排序
kubectl get event --all-namespaces --sort-by='.metadata.managedFields[0].time'
要过滤掉信息,您当然可以将其与@suryakrupa描述的go-template或@Chris Stryczynski描述的jq组合
答案 4 :(得分:0)
这是我使用的Bash函数:
function oc-events {
{
echo $'TIME\tNAMESPACE\tTYPE\tREASON\tOBJECT\tSOURCE\tMESSAGE';
oc get events -o json "$@" \
| jq -r '.items | map(. + {t: (.eventTime//.lastTimestamp)}) | sort_by(.t)[] | [.t, .metadata.namespace, .type, .reason, .involvedObject.kind + "/" + .involvedObject.name, .source.component + "," + (.source.host//"-"), .message] | @tsv';
} \
| column -s $'\t' -t \
| less -S
}
您可以像oc-events -A
,oc events -n foo
等那样使用它。