Kubernetes, also known as K8s, is an open source container orchestration platform that automates many of the manual processes involved when deploying and managing containerized applications.
Why we need Kubernetes? π€
After you have learnt Docker π³ you can start creating very complex applications with tens or even hundreds of containers, with containers talking to each other and interacting in some way.
And these containers would need to be deployed across multiple servers in a distributed way.
So you can imagine the overhead and effort you would have, if you had to manage these hundreds of containers manually without automation. π€¦ββοΈ
Every time containers crash or the communication between them isnβt working across multiple servers, you would have to interfere and fix the problem.
So it would be great to have a tool that will automatically fix such issues and recover the application state. That tool is a container orchestration tool. βοΈ
And Kubernetes is one of the most popular container orchestration tools out there.
Getting started with Kubernetes π
In this course, weβll go through K8s use cases, you will learn how K8s actually works and how you can use it by showcasing all the main components. In addition we will go through a practical use case, where we will deploy a simple application setup in K8s cluster locally to get your first hands-on experience π©π»βπ» with K8s and feel more confident about the tool.
We will also go into more advanced and important concepts like organizing your components using Namespaces, how to make your App available from outside using K8s Ingress or how to persist data in K8s using Volumes.
The full course is available here: π€
β¬β¬β¬β¬β¬β¬ COURSE OVERVIEW π β¬β¬β¬β¬β¬β¬
π₯ 1. Introduction to Kubernetes - What is Kubernetes π₯
- What problems does Kubernetes solve?
- What features do container orchestration tools offer?
π₯ 2. Main K8s Components explained π₯
K8s has tons of components, but most of the time you are only working with a handful of them. This part shows you step by step how each component helps you to deploy your application and what the role of each of those components is.
- Node and Pod
- Service and Ingress
- ConfigMap and Secret
- Volumes
- Deployment and StatefulSet
π₯ 3. Kubernetes Architecture π₯
In this part you will learn about Master and Worker Nodes, which make up the Kubernetes cluster.
- Worker Nodes
- Master Nodes
- Api Server
- Scheduler
- Controller Manager
- etcd - the cluster brain
π₯ 4. Minikube and kubectl - Local Setup π₯
- What is Minikube?
- What is kubectl? K8s Command Line Tool
- Install minikube and kubectl
- Create and start a Minikube cluster
π₯ 5. Main Kubectl Commands π₯
- Get status of different components
- Create a pod/deployment
- Layers of abstraction
- Change the pod/deployment
- Debugging pods
- Delete pod/deployment
- CRUD by applying configuration file
π₯ 6. K8s YAML Configuration File π₯
In this part you'll learn the syntax and contents of K8s configuration file , which is the main tool for creating and configuring components in a Kubernetes cluster.
- 3 parts of a Kubernetes config file (metadata, specification, status)
- format of configuration file
- blueprint for pods (template)
- connecting services to deployments and pods (label & selector & port)
- demo
π₯ 7. Complete Demo Project π₯
Instead of creating each component separate without context, this part goes through a complete application setup using several Kubernetes components. It's a hands-on, practical tutorial of using the different Kubernetes Components together, which will give you a big picture.
Overview of the demo:
- Create MongoDB Pod
- Create MongoExpress Pod
- Create ConfigMap for DB URL
- Create Secret for DB Credentials
- Create MongoDB Internal Service to connect to the Pod
- Deployment Service and Config Map
- Create MongoExpress External Service to connect from the Browser
π₯ 8. Organizing your components with K8s Namespaces π₯
- What is a Namespace?
- 4 Default Namespaces
- Create a Namespace
- Why to use Namespaces? 4 Use Cases
- Characteristics of Namespaces
- Create Components in Namespaces
- Change Active Namespace
π₯ 9. Kubernetes Ingress explained π₯
- What is Ingress? External Service vs. Ingress
- Example YAML Config Files for External Service and Ingress
- Internal Service Configuration for Ingress
- How to configure Ingress in your cluster?
- What is Ingress Controller?
- Environment on which your cluster is running (Cloud provider or bare metal)
- Demo: Configure Ingress in Minikube
- Ingress Default Backend
- Routing Use Cases
- Configuring TLS Certificate
π₯ 10. Helm - Package Manager π₯
- Package Manager and Helm Charts
- Templating Engine
- Use Cases for Helm
- Helm Chart Structure
- Values injection into template files
- Release Management / Tiller (Helm Version 2!)
π₯ 11. Persisting Data in Kubernetes with Volumes π₯
- The need for persistent storage & storage requirements
- Persistent Volume (PV)
- Local vs Remote Volume Types
- Who creates the PV and when?
- Persistent Volume Claim (PVC)
- Levels of volume abstraction
π₯ Deploying Stateful Apps with StatefulSet π₯
- What is StatefulSet? Difference of stateless and stateful applications
- Deployment of stateful and stateless apps
- Deployment vs StatefulSet
- Pod Identity
- Scaling database applications: Master and Worker Pods
- Pod state, Pod Identifier
- 2 Pod endpoints
π₯ Kubernetes Services π₯
- What is a Service in K8s and when we need it?
- ClusterIP Services
- Service Communication
- Multi-Port Services
- Headless Services
- NodePort Services
- LoadBalancer Services
βΊ Get 30% off - with this code: UDEMY_NANA_NOV2020: Udemy course here
βΊ Kubernetes 101: Compact and easy-to-read ebook bundle π
It's a handy way to quickly look something up or refresh your knowledge at work and use it as your cheatsheet π
Like, share and follow me π for more content:
Top comments (11)
I tried many times to learn Kube without success... Until someone told me about what you did. Thank you so much for this incredible work.
Wow! Didn't think that this course is THAT helpful for you guys! π Thank you so much for your great feedbacks, appreciate it very much! π
Hi Nana,
Can you please let me know. If we want to map ip address of external server as entry point in Ingress host How can be do that?
I rarely comment on anything and not a Kubernetes guy. I just want to say you are amazing to make these free courses π
I am using k8s on a daily basis and I can confirm that your videos are one of the best k8s tutorials i had ever watched....
Hi Nana,
I started to fiddle around with K8S and built my cluster on 3 Raspberry Pi 4 nodes. Was still missing the link between the different k8s components and resources untill I came across your youtube course. Wanted to congratulate you with keeping the "red ribbon" intact during your teachings and hands-on demos. Great course!!!
Small remark: I'm running my k8s cluster on 3 rpi4 nodes. With that HW your demo with mongoDB is not working. When I wanted to deploy the mongodb deployment, it went into CrashLoopBackOff. Checking the logs of the crashing pod revealed that the pulled version (4.4) expected at least armv8.2 (while raspberry pi 4 has armv8). Seems they implemented this in Mar 2021 (jira.mongodb.org/browse/SERVER-image: mongo:4.2-rc55178).
Solution: either compile it yourself (seems to take several hours when running it on a rpi4...) or downgrade to version 4.2-rc (pin the version in the yaml file 'image: mongo:4.2-rc'). I opted for the last option (as it is for demo purpose).
Thank you so much for this I finally start getting a grip on k8s thanks to you!
Hello Nana, many thanks for sharing your fantastic and very very clear course. I spent near 1 hour without breath listening Your details on K8s topics. I would like to note that at minute 55 seconds 10, the slide I put as attachment , one very little error, to improve your beautiful course. All the best!!!!
Thank a lot. very good course:-)
nice video from tech lead
Thank you so much... Great π₯