WA2507

Managing Clusters and Containers with Kubernetes Training

This Kubernetes (K8s) course teaches attendees the architecture behind Kubernetes and how to design and manage K8s clusters.

Course Details

Duration

3 days

Prerequisites

Be comfortable using command shell commands in a Linux or Unix environment.

Skills Gained

  • Understand the architecture of Kubernetes and use basic terminology
  • Design and Manage Kubernetes Clusters
Course Outline

Chapter 1. Overview of Containerization Systems

  • Modern Infrastructure Terminology
  • Virtualization
  • Hypervisors
  • Hypervisor Types
  • Type 1 Hypervisors
  • Type 2 Hypervisors
  • Type 1 vs Type 2 Processing
  • Paravirtualization
  • Virtualization Qualities (1/2)
  • Virtualization Qualities (2/2)
  • Disadvantages of Virtualization
  • Containerization
  • Virtualization vs 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
  • Mesos and Marathon (contd.)
  • Docker Use-Cases
  • Microservices
  • Microservices and Containers / Clusters
  • Summary

Chapter 2. Introduction to Docker

  • Docker Basics
  • Where Can I Run Docker?
  • Installing Docker Container Engine
  • Docker Toolbox
  • What is Docker?
  • Docker Architecture
  • Docker Architecture 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
  • Summary

Chapter 3. Getting Started with Kubernetes

  • 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
  • Summary

Chapter 4. Application Administration in Kubernetes

  • Installation
  • Startup
  • Kubernetes Tools
  • kubectl Command Line Interface
  • API Proxy
  • Dashboard
  • Kubernetes Component Hierarchy
  • Deployments
  • Deployment Commands
  • Updating Deployments
  • Network Considerations
  • Services
  • Namespaces
  • Other Useful Commands
  • Summary

Chapter 5. Kubernetes Cluster Administration Overview

  • Architecture Diagram
  • Components
  • Kubernetes Cluster
  • Master Node
  • Kube-Control-Manager
  • Nodes
  • Other Components
  • Interacting with Kubernetes
  • Summary

Chapter 6. Planning and Designing a Kubernetes Cluster

  • Cloud Native Security
  • Code Security
  • Container Security
  • Cluster Security
  • Cloud/Data Source Security
  • Access Management
  • API Server Ports
  • API Access
  • Security Policies
  • RBAC Role Based Access Control
  • Role Example
  • ClusterRole Example
  • Granting Roles to Users
  • Security Contexts
  • Kubernetes Namespaces
  • Namespace Advantages
  • Initial Namespaces
  • Custom Namespaces
  • Namespaced Objects
  • kubectl Commands and Namespaces
  • Uses for Namespaces
  • Summary

Chapter 7. Kubernetes Network Administration

  • 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
  • Summary

Chapter 8. Managing Kubernetes Nodes

  • Kubernetes Scheduler Overview
  • Trusting the Kubernetes Scheduler
  • Scheduling Process
  • Scheduling Process - Predicates
  • Scheduling Process - Priorities
  • Scheduling Algorithm
  • Kubernetes Scheduling Algorithm
  • Scheduling Conflicts
  • Controlling Scheduling
  • Label Selectors
  • Label Selectors (Contd.)
  • Node Affinity and Anti-affinity
  • Node Affinity Example
  • Node Antiaffinity Example
  • Taints and Tolerations
  • Taints and Tolerations (Contd.)
  • Taints and Tolerations - Example
  • Summary

Chapter 9. Managing Kubernetes Clusters

  • Kubernetes Cluster
  • Points of Configuration
  • Sizing a Cluster
  • Resizing a Cluster
  • Horizontal auto-scaling
  • Maintenance on a Node
  • Kubernetes Cluster Limits
  • Considerations for Running Large Clusters
  • Considerations for Running Multiple Clusters
  • Multi-Cluster Architectural Choices
  • Resource Quotas
  • Example Resource Allocation
  • Cluster Failure Modes
  • Cluster Troubleshooting Workflow
  • Summary

Chapter 10. High-Availability K8S Clusters

  • Overview
  • Cluster Components
  • Reliable Nodes
  • Reliable Storage
  • Replicated API Servers
  • Load Balancing
  • Cluster Control Components
  • Installing Configuration Files
  • Summary

Chapter 11. K8S Cluster Configuration Best Practices

  • Cluster Configuration Best Practices
  • Specifying Kubernetes Version
  • YAML vs. JSON for Configurations
  • Apply Multiple Resource Config Files at Once
  • Combining Multiple Resource Config Files
  • Use Standalone Pods for Temporary Work
  • Use Deployments to Manage Pods with ReplicaSets
  • Let Kubernetes Assign Ports
  • Use Namespaces and Labels
  • Managing Container Images
  • Other General Tips
  • Summary

Lab Exercises

Lab 1. Managing Docker Containers
Lab 2. Building Docker Images
Lab 3. Dockerfiles
Lab 4. Accessing the Kubernetes API
Lab 5. Working with Kubernetes Workloads
Lab 6. Kubernetes Cluster Overview
Lab 7. Planning a Kubernetes Cluster
Lab 8. Accessing Applications
Lab 9. Scheduling and Node Management
Lab 10. High-Availability K8s Clusters