Local KIND development fails because imagePullPolicy=Always
What happened:
When running OpenKruise locally with kind using locally-built images (for example openkruise/kruise-manager:test), pods go into ImagePullBackOff because the manifests set imagePullPolicy: Always. Even after loading the image into the kind nodes (kind load docker-image ...), Kubernetes still attempts to pull from the remote registry and fails.
What you expected to happen:
When a developer loads a locally-built image into kind, the cluster should use the local image (or at least not always try remote pull). Local dev manifests should allow IfNotPresent so local development works without pushing images.
How to reproduce it (as minimally and precisely as possible):
-
Build image locally.
-
Create a kind cluster.
-
Install CRDs (if not already):
-
Deploy the current default manifests:
-
Load the locally-built image into kind:
kind load docker-image openkruise/kruise-manager:test --name kind
-
Observe pods in kruise-system:
kubectl get pods -n kruise-system
You’ll likely see ImagePullBackOff / ErrImagePull events complaining about failing to pull from registry.
Anything else we need to know?:
- The error surfaces for local dev workflows (kind). It’s not a production runtime bug; production may intentionally use
Always.
Environment:
- Kubernetes version: v1.22.15
- Others: macOS, Docker Desktop, kind
Local KIND development fails because imagePullPolicy=Always
What happened:
When running OpenKruise locally with kind using locally-built images (for example
openkruise/kruise-manager:test), pods go intoImagePullBackOffbecause the manifests setimagePullPolicy: Always. Even after loading the image into the kind nodes (kind load docker-image ...), Kubernetes still attempts to pull from the remote registry and fails.What you expected to happen:
When a developer loads a locally-built image into kind, the cluster should use the local image (or at least not always try remote pull). Local dev manifests should allow
IfNotPresentso local development works without pushing images.How to reproduce it (as minimally and precisely as possible):
Build image locally.
Create a kind cluster.
Install CRDs (if not already):
Deploy the current default manifests:
Load the locally-built image into kind:
Observe pods in
kruise-system:You’ll likely see
ImagePullBackOff/ErrImagePullevents complaining about failing to pull from registry.Anything else we need to know?:
Always.Environment: