Pre - requisite :
- Minimum 1 year experience in Linux administration basics like installing applications, managing processes and services, networking basics and knowing virtualization basics will be an advantage
Course Content
Docker – 10Hrs
1. Docker Introduction – (1hr)
- What is Docker?
- Why Docker?
- Containerization v/s Virtualization
- Docker Architecture
- Understanding the Docker components
- Docker Terminologies
- Docker Internals
2. Docker Installation – (1hr)
- Docker Editions
- Hardware and Software Requirements
- Installing Docker
- Docker Config Files and Settings
- Lab: Installing Docker on Linux
3. Managing Container Lifecycle –(2hrs)
- Creating, Starting and Listing Containers
- Attaching and Detaching from Container
- Fetching Container details using “inspect”
- Executing Commands inside a Container
- Pause, Stop, Start, Restart and Kill a Container
- Container Metrics via stats
- Limiting Memory and CPU utilization
- Storage Utilization of a Container
- Expose Container Application using Host Port
- Lab: Managing Container Lifecycle
4. Working with Docker Images –(2hrs)
Searching, Filtering and Pulling Images
- Docker Image save/load
- Commit Container State
- Understanding Docker Image Directives
- Understanding the use of Base Images
- Building Custom Images using Dockerfile
- Understanding Image Layers
- What is “FROM scratch”?
- RUN vs CMD
- COPY vs ADD
- Publishing the Custom Image
- Flatten an Image using export/import
- Tagging Images
- Working with Docker Hub
- Pushing Docker Images to Docker Hub
- Lab: Working with Docker Images
- Lab: Building Custom Images Lab: Working with Docker Hub
5. Docker Volume Management – (2hrs)
- Understanding need of Volume service in Docker
- Understanding various Volume Plug-ins
- Create and Manage Volumes
- Start a container with a Volume
- Populate data in a Volume using a Container
- Use a read-only Volume
- Migrating Volumes between Containers
- Lab: Creating and Manage volumes
6. Docker Networking – (2hrs)
- Understanding various Network Plug-ins
- Understanding the default Docker Networking
- Working with Bridge Network
- Working with Host and None Networks
- Lab: Managing Docker Networking
Kubernetes – (30 Hrs)
1. Kubernetes Platform – (1hr)
- Orchestration and Various Tools
- History of Kubernetes
- Features of Kubernetes
- What Kubernetes is not!
- Kubernetes Versions
2. Kubernetes Architecture –(1hr)
- Kubernetes Terminology
- Kubernetes Components
- Kubernetes Cluster Architecture
- Understanding Kubernetes Master Components
- Kube-apiserver
- ETCD
- Kube-scheduler
- Kube-controller
- Kube-DNS
- Understanding Kubernetes Node Components
- Kube-proxy
- Kubelet
- Container Runtime
- Understanding the difference between the master and worker nodes
3. Kubernetes Setup and Validation –(4 hr)
- Understanding different tools for deploying Kubernetes Cluster
- Release Binaries, Provisioning and Types of Clusters
- Building the Kubernetes Cluster using kind
- Installing Kubernetes Master and Nodes
- Configuring Secure Cluster Communications
- Testing the Cluster
- Lab: Deploying Kubernetes Cluster using Kubeadm
- Lab: Adding Nodes to Kubernetes Cluster
4. Working with Pod – (4hrs)
- Pod Overview
- Creating a Pod with imperative syntax
- Creating a Pod with declarative syntax
- Reading the Pod's information and metadata
- Listing the objects in JSON or YAML
- Backing up your resource using the list operation
- Getting more information from the list operation
- Entering a container inside a Pod
- Deleting a Pod
- Understanding Pod Lifecycle
- Multi-container Pod
- Concrete scenarios where you need multi-container Pods
- When not to create a multi-container Pod
- Creating a Pod made up of two containers
- What happens when Kubernetes fails to launch one container in a Pod?
- Deleting a multi-container Pod
- Understanding the Pod deletion grace period
- Accessing a specific container inside a multi-container Pod
- Running commands in containers
- Overriding the default commands run by your containers
- Static Pod
- Init Containers
- Sidecar container pattern
- Labelling and annotating the Pods
- What are labels and why do we need them
- What are annotations and how do they differ from labels
- Adding a label
- Listing labels attached to a Pod
- Adding or updating a label to/of a running Pod
- Deleting a label attached to a running Pod
- Adding an annotation
- Lab: Imperative Commands and Formatting Output with kubectl
- Lab: Working with Single Container Pods
- Lab: Creating multi container Pod
- Lab: Creating init container Pod
- Lab: Working with Static Pod
- Lab: Working with label and selector
5. Application Lifecycle Management using Kubernetes Controllers –(4hrs)
Controllers:
- Creating a ReplicaSet object
- Testing the behavior of ReplicaSet
- Scaling ReplicaSet
- Deleting a ReplicaSet object
- Creating a Deployment object
- Exposing Deployment Pods using Service objects
- Scaling a Deployment object
- Deleting a Deployment object
- How does a Deployment object manage revisions and version rollout?
- Updating a Deployment object
- Rolling back a Deployment object
- Deployment object best practices
- Use declarative object management for Deployments
- Do not use the Recreate strategy for production workloads
- Do not create Pods that match an existing Deployment label selector
- Carefully set up your container probes
- Use meaningful and semantic image tags
- Migrating from older versions of Kubernetes
- Lab: Deploying Application using Replication Controller
- Lab: Deploying Application using Replica Set
- Lab: Rolling Updates and Rollbacks using Deployment
- Lab: Deploying Application using Daemon Set
- Lab: Deploying StatefulSet Application
- Lab: Deploying Multi-Tier Application
- Lab: working with Job and CronJob
6. Logging and Monitoring – (2hrs)
- Describe Resources
- Pod/container logs
- Metric Server & top command
- Events
- Lab: Working on Logs and Events
- Lab: Working with Metric Server
- Lab: working with HPA
7. kubernetes Networking and Service – (3hrs)
- Cluster Communications
- Pod and Node Networking
- Container Network Interface (CNI)
- Service Networking
- ClusterIP, NodePort & Load Balancer
- Understanding Pod IP assignment
- Understanding Pod IP assignment is dynamic
- Never hardcode a pod's IP addresses in your application code
- Understanding how services route traffic to Pods
- Understanding how DNS names are generated for services
- Understanding the different types of services
- Why do you need ClusterIP services?
- ClusterIP services to expose my Pods?
- Listing ClusterIP services
- Creating ClusterIP services using the imperative way
- Describing ClusterIP services
- Creating ClusterIP services using the declarative way
- Deleting ClusterIP services
- Understanding headlessservices
- Why do you need NodePort services?
- Understanding NodePort
- Making sure NodePort works as expected
- Listing NodePort services
- Adding more Pods to NodePort services
- Describing NodePortservices
- Deleting NodePort services
- NodePort or kubectl port-forward?
- Ingress Rules
- Cluster DNS
- Lab: Exposing Applications using various types of Services
- Lab: Install and Configure Ingress Controller to expose nginx based Service
8. Working with Kubernetes Scheduler (Advance Scheduling) (3hrs)
- Pod Scheduling within the Kubernetes Cluster
- Configuring the Kubernetes Scheduler
- Running Multiple Schedulers for Multiple Pods
- Node Name Taints, Tolerances, Node Selector, labels & Selectors
- Taint vs Tolerations vs Node Affinity/AntiAffinity
- Scheduling Pods with Resource Limits and Label Selectors
- Displaying Scheduler Events
9. Storage – (3hrs)
- Managing Data in the Kubernetes Cluster
- EmptyDir, hostPath, PV, PVC, StorageClass
- Volume Access Modes
- Applications with Persistent Storage
- ConfigMaps
- Secrets
- Lab: Working with Kubernetes Volume Service
- Lab: Configuring Dynamic Volume Service
- Lab: Working with ConfigMaps and Secrets
10. Application Health – (3hrs)
- Application LivenessProbe
- What is LivenessProbe and why do you need it?
- Implementing LivenessProbe
- Application ReadinessProbe
- Why do you need ReadinessProbe?
- Implementing ReadinessProbe
- Using ReadinessProbe and LivenessProbe together
- Application Startupprobe
- Lab: Working with LivenessProbe and ReadinessProbe
11. Kubernetes in Azure (2Hrs)
- Introduction to AKS
- Create Azure Container Registry
- Deploy a sample app in AKS
