Note that one can also use a lightweight Kubernetes distribution such as Minikube [1] during development so that the workflow is similar for both development and production.
But this often not necessary, because if you can run a production Kubernetes cluster, you can also run a dev Kubernetes cluster, so no need to run a local Kubernetes distribution.
My workflow typically looks like this:
1. Run app locally during dev without Docker
2. Build and run Docker image locally with Docker compose
> if you can run a production Kubernetes cluster, you can also run a dev Kubernetes cluster
When you have many developers, the cost for maintaining one dev cluster per developer quickly goes up. One cluster for all developers can be used for testing/staging, but not for development.
Minikube is a replacement for your step (2), except you can now use your existing tools (kubectl etc) instead of docker-compose.
My workflow typically looks like this:
1. Run app locally during dev without Docker
2. Build and run Docker image locally with Docker compose
3. Deploy to development Kubernetes cluster
4. Deploy to production Kubernetes cluster