Description
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, or terminated
- 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 <servername> 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