![](https://stalwartlearning.com/wp-content/uploads/2023/07/Custom-dimensions-300x294-px-11.png)
Docker Kubernetes Training
Duration : 4 Days
Date : 17, 18, 19, 20 Jan 2024
Overview
This boot camp introduces participants to docker and its ecosystem, help them get started using Docker to build, package and run their applications inside containers. This course also covers container orchestration with Kubernetes.
This course covers docker right from how to run a single container, to how to package your application into a docker image and finally deploying it at a production scale on a multitude of hosts. This course is useful for you if,
- You are a developer and want to understand how Docker works as well as learn to package your application into a docker image. You may also be interested in creating release strategies and deploy it in pre-production or production environments.
- You are operations personnel who would like to understand how to get started with containers, troubleshoot issues, support docker environments. You may also want to understand how to design and deploy a highly available, fault tolerant production scale infrastructure with Kubernetes, understand the network primitives, etc.
- You are a QA and would like to understand how to use Docker to set up test environments, speed up testing and continuous integration process and also learn how container orchestration works with Kubernetes.
Prerequisites
- Linux/Unix Systems Fundaments
- Understanding of Command Line Interface
- Basic knowledge of editors on Linux (any one of vi/nano/emacs)
- Understanding of YAML syntax and familiarity with reading/writing basic YAML specifications
Course Contents
Day 1
- Introduction
- Basics of Docker
- Dockerfile
- Networking
- Creating and Running Containers
- Container Images
- Building Application Images with Docker
- Storing Images in a Remote Registry
- The Docker Container Runtime
- Deploying a Kubernetes Cluster
- Installing Kubernetes on a Public Cloud Provider
- Installing Kubernetes Locally Using minikube
- Running Kubernetes on Raspberry Pi
- The Kubernetes Client
- Cluster Components
- Common kubectl Commands
- Namespaces
- Contexts
- Viewing Kubernetes API Objects
- Creating, Updating, and Destroying Kubernetes Objects
- Labelling and Annotating Objects
- Debugging Commands
- Pods
- Pods in Kubernetes
- Thinking with Pods
- The Pod Manifest
- Running Pods
- Accessing Pod
- Health Checks
- Resource Management
- Persisting Data with Volumes
- The Distributed System ToolKit
- Sidecar containers
- Ambassador containers
- Adapter containers
- Labels and Annotations
- Labels
- Annotations
- Resource Quotas
- Enabling Resource Quota
- Compute Resource Quota
- Storage Resource Quota
- Object Count Quota
- Quota Scopes
- Requests vs Limits
- Viewing and Setting Quotas
- Quota and Cluster Capacity
- Limit Priority Class consumption by default
Day 2
- Service Discovery
- What Is Service Discovery?
- Using CoreDNS for Service Discovery
- About CoreDNS
- Upgrading an existing cluster with kubeadm
- Installing kube-dns instead of CoreDNS with kubeadm
- The Service Object
- Looking Beyond the Cluster
- Cloud Integration
- Advanced Details
- ReplicaSets
- Reconciliation Loops
- Relating Pods and ReplicaSets
- Designing with ReplicaSets
- ReplicaSet Spec
- Creating a ReplicaSet
- Inspecting a ReplicaSet
- Scaling ReplicaSets
- Deleting ReplicaSets
- DaemonSets
- DaemonSet Scheduler
- Creating DaemonSets
- Limiting DaemonSets to Specific Nodes
- Updating a DaemonSet
- Deleting a DaemonSet
- Jobs
- The Job Object
- Job Patterns
- ConfigMaps and Secrets
- ConfigMaps
- Secrets
- Naming Constraints
- Managing ConfigMaps and Secrets
- Deployments
- First Deployment
- Creating Deployments
- Managing Deployments
- Updating Deployments
- Deployment Strategies
- Deleting a Deployment
- Integrating Storage Solutions and Kubernetes
- Importing External Services
- Running Reliable Singletons
- Kubernetes-Native Storage with StatefulSets
- The Ecosystem
- Installing Helm, the Kubernetes Package Manager
- Using Helm to Install Applications
- Creating Your Own Chart to Package Your Application with Helm
- Converting Your Docker Compose Files to Kubernetes Manifests
- Creating a Kubernetes Cluster with kubicorn
- Storing Encrypted Secrets in Version Control
- Deploying Functions with kubeless
Day 3
- Deploying Real-World Applications
- Parse
- Ghost
- Redis
- Service Mesh
- Why service mesh?
- Conduit and Istio
- Managing microservices with Istio
- Authorization Overview
- Determine Whether a Request is Allowed or Denied
- Review Your Request Attributes
- Determine the Request Verb
- Authorization Modules
- Using Flags for Your Authorization Module
- Privilege escalation via pod creation
- Networking
- Calico
- Flannel
- Scaling
- Scaling a Deployment
- Automatically Resizing a Cluster in GKE
- Automatically Resizing a Cluster in AWS
- Using Horizontal Pod Autoscaling on GKE
- Security
- Providing a Unique Identity for an Application
- Listing and Viewing Access Control Information
- Controlling Access to Resources
- Securing Pods
- Ingress Controller
- What is Ingress?
- Prerequisites
- The Ingress Resource
- Ingress controllers
- Before you begin
- Types of Ingress
- Updating an Ingress
- Failing across availability zones
- Future Work
- Alternatives
- Monitoring and Logging
- Accessing the Logs of a Container
- Recover from a Broken State with a Liveness Probe
- Controlling Traffic Flow to a Pod Using a Readiness Probe
- Adding Liveness and Readiness Probes to Your Deployments
- Enabling Heapster on Minikube to Monitor Resources
- Using Prometheus on Minikube
- Using Elasticsearch–Fluentd–Kibana (EFK) on Minikube