Duration
14 hours (usually 2 days including breaks)
Requirements
- Experience with Docker containers
- Familiarity with the Linux command line
- An understanding of networking concepts
Audience
- Software Developers
- Architects
- Deployment engineers
Overview
Docker is an open-source platform for building, shipping and running applications inside containers. Kubernetes goes one step further by providing the tools needed to deploy and manage containerized applications at scale in a clustered environment.
In this instructor-led, live training (onsite or remote), participants will learn how to deploy a collection of sample servers inside containers, then automate, scale, and manage their containerized servers within a Kubernetes cluster. The training goes on to more advanced topics, walking participants through the process of securing, networking and monitoring a Kubernetes cluster.
By the end of this training, participants will be able to:
- Set up and run a Docker container.
- Deploy containerized databases and servers.
- Set up a Docker and Kubernetes cluster.
- Use Kubernetes to deploy and manage different environments under the same cluster.
- Secure, scale and monitor a Kubernetes cluster.
Format of the course
- Part lecture, part discussion, exercises and heavy hands-on practice.
Notes
- Different Docker images can be used as demos in this training (e.g., Nginx, MongoDB, Tomcat, etc.).
- To request specific images or any other customization for this training, please contact us to arrange.
Course Outline
[Day 01]
Introduction
Overview of container orchestration with Kubernetes
Overview of Kubernetes architecture
- Pods, labels/selectors, replication controllers, services, API
Installing a Kubernetes cluster
Pulling a Docker image from the internet
Creating Kubernetes pods, volumes and deployments
Grouping and organizing your cluster
Using Kubernetes Namespaces to manage different environments
- Managing test, staging, and production environments within the same cluster
- Kubernetes Namespaces best practices
Discovering and connecting to containers
Discovering and publishing services
- Non-HTTP services (Passive FTP, SMTP, LDAP, etc.)
Kubernetes security
- Authentication & authorization
Upgrading a Kubernetes cluster
- Minimizing the impact
Advanced networking
- Docker networking vs Kubernetes networking
Interfacing between network providers and Kubernetes networking
- Best practices for separating services in a cluster
- Comparison of different CNI providers (performance, features, etc.)
Monitoring Kubernetes
- Cluster logging with Elasticsearch and fluentd
- Container level monitoring (cAdvisor UI, Influxdb, Prometheus)
Best Practices for running containerized servers and data stores
[Day 02]
Scaling your Kubernetes cluster
Infrastructure for Kubernetes
- Provisioning, partitioning, networking
Building a high-availability cluster
- Load balancing and service discovery
Deploying a scalable application
- Horizontal pod autoscaling
- Database clustering in Kubernetes
Updating your application
- Releases in Kubernetes
Troubleshooting
- Diagnosing and fixing common Kubernetes issues
Summary and Conclusion