• Docker Kubernetes

    (Intermediate Advanced)

    Duration : 40 hrs

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