What you'll learn:
- How Should a Kubernetes Cluster Be Managed?
- Making a Kubernetes Cluster from Scratch "The Hard Way"
- How to Secure a Kubernetes Cluster
- Real-time project: Use the Jenkins CI/CD pipeline to deploy an application to a Kubernetes cluster.
- Architecture of the Kubernetes Cluster
- Microservices Vs. Monolithic
- Components of Control Plane - API Server, Etcd, Scheduler, Controller Manager
- Setup of Kubernetes Cluster AWS Environment
- Types of Cluster
- Installation of Minikube Server
- Labels & Selectors
- Scaling & Replication
- ReplicationController & ReplicaSet
- Deployment & Rollback
- Kubernetes Networking
- Volumes in Kubernetes Cluster
- Persistent Volumes
- Beginner level introduction to Docker
- Learn practical techniques for creating and deploying containers on Docker platform.
- Build Docker images using Dockerfiles & containers with hands-on exercises
- Manage Data & networking in Docker
- Use Docker compose to create multi-container applications
- Practical approach to learn Docker for the Absolute Beginner
- Namespaces in Kubernetes
- Resource Management for Pods and Containers
- Kubernetes HPA - Horizontal Pod Autoscaler
- Kubernetes Jobs, Init container
- Quizzes
Course Description:
Section 1: Kubernetes Introduction
What is Kubernetes
Why do we use Kubernetes?
Monolithic approach for developing applications.
Microservices Vs. Monolithic
Kubernetes Gateway API
Evolution of Containers, Dockers & VMs
Microservices running as containers
Kubernetes - Orchestration or container management tool
Features of Kubernetes
Section2: Architecture of the Kubernetes Cluster
The architecture of the Kubernetes Cluster
Understand architecture with various examples
Working with Kubernetes
Roles of Master Node
Components of Control Plane (Master Node)
API Server
Etcd
Scheduler
Controller Manager
Kubelet
Service Proxy
POD
Container Engine - Docker, Containerd, or Rocket
Section 3: Setup of Kubernetes Cluster AWS Environment
Setup Kubernetes Master and Worker Node on AWS Environment
Update the System
Install HTTP package
Docker Installation
Setup open GPG Key
Install the Kubernetes packages
Bootstrapping the master node
Configure Worker Nodes
Section 4: Kubernetes Concepts - Cluster types, Minikube Server, YAML, Pod, Kubelet, Ports
Kubernetes Cluster
Types of Cluster
All-in-one (Single Node Cluster)
Single-node, single-master, and multi-worker node clusters.
Single-Node etcd, multi-Master, and Multi-Worker Node Cluster.
About Minikube
Installation of Minikube Server
Create the first POD using manifest file written in YAML Language
Kubelet commands
Check logs of the container
Create multiple containers in a POD
Kubernetes Annotations
Variables in the YAML file
Defining Ports
Section 5: Kubernetes Pod Restart Policy
Overview of Pod Restart Policies
Three restart policies: Always, OnFailure & Never
Lab - Create a pod definition with ‘restartPolicy’ as Always
Lab - Create a pod definition with ‘restartPolicy’ as OnFailure
Lab - Change the pod definition a bit to check the working of OnFailure
Lab - 4. Create a pod definition with ‘restartPolicy’ as Never
Section 6: Labels & Selectors
Labels & Selectors
Commands for managing labels & selectors
Declarative vs. Imperative Kubernetes commands
Two types Selectors
Equality Based
Set based
Practice Lab - Labels & Selectors
Practice Lab - Assign a label to the running POD
Practice Lab - Search the pod with equality & set-based
Node Selector
Lab - Create a pod on a specific node
Section 7: Scaling & Replication
What is ReplicationController?
Features of RC
Practice Lab - Create Replicas of POD using RC
Practice Lab - Recreate the POD, if it crashes, fails, orterminated
Scale up & scale down the POD as the load increases
Practice Lab - Scale up & scale down the POD
What is ReplicaSet?
Difference between ReplicationController & ReplicaSet
Practice Lab - Create Replicas of POD using ReplicaSet
Practice Lab - Use set-based match expressions in RS
Section 8: Deployment & Rollback
Overview of Deployment and Rollback
Manifest for a POD with one container using the deployment object.
Lab: Launch an application with two PODs using the deployment object.
Lab: Using the deployment object, upgrade an application from version 1 to version 2.
Lab: Roll back the application to the previous version.
Lab: Roll back the application to any specific version.
Section 9: Kubernetes Networking
Overview of Kubernetes Networking
Container communication via localhost
Practice Lab - container-to-container communication on specific port within a pod
Pod-to-pod communication
Practice Lab - Pod-to-pod communication
Object - Service
Why service is required?
Service type
Cluster IP
NodePort
LoadBalancer
Headless
Practice Lab - Access the appl/service using cluster IP within the cluster using the service object
Practice Lab - Access the appl/service using NodePort outside the cluster using the service object
Section 10: Volumes in Kubernetes Cluster
Overview of Volumes in Kubernetes Cluster.
Volume types
EmptyDir
hostpath
Practice Lab: Create a POD with attached volume using volumes.
Practice Lab - Attach a shareable volume for containers within a POD.
Practice Lab - Attach a shareable volume for containers within a POD as well as with the host or worker node.
Practice Lab - EmptyDir
Practice Lab - hostpath
Section 11: Persistent Volumes
Overview of Persistent volumes
PersistentVolumeClaim - PVC
Configure a Volume using AWS ElasticBlockStore
Configure a Pod to Use a PersistentVolume for Storage
Practice Lab - Create a PersistentVolume
Practice Lab - Create a PersistentVolumeClaim
Practice Lab - Create a Pod to Use a PersistentVolume for Storage
Section 12: Namespaces in Kubernetes
Overview of Namespaces
Lab - Create new namespaces
Lab - Create Pod and Service in Namespaces
Lab - Switch between Kubernetes namespaces
Lab - Create pods in the namespace.
Lab - delete a Kubernetes namespace
Section 13: Resource Management for Pods and Containers
Overview of resource management for pods, containers
Lab resource-based quota
Lab - Apply pod quotas to namespaces
Requests and Limits
Lab - Set requests and limits in each container running in a pod.
Lab - Apply quotas to namespaces
Lab - Create pods with resources in namespaces
Section 14: Kubernetes HPA - Horizontal Pod Autoscaler
Kubernetes autoscaling basics
Lab: Configuring Minikube Cluster
Lab: Installation of Metric Server
Lab: Creating pods using deployment objects
Lab: Configure HPA - Horizontal Pod Autoscaler
Lab: A new pod is created automatically if the CPU load reaches a threshold value
Lab: A new pod is automatically terminated if the CPU load falls below the threshold value
Section 15: Kubernetes Jobs, Init container
Overview of Jobs and cron job pattern
Lab: Create a Pod Using Job Object
Lab: Run Multiple Pods in Parallel Using Job Object
Lab: Create jobs on a repeating schedule using CronJob
About Init Container and their use cases
Lab: Init Container
Section 16: Introduction to docker containers
Introduction about containers
Installation of Docker
Create a first container
Fetch container image from docker hub
Run a container in the background, interactive with tty terminal
Delete exited dockers using a single command
Get complete details of a running container
Check logs & stats of a running container
Port forwarding
exec, rename & restart the running container
Attach a container
Kill/stop, pause/unpause a container
Create, start, the cp command
Export/Import Command in Docker
Create an image from a running container
Pull a specific version image from the Docker hub
Image history, inspect & remove the image
Section 17: Dockerfile
Overview of Dockerfile, layered architecture
Create centos 7 images using Dockerfile
Overview of LABEL, ENV & RUN Command
Overview of WORKDIR
Copy, and add commands with their differences
Create a user account with a password using dockerfile
CMD Command
SSH to a container
Overview of EXPOSE Command
ENTRYPOINT in Dockerfile
Section 18: Manage Data in Docker
Overview of managing data in Docker
Volumes
Create & attach a volume to a container
Delete volumes from the Docker host machine
Bind mounts
Section 19: Networking in Docker
Bridge networking
Run containers in custom-created bridge networking
Enable communication between dockers belonging to different bridge network
DNS enabled with custom bridge networking
Host networking
None networking
Connect one or more networks to a running container
Create a private docker registry
How to allow images in the private registry for non-secure network
Section 20: Docker Compose
Overview of docker-compose
Docker compose Installation
Create my first docker-compose file
Create the docker-compose file in JSON language
Learn basic commands
docker-compose up
docker-compose down
docker-compose create
docker-compose start
docker-compose stop
docker-compose rm
docker-compose images
docker-compose ps
docker-compose pause
docker-compose unpause
docker-compose kill
docker-compose port port
docker-compose logs
docker-compose exec
docker-compose run
docker-compose scale
docker-compose top
Attach a volume & port mapping using docker-compose
Build a custom image using docker-compose
Section 21: Real-time project - Deploy an application to a Kubernetes cluster using Jenkins CI/CD pipeline, Ansible, Docker, Git, Webhook etc.