### What would you like to be added?

when apiserver cache is not ready,  the List request with resourceVersion=0 fetch data from the apiserver cache,  don't directly obtain from etcd.

[staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher.go](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher.go#L773)
```
func (c *Cacher) GetList(ctx context.Context, key string, opts storage.ListOptions, listObj runtime.Object) error {
	recursive := opts.Recursive
	resourceVersion := opts.ResourceVersion
	pred := opts.Predicate
	if shouldDelegateList(opts) {
		return c.storage.GetList(ctx, key, opts, listObj)
	}

	listRV, err := c.versioner.ParseResourceVersion(resourceVersion)
	if err != nil {
		return err
	}
	if listRV == 0 && !c.ready.check() {
		// If Cacher is not yet initialized and we don't require any specific
		// minimal resource version, simply forward the request to storage.
		return c.storage.GetList(ctx, key, opts, listObj)
	}
}
```

### Why is this needed?

In our cluster, the number of some resources like pods are very large(300k+), the number of node is 7k+. the apiserver cache sometime accumulating lag, the kubelet List request of get pod  directly obtain from etcd. It consumes lots of cpu & memory that's not expected. i want List request to fetch data from the apiserver cache like [ConsistentListFromCache](https://github.com/kubernetes/kubernetes/pull/118508) feature gate
when apiserver cache is not ready,  the List request with resourceVersion=0 fetch data from the apiserver cache
This is a GitHub Issue
repo:kubernetes
owner:kubernetes
Title : when apiserver cache is not ready,  the List request with resourceVersion=0 fetch data from the apiserver cache
Issue date:

--- start body ---
### What would you like to be added?

when apiserver cache is not ready,  the List request with resourceVersion=0 fetch data from the apiserver cache,  don't directly obtain from etcd.

[staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher.go](https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apiserver/pkg/storage/cacher/cacher.go#L773)
```
func (c *Cacher) GetList(ctx context.Context, key string, opts storage.ListOptions, listObj runtime.Object) error {
	recursive := opts.Recursive
	resourceVersion := opts.ResourceVersion
	pred := opts.Predicate
	if shouldDelegateList(opts) {
		return c.storage.GetList(ctx, key, opts, listObj)
	}

	listRV, err := c.versioner.ParseResourceVersion(resourceVersion)
	if err != nil {
		return err
	}
	if listRV == 0 && !c.ready.check() {
		// If Cacher is not yet initialized and we don't require any specific
		// minimal resource version, simply forward the request to storage.
		return c.storage.GetList(ctx, key, opts, listObj)
	}
}
```

### Why is this needed?

In our cluster, the number of some resources like pods are very large(300k+), the number of node is 7k+. the apiserver cache sometime accumulating lag, the kubelet List request of get pod  directly obtain from etcd. It consumes lots of cpu & memory that's not expected. i want List request to fetch data from the apiserver cache like [ConsistentListFromCache](https://github.com/kubernetes/kubernetes/pull/118508) feature gate
--- end body ---
