Kubernetes deployment best practices for Python applications
Nabarun Pal (~palnabarun) |
Kubernetes is an open-source container orchestration platform designed for deploying workloads and massively scaling them. It gives you a lot of flexibility to manage and scale your workloads.
With great power comes great responsibility
However, as the above quote says, with that flexibility, there are a lot of ways someone can make mistakes while deploying their workloads.
Kubernetes provides you with a lot of tunable to make your applications:
- configurable with proper configuration management
- conform to resource limits like memory, CPU or GPU
- running your application with different security contexts
- making them resilient to infrastructure failures like server downtimes
- distributed amongst the server pool
- terminate gracefully on planned downtimes
- respond to health checks related to readiness or liveness
Developers or Platform Engineers who want to make their applications Kubernetes Native. All of the content in this talk is in public domain and can very well be researched by oneself. The motivation of this talk is to introduce to Kubernetes constructs serving as a starter to the world of making their services behave like a herd of destroyable workloads.
- Who am I? (1 min)
- Who is this talk for? (1 min)
- A brief introduction to the Kubernetes Architecture (3 mins)
- Navigating through basic Kubernetes primitives (3 mins)
- Making application Kubernetes native (12 mins)
a. Configuration (2 mins)
b. Resource management (2 mins)
c. Proactive monitoring of readiness and deadlocks (2 mins)
d. Security (2 mins)
e. Resiliency to downtimes (2 mins)
- Reducing failure rates by spreading across failure domains (2 mins)
- [Buffer time for topic spillovers] (5 min)
- Q&A (5 min)
The talk will mostly revolve around actual code.
Knowledge of designing Python web applications with frameworks like FastAPI, Flask or Django.
The code mentioned in this talk will be available at https://github.com/palnabarun/python-best-practices-kubernetes [WIP]
The slides will be available shortly at https://www.nabarun.in/talks/2020/python-kubernetes-best-practices [WIP]
Nabarun Pal works as an Infrastructure Engineer at Clarisights. He has had worn several hats ranging from software to data pipelines to infrastructure in the industry after graduating from IIT Roorkee. Nabarun actively contributes to diverse open source communities like Kubernetes, Python, etc. He also participates in conducting lectures on Free and Open Source Software at Durgapur Linux Users' Group, aka, DGPLUG. Nabarun speaks about technology and his experiences at conferences and meetups in India and abroad. Nabarun also holds a Certified Kubernetes Administrator (CKA) certification.
Nabarun, in his free time, currently contributes to a variety of subprojects in the Kubernetes ecosystem notable of which are leading the Kubernetes 1.19 Release Enhancements Team and maintaining the release of Kubernetes Python Client along with taking care of adding features and fixing bugs in the Python client. In addition to that, he is also one of the Kubernetes SIG Contributor Experience Asia Pacific Coordinators and New Membership Coordinators.
Nabarun can be reached out on the following:
- Website: https://naba.run
- GitHub: https://github.com/palnabarun
- LinkedIn: https://linkedin.com/in/palnabarun
- Twitter: https://twitter.com/theonlynabarun
- Previous Talks: https://naba.run/talks
Some previous session videos:
- Building Microservices with firefly - PyCon India 2017
- Python: A language impacting every sphere of life! - Times Of India Times Techies webinar
(None of the above links require a login to view)