特定のリソースタイプに対して kubectl でサポートされているフィールドセレクターのリストを見つけるにはどうすればよいですか? 質問する

特定のリソースタイプに対して kubectl でサポートされているフィールドセレクターのリストを見つけるにはどうすればよいですか? 質問する

最近、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 で適切なリソース タイプを検索することです。

例:バッチジョブ 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)
            }
        },
    )
}

おすすめ記事