DEV Community

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

Posted on • Edited 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 ๐Ÿ”ฅ