DEV Community

Cover image for Full Kubernetes Course [FREE] πŸŽ‰
TechWorld with Nana
TechWorld with Nana

Posted on • Updated on

Full Kubernetes Course [FREE] πŸŽ‰

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)

Collapse
 
amplanetwork profile image
Ampla Network

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.

Collapse
 
techworld_with_nana profile image
TechWorld with Nana

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! πŸ™

Collapse
 
jamescoder profile image
James Coder

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?

Collapse
 
nghiemthu profile image
Thu Nghiem

I rarely comment on anything and not a Kubernetes guy. I just want to say you are amazing to make these free courses πŸ‘

Collapse
 
gautamkrishnar profile image
Gautam Krishna R • Edited

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....

Collapse
 
xos73 profile image
Xos73

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).

Collapse
 
phyberapex profile image
PhyberApex

Thank you so much for this I finally start getting a grip on k8s thanks to you!

Collapse
 
mauri69dev profile image
Maurizio

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!!!!
Image description

Collapse
 
ramnikov profile image
Andrey Ramnikov

Thank a lot. very good course:-)

Collapse
 
saltarin profile image
saltarin

nice video from tech lead

Collapse
 
sandeshahir profile image
Sandesh Ahir

Thank you so much... Great πŸ”₯