Overview
Docker and Kubernetes represent how modern systems are developed and deployed for the highest degree of agility, scalability, and reliability. The first half of this training covers how to use Docker containers for speeding-up development and test cycles. The second half of this training covers how to use Kubernetes with containers for easy and reliable deployment of large-scale distributed systems and help them scale and self-heal as and when needed.
Objectives
At the end of this training, participants will be able to
Prerequisites
Participants should have:
- Understanding of basic LINUX shell commands for
- Navigating through filesystem – ls, cd
- Editing files – vi/vim/nano/emacs or any other LINUX editor
- Executing commands – ps, kill, cat
Course Outline
Docker Container Overview
- What are containers?
- Comparison with Virtual Machines
- Why use containers?
- Docker container and alternatives
- Docker architecture
- Docker registry
Docker Setup
- Install Docker
- Install Docker Compose
- Start the Docker Daemon
- Validate Docker Install
Docker Images
- Dockerfile configuration for image creation
- Building images
- Management of images
- Listing and Removing Images
- Searching for Images
- Downloading Images
- Uploading Images
- Export/Import Images
- Save/Load Images
- Lab Exercise
- Create docker images for
- UI
- Microservices
- Database
- Verify installation of software dependencies
Docker Containers
- Starting containers
- Managing containers
- Listing Containers
- Stopping, Starting, and Removing Containers
- Running Commands in a running container
- Copying files in/out of Containers
- Monitoring container logs
- Networking for containers
- Docker DNS
- Host Network
- Bridge Network
- Lab Exercise
- Run docker containers for
- UI
- Microservices
- Database
- Verify end-to-end container communication
Docker Volumes
- Volumes for persistence
- Managing volumes
- Create volumes
- Remove volumes
- Lab Exercise
- Create volumes for
- DB data
- Application logs
- Verify DB data and application log persistence
Docker Compose
- Working with multiple containers
- Configuring docker-compose
- Managing containers with docker-compose
- Build, Start, Stop, Remove, Log
- Scaling containers
- Lab Exercise
- Start & stop containers
- UI, Microservices, Database
- Verify scalability with multiple instances
Kubernetes Overview
- Docker Swarm for multi-machine deployment
- Kubernetes as the superior alternative
- Kubernetes Architecture
- Cluster
- Control plane
- Nodes
- Cluster Topology
- DNS
- Workloads
- Pods
- Deployment
- Statefulset
- Job
- Services
- Load balancer
- Node port
- Ingress
- Operations
- Autoscaling
- Health Checks
- High Availability
- Rolling upgrades
Kubernetes Setup
- Install kubectl
- Creating Kubernetes cluster on cloud
- Creating cluster nodepool
- Creating container registry on cloud
- Uploading docker images to container registry
- Lab Exercise
- Upload docker images to registry
- UI, Microservices, Database
- Create K8s cluster and nodepool
Kubernetes Configuration
- Service configuration
- Load Balancer
- Node Port
- Workload configuration
- Pods
- Deployment
- Statefulset
- Job
- Volume configuration
- Persistent volumes
- Persistent volume claims
- Config maps
- Secrets
- Resource limits
- Horizontal pod autoscaler
- Lab Exercise
- Create configuration files for:
- Webapp, Microservices, Database
- Environment variables
- Resources
- Liveness & Readiness probes
Kubernetes Deployment & Operations
- Kubectl commands
- Apply/Create/Delete configuration
- Viewing pods and services
- Connecting to pods and containers
- Viewing logs
- Lab Exercise
- Create persistent volumes and claims
- Create/Apply & Delete configurations
- Start/Stop Services
- Load-balancers
- Start/Stop Workloads
- WebApp, Microservices, Database
- Verify autoscaler under user load
- Verify high availability by killing some instances
- Verify rolling upgrade
- Delete nodes and clusters