If you want to jump straight to the 60-day plan click here.
Why should I learn about stateful apps in Kubernetes?
Kubernetes is an orchestration platform that has become a standard for deploying and managing containerized applications, including both stateless and stateful applications. Here are a few reasons why it’s important to learn about stateful applications in Kubernetes:
Complexity of State Management: Stateful applications manage data that persists and evolves over time. This could be user data, application settings, or any information that is stored and retrieved between sessions. Managing the persistent state is more complex than managing stateless applications, where each request is handled independently. Understanding stateful applications in Kubernetes will help you deal with this complexity.
Persistent Storage Needs: Stateful applications often require storage that persists beyond the lifecycle of individual containers. Kubernetes provides robust primitives such as Persistent Volumes (PV), Persistent Volume Claims (PVC), and StatefulSets for managing the lifecycle and storage of stateful applications. By understanding these, you can manage stateful apps more effectively.
Increasing Demand: Many modern software systems involve stateful components such as databases, caches, and message queues. These components are increasingly being run on Kubernetes, which means understanding stateful applications in Kubernetes is a valuable skill in today’s job market.
Resiliency and High Availability: Stateful applications introduce additional concerns regarding data consistency and replication. To build highly available, resilient systems, you need to understand how to handle these concerns in a Kubernetes environment.
Broad Applicability: Although the principles are taught using Kubernetes, they apply broadly to distributed systems. So, the understanding gained can be used outside of just Kubernetes.
Learning about stateful applications in Kubernetes can help you better design, deploy, and manage applications, ensuring they run reliably and efficiently. It’s a valuable addition to the skillset of any software engineer, systems administrator, or DevOps professional.
Deep dive into Stateful Apps in Kubernetes for 60 days
I drafted the following plan and will add links to each topic as I progress.
Week 1-2: Introduction to stateful applications and StatefulSets
Day 1-3: Basics of stateful applications
- Understand what stateful applications are
- Learn about the challenges in running stateful applications
Day 4-6: StatefulSets in Kubernetes
- Learn about the StatefulSet API object
- Understand how StatefulSets manage the deployment and scaling of a set of Pods
Day 7-14: Hands-on with StatefulSets
- Deploy a simple stateful application using StatefulSet
- Learn about stable network IDs and persistent storage
- Practice scaling the StatefulSet and understand how it differs from Deployments
Week 3-4: Deep dive into persistent storage
Day 15-18: Persistent Volumes and Persistent Volume Claims
- Understand Persistent Volumes (PV) and Persistent Volume Claims (PVC)
- Learn about different types of volumes in Kubernetes
Day 19-22: Storage Classes
- Understand what Storage Classes are and how to use them
- Learn about dynamic volume provisioning
Day 23-28: Hands-on with persistent storage
- Setup and use a Persistent Volume
- Deploy a stateful application that uses a Persistent Volume Claim
- Work with different types of volumes
- Work with Storage Classes and dynamic volume provisioning
Week 5-6: Advanced topics and real-world scenarios
Day 29-32: Handling application state with Operators
- Learn about Kubernetes Operators
- Understand how Operators can be used to manage stateful applications
Day 33-36: Running databases on Kubernetes
- Understand the challenges of running databases on Kubernetes
- Learn about strategies to run databases, both relational (like PostgreSQL, MySQL) and NoSQL (like MongoDB, Cassandra)
Day 37-42: High availability and disaster recovery
- Learn about high availability for stateful applications in Kubernetes
- Understand backup strategies, failover, and disaster recovery
Week 7-8: Case studies and best practices
Day 43-47: Study real-world case studies of stateful applications in Kubernetes
- Learn about best practices for running stateful applications
- Understand common problems and how to troubleshoot them
Day 48-53: Kubernetes Networking
- Deep-dive into Service, Ingress, and Network Policies
- Understand how they affect stateful applications
Day 54-60: Reflect and Demonstrate
- Reflect on the entire learning journey
- Create a final project showcasing your skills with stateful applications
- Document what you’ve learned and make plans for further studies