Local Django on Kubernetes with Minikube
medium.com
medium.com
Right now, minikube supports rkt and docker. And the systemd integration of rkt is pretty nifty.
If not what other local deployment method do you suggest that works good? (All other methods seem to be deprecated)
You can take a look at the k8s docs about running locally. There's a script that brings up a cluster with a configurable amount of nodes on linux.
[0] https://github.com/kubernetes/kubernetes/blob/v1.5.0/docs/de...
[1] https://github.com/kubernetes/kubernetes/blob/v1.5.0/hack/lo...
What are the other advantages of running on k8?
* Containers are an easy way to package an application so that it's easy to run anywhere, even if it has weird dependencies
* Eventually, you'll want to run containers on more than one machine for performance/reliablity
* Kubernetes makes it easy to schedule containers on a lot of machines, have them talk to each other over a virtual network easily, and provides a toolkit to solve a bunch of other random things you'll probably want (image updates, secret management, namespaces, authentication, jobs, etc)
So the biggest reason to run Django on Kubernetes is you're running other stuff on it, or just because it's one of the many ways to run a containerized app. Sure, you could write a Compose file and just run Docker on a single VM, but you're probably going to quickly want to add other apps or run on more than one machine, at which point you are likely going to look at Kubernetes, Swarm, maybe Mesos/Marathon, or roll-your-own container orchestrator.
Running Django on Kubernetes makes a lot of sense. Running something like Postgres on Kubernetes is the part that is admittedly more questionable. It's mostly just done for fun/as an exercise. Long term, databases will probably run in containers since everything else is. Short-term, for a serious project, I would probably just use a managed database service.
- Redundancy. Platforms like k8s and other PaaS can distribute instances of the same apps to multiple hosts / availability zones.
- Zero downtime deployment. Spin up the new version in a container, have both previous and new version running concurrently, then start routing traffic to the new app.
- Standardization. Settling on a container type to run all your apps makes for great dev and ops relationships.
- Immutable code. Know exactly which version is running in production and be confident it can't be changed manually.