Course Code: 19066

Docker and Kubernetes Fundamentals Training

Class Dates:
10/6/2021
11/22/2021
9/1/2021
Length:
3 Days
Cost:
$1495.00
Class Time:
Technology:
Network
Delivery:
Instructor-Led Training, Virtual Instructor-Led Training

Overview

  • Course Overview
  • Students in this Docker and Kubernetes training course will gain a foundation of the Docker and Kubernetes technologies. They will be introduced to the core components of both Docker and Kubernetes as they apply to both development and production/staging environments.
  • Audience
  • Developers, system architects, technical team leads, systems administrators, and DevOps professionals who want to understand and use Kubernetes in cloud environments.

Prerequisites

  • Proficiency with the Linux Command Line Interface (CLI)

    Broad understanding of Linux system administration: Linux file system, networking, and bash scripting.

    Computer programming concepts and methodologies. Full code examples for the course are provided in the Python and Java programming languages.

Course Details

  • YOU WILL LEARN
  • Learn the fundamental uses of container technology and the architectural principles of how to apply containers to technical challenges.
  • Create containers with both packaged solutions and custom software.
  • Use the Docker and Kubernetes CLI environments to deploy solutions in local (Docker) and cluster (Kubernetes) environments.
  • Learn how stateful services – such as databases, streaming solutions , and other specialty applications – can be deployed in highly-available configurations with redundancy and service-discovery/load
  • Show how other components – can be used to integrate services within the Kubernetes platform.
  • Explore how Docker and technologies such as Jenkins can be used to continuously test and build containers based on changes to source code.
  • Docker and Linux Container Technology: Introduction and Use-Cases
  • Modern Infrastructure Terminology
  • Virtualization, Hypervisors, Hypervisor Types
  • Type 1 & 2 Hypervisors, Type 1 vs Type 2 Processing
  • Paravirtualization, Virtualization Qualities (1/2) (2/2)
  • Disadvantages of Virtualization, Containerization
  • Where to Use Virtualization and Containerization
  • Containerization: High-Level
  • Popular Containerization Systems
  • What are Linux Containers, Docker, OpenVZ, Solaris Zones (Containers)
  • Container Orchestration Tools
  • Docker Swarm, Kubernetes, Mesos and Marathon
  • Docker Use-Cases, Microservices and Containers / Clusters
  • Docker in Action
  • Docker Basics, Where Can I Run Docker?
  • Installing Docker Container Engine, Docker Toolbox
  • What is Docker?, Docker Architecture and Diagram
  • Docker Images, Docker Containers, Docker Integration
  • Docker Services, Docker Application Container Public Repository
  • Docker Run Command, Starting, Inspecting, and Stopping Docker Containers
  • Docker Volume, Dockerfile, Docker Compose
  • Using Docker Compose, Dissecting docker-compose.yml
  • Specifying services
  • Dependencies between containers
  • Injecting Environment Variables
  • Managing Docker State
  • State and Data in Docker
  • Volumes, More About Volumes, Uses for Volumes
  • Working With Volumes, Create Volume
  • Bind Mounts, Using Bind Mounts
  • tmpfs Mounts, Storing Data in the Container
  • Storage Drivers
  • Remote Data Storage, Networking
  • The Default Bridge Network
  • User-Defined Bridge Networks
  • Docker Network Commands
  • Creating a User-Defined Bridge Network
  • Open Container Initiative and Container Runtime Interface
  • Open Container Initiative (OCI)
  • Docker, Docker Engine Architecture
  • runC, containerd, containerd Benefits
  • CRI-O, CRI-O Components
  • Kubernetes and CRI-O
  • Using Container Runtimes with Minikube
  • Docker Runtime and Kubernetes
  • Putting Things Together
  • Kubernetes Architecture
  • Kubernetes Basics
  • What is Kubernetes?
  • Container Orchestration, Architecture Diagram
  • Components, Kubernetes Cluster
  • Master Node, Kube-Control-Manager
  • Nodes, Pod, Using Pods to Group Containers
  • Label, Label Syntax, Label Selector
  • Annotation
  • Persistent Storage
  • Resource Quota
  • Interacting with Kubernetes
  • Working with Kubernetes
  • Installation, Startup, Kubernetes Tools
  • Kubectl Command Line Interface
  • API Proxy, Dashboard
  • Kubernetes Component Hierarchy
  • Deployments, Deployment Commands
  • Updating Deployments
  • Network Considerations
  • Services
  • Namespaces, Labels
  • Annotations
  • Other Useful Commands
  • Kubernetes Workload
  • Kubernetes Workload, Managing Workloads
  • Imperative commands, Imperative Object Configuration
  • Declarative Object Configuration, Configuration File Schema
  • Understanding API Version, Obtaining API Versions
  • Stateless Applications, Sample Deployment Manifest File
  • Working with Deployments, Stateful Applications
  • Sample Stateful Manifest File, Working with StatefulSet
  • Jobs, Sample Job Manifest File
  • Working with Batch Job, DaemonSets
  • Sample Daemon Manifest File
  • Rolling Updates
  • Scheduling and Node Management
  • Kubernetes Scheduler
  • Skip Kubernetes Scheduler, Scheduling Process
  • Scheduling Process - Predicates and Priorities
  • Scheduling Algorithm
  • Kubernetes Scheduling Algorithm
  • Scheduling Conflicts
  • Label Selectors
  • Node Affinity and Anti-affinity
  • Node Affinity Example
  • Node Antiaffinity Example
  • Taints and Tolerations
  • Taints and Tolerations - Example
  • Managing Networking
  • Kubernetes Networking Components
  • The Kubernetes Network Model
  • Networking Scenarios, Container-Container Communication
  • Pod-Pod Communication, 1.3 Pod-Service Communication
  • External-Service Communication
  • Accessing Applications
  • Useful Commands
  • Container Network Interface (CNI)
  • What is CNI’s Role?
  • CNI Configuration Format
  • Sample CNI Configuration
  • Running the CNI Plugins
  • Managing Persistent Storage
  • Storage Methods, Container OS file system storage
  • Docker Volumes, Kubernetes Volumes
  • K8S Volume Types, Cloud Resource Types
  • configMaps, Creating configMaps from Literals
  • Using configMaps, emptyDir, Using an emptyDir Volume
  • Other Volume Types, Persistent Volumes
  • Creating a Volume, Persistent Volume Claim
  • Persistent Volume, Pod that uses Persistent Volume
  • Secrets, Creating Secrets from Files
  • Creating Secrets from Literals, Using Secrets
  • Security Context
  • Security Context Usage
  • Working with Helm
  • What is Helm?, Installing Helm
  • Helm and KUBECONFIG, Helm Features
  • Helm Terminology, Searching for Charts with helm CLI
  • Adding Repositories, Helm Hub - Search
  • Helm Hub - Chart Page, Installing a Chart
  • Upgrading a Release, Rolling Back a Release
  • Creating Custom Charts
  • Common Chart Files
  • Helm Templates
  • Installing A Custom Chart
  • Packaging Custom Charts
  • Logging, Monitoring, and Troubleshooting
  • Differences Between Logging and Monitoring
  • Logging in Kubernetes, Basic Logging
  • Logging Agents, Fluentd and Elastic Stack
  • Monitoring with Prometheus, Kubernetes and Prometheus - Metrics
  • AlertingDebugging Pods
  • Debugging Nodes
  • Debugging Replication Controllers and Services
  • Upgrading Kubernetes, Upgrade Process
  • Determine Which Version to Upgrade To
  • Upgrade kubeadm, Upgrade Control Plane Node
  • Upgrade kubelet and kubectl, Upgrade Worker Nodes
  • Recovering From a Failure State
  • Continuous Integration Fundamentals
  • Jenkins Continuous Integration, Jenkins Features
  • Running Jenkins, Downloading and Installing Jenkins
  • Running Jenkins as a Stand-Alone Application
  • Running Jenkins on an Application Server
  • Installing Jenkins as a Windows Service
  • Different types of Jenkins job
  • Configuring Source Code Management(SCM)
  • Working with Subversion, Working with Git
  • Build Triggers, Schedule Build Jobs,
  • Polling the SCM, Maven Build Steps, Configuring Jenkins to Access Kubernetes
  • Jenkins Pipeline, Jenkins Pipeline Output
  • Installing Jenkins Plugins
  • Lab Exercises
  • Lab 1. Managing Containers
  • Lab 2. Building Images
  • Lab 3. Dockerfiles
  • Lab 4. Deploying Stateful Services in Docker
  • Lab 5. Custom Network Management
  • Lab 6. Docker Volumes
  • Lab 7. Accessing the Kubernetes API
  • Lab 8. Working with Kubernetes Workloads
  • Lab 9. Scheduling and Node Management
  • Lab 10. Accessing Applications
  • Lab 11. Using Persistent Storage
  • Lab 12. Getting Started with Helm
  • .Lab 13. Build CI Pipeline with Jenkins