最近、kubectl フラグについて知りました--field-selector
が、さまざまなオブジェクトで使用しようとするとエラーが発生しました。
例えば :
$ kubectl delete jobs.batch --field-selector status.succeeded==1
Error from server (BadRequest): Unable to find "batch/v1, Resource=jobs" that match label selector "", field selector "status.succeeded==1": field label "status.succeeded" not supported for batchv1.Job
によるとドキュメント、、Supported field selectors vary by Kubernetes resource type.
だからこの動作は予想されていたのだと思います。
面倒なのは、各フィールドを個別に試して、使用できるかどうか確認する必要があることです。
特定のリソース タイプ / リソース バージョン / kubectl バージョンでサポートされているすべてのフィールドを取得する方法はありますか?
ベストアンサー1
あなたの場合の問題は、status.succeeded
の代わりに を誤って使用していることですstatus.successful
。正しいコマンドは
kubectl delete jobs.batch --field-selector status.successful==1
No resources found
すべてのフィールドに関するご質問に関して、私の提案は、コードを深く調べて、各 API の conversion.go で適切なリソース タイプを検索することです。
return scheme.AddFieldLabelConversionFunc(SchemeGroupVersion.WithKind("Job"),
func(label, value string) (string, string, error) {
switch label {
case "metadata.name", "metadata.namespace", "status.successful":
return label, value, nil
default:
return "", "", fmt.Errorf("field label %q not supported for batchv1.Job", label)
}
},
)
}