Docker Kubernetes
Overview
This training course covers docker right from how to run a single container to how to package your application into a docker image and finally deploy it at a production scale on a multitude of hosts.
Duration3 Days
Pre-Requisites
Course Outline
- Basics of Docker
- Dockerfile
- Networking
- Container Images
- Building Application Images with Docker
- Storing Images in a Remote Registry
- The Docker Container Runtime
- Installing Kubernetes on a Public Cloud Provider
- Installing Kubernetes Locally Using minikube
- Running Kubernetes on Raspberry Pi
- The Kubernetes Client
- Cluster Components
- Namespaces
- Contexts
- Viewing Kubernetes API Objects
- Creating, Updating, and Destroying Kubernetes Objects
- Labelling and Annotating Objects
- Debugging Commands
- 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
- Annotations
- 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
- 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
- Reconciliation Loops
- Relating Pods and ReplicaSets
- Designing with ReplicaSets
- ReplicaSet Spec
- Creating a ReplicaSet
- Inspecting a ReplicaSet
- Scaling ReplicaSets
- Deleting ReplicaSets
- DaemonSet Scheduler
- Creating DaemonSets
- Limiting DaemonSets to Specific Nodes
- Updating a DaemonSet
- Deleting a DaemonSet
- The Job Object
- Job Patterns
- ConfigMaps
- Secrets
- Naming Constraints
- Managing ConfigMaps and Secrets
- First Deployment
- Creating Deployments
- Managing Deployments
- Updating Deployments
- Deployment Strategies
- Deleting a Deployment
- Importing External Services
- Running Reliable Singletons
- Kubernetes-Native Storage with StatefulSets
- 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
- Parse
- Ghost
- Redis
- Why service mesh?
- Conduit and Istio
- Managing microservices with Istio
- 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
- Calico
- Flannel
- Scaling a Deployment
- Automatically Resizing a Cluster in GKE
- Automatically Resizing a Cluster in AWS
- Using Horizontal Pod Autoscaling on GKE
- Providing a Unique Identity for an Application
- Listing and Viewing Access Control Information
- Controlling Access to Resources
- Securing Pods
- 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
- 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
