This intensive Kubernetes course begins with an introduction to Docker and then goes into Azure Container Registry and Azure Container Instances. We’ll cover Kubernetes core concepts, design, workload, deployment, logging, monitoring, and troubleshooting. This course includes hands-on labs and can be customized to your specifications.
Objectives for Kubernetes for Developers Training
- Docker Introduction
- Azure Container Registry and Azure Container Instances
- Docker Introduction
- Building Docker Images
- Azure Container Registry and Azure Container Instances
- Kubernetes Core ConceptsDeploying and Exposing Applications
- Design
- Kubernetes Workload
- Deployment Configuration
- Shared Volume using Azure Files share
- Logging, Monitoring, and Troubleshooting
Audience
This Kubernetes for Developers training course is intended for developers that need to understand all aspects of how to containerize, host, deploy, and configure an application in a multi-node cluster.
Prerequisites for this Kubernetes for Developers Training
WA2675 Architecting Microservices with Kubernetes, Docker, and Continuous Integration Training – or equivalent experience. Students should be familiar with a programming language and be comfortable with basic Linux command line and file editing skills.
Duration
Three days
Outline for Kubernetes for Developers on AKS Training
Chapter 1. Docker Introduction
• What is Docker?
• Docker Containers vs Traditional Virtualization
• Where Can I Run Docker?
• Docker as Platform-as-a-Service
• Docker Integration
• Docker Services
• Docker Hub Container Registry
• Alternative Container Registries
• Competing Containerization Systems
• Docker Command-line
• Starting, Inspecting, and Stopping Docker Containers
• Summary
Chapter 2. Building Docker Images
• Docker Images
• Containerizing an Application
• Building The Image
• Building a Docker Images using Dockerfile
• Sample Dockerfile
• Environment Variables
• Environment Variables - Example
• Arguments
• Multi-stage Builds
• Stop at a Specific Build Stage
• RUN
• EXPOSE
• EXPOSE (Continued)
• COPY
• ADD
• CMD
• ENTRYPOINT
• CMD vs. ENTRYPOINT
• VOLUME
• Build the Image
• .dockerignore
• Dockerfile – Best Practices
• Dockerfile - Best Practices (contd.)
• Published Ports
• Docker Documentation Link
• Docker Registry
• Hosting a Local Registry
• Deploying Docker Images to a Kubernetes Cluster
• Deploying to Kubernetes
• Running Commands in a Container
• Multi-Container Pod
• Summary
Chapter 3. Azure Container Registry and Azure Container Instances
• Azure Container Registry (ACR)
• ACR Typical Workflow
• Container Registry SKUs
• Creating ACR
• Pushing Existing Docker Images into ACR
• Build Images in ACR
• Obtaining ACR Credentials
• Azure Container Instances (ACI)
• Azure Container Instance Workflow
• Working with ACI
• Working with ACI (contd.)
• Deleting Container Instances and Container Registry
• Summary
Chapter 4. Kubernetes Core Concepts
• Kubernetes Basics
• What is Kubernetes?
• Container Orchestration
• Kubernetes Architecture
• Kubernetes Concepts
• Cluster and Namespace
• Nodes
• Master
• Pod
• Using Pods to Group Containers
• Label
• Label Syntax
• Annotation
• Label Selector
• Replication Controller and Replica Set
• Service
• Storage Volume
• Secret
• Resource Quota
• Authentication and Authorization
• Routing
• Docker Registry
• Azure Kubernetes Service (AKS)
• AKS Diagram
• Deploying an AKS Cluster
• Application Deployment on AKS
• Summary
Chapter 5. Deploying and Exposing Applications
• Configuring AKS for Deployment
• Kubernetes Services
• Service Resources
• Service Type
• ClusterIP
• NodePort
• NodePort from Service Spec
• LoadBalancer
• LoadBalancer from Service Spec
• ExternalName
• Accessing Applications
• Service Without a Selector
• Ingress
• Ingress Resource Example
• Ingress Controller
• Service Mesh
• Summary
Chapter 6. Design
• Traditional Applications
• Virtual Machines
• Containerized Applications
• Decoupled Resources
• Transience
• Flexible Framework
• Application Resource Usage
• Measuring Resource Usage
• Docker Resource Usage Statistics
• Docker Container Resource Constraints
• Docker Run Command Resource Flags
• Using Label Selectors
• Equality Based Label Selector
• Set Based Label Selector
• Multi-Container Pods
• Sidecar Container
• Sidecar Container Uses
• Adapter Container
• Summary
Chapter 7. Kubernetes Workload
• Kubernetes Workload
• Managing Workloads
• Imperative commands
• Imperative Object Configuration
• Declarative Object Configuration
• Configuration File Schema
• Understanding API Version
• Obtaining API Versions
• Obtaining API Versions (contd.)
• 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
• Summary
Chapter 8. Deployment Configuration
• Introduction to Volumes
• Container OS file system storage
• Docker Volumes
• Kubernetes Volumes
• Volume Specs
• K8S Volume Types
• Cloud Resource Types
• emptyDir
• Using an emptyDir Volume
• Other Volume Types
• Persistent Volumes
• Creating a Volume
• Persistent Volume Claim
• Persistent Volume
• Pod that uses Persistent Volume
• Dynamic Volume Provisioning
• Requesting Dynamic Storage
• Secrets
• Creating Secrets from Files
• Creating Secrets from Literals
• Using Secrets
• Creating configMaps from Literals
• Creating configMaps from files
• Using configMaps
• Security Context
• Security Context Usage
• Deployment Configuration Status
• Replicas
• Scaling
• Summary
Chapter 9. Shared Volume using Azure Files share
• Volumes
• Azure Disks
• Azure Files share
• Azure Files share - Workflow
• Creating a Kubernetes Secret
• Configuring the Volume in the Container Specification
• Verifying the Azure Files share is Mounted
• Summary
Chapter 10. Logging, Monitoring, and Troubleshooting
• Differences Between Logging and Monitoring
• Logging in Kubernetes
• Basic Logging
• Debugging Pods
• Debugging Nodes
• Debugging Replication Controllers and Services
• Azure Monitor
• Container Insights
• Log Queries in Azure Monitor
• Log Analytics Query Language
• Logging Agents
• Fluentd and Elastic Stack
• Monitoring with Prometheus
• Alerting
• Upgrade Process
• Troubleshooting
• YAML Syntax Exceptions
• nodeSelector
• Troubleshooting a Failed Image Pull
• Resource Issues when Scaling
• Summary
Lab Exercises
Lab 1. Building a Docker Image with Dockerfile
Lab 2. Getting Started with Docker Compose
Lab 3. Working with Container Registry and Container Instances
Lab 4. Pushing Docker Images into ACR
Lab 5. Accessing the Kubernetes API in AKS
Lab 6. Accessing Applications in AKS
Lab 7. Deploying ACR Images to AKS
Lab 8. Working with Kubernetes Workloads in AKS
Lab 9. Implementing the Sidecar Pattern
Lab 10. Using Persistent Storage in AKS
Lab 11. Using AKS Volume with Azure File share
Lab 12. Exploring Logging and Monitoring in AKS
Lab 13. Troubleshooting