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 ๐ฅ