Course outline for Kubernetes
Kubernetes Course Objectives
- The objective of this learning program is to help learners understand on-prem, single-cloud, multi-cloud and container based architectures, with specific emphasis on Docker for containerization and Kubernetes for orchestration.
- We also discuss microservice architectures, issues in developing/managing monolithic applications, common pitfalls in migrating from monolithic to microservices architectures and the challenges faced by dev & ops in managing such applications. We also discuss common microservices architectural patterns, devops practices, operational readiness and 12 factor application development in the context of microservices.
- We discuss the importance of state and how stateless and stateful parts of the architecture are scaled and how we handle failures in each.
- We discuss case studies of how to build a Java/Python/Go based application that exposes a REST service. We first discuss how to build this using Docker and then in Kubernetes.
- Finally we also discuss some of the important developments in this space and what is to be expected in the next 6-12 months window.
Pre-requisites for learning Kubernetes
- Participants must be comfortable in a Linux environment
- Knowledge of virtualization and cloud technologies is preferred but not required for this course
Lab Setup
Hardware configuration
4GB of free RAM, 20GB of free disk space and full network connectivity
Software configuration
- Ubuntu 20.04/22.04 Desktop Edition (sudo/root access required)
Duration
3-5 days
Training Mode
Online training for Kubernetes
We provide:
- Instructor led live training
- Self-paced learning with access to expert coaches
- 24x7 access to cloud labs with end to end working examples
All jnaapti sessions are 100% hands-on. All our instructors are engineers by heart. Activities are derived from real-life problems faced by our expert faculty. Self-paced hands-on sessions are delivered via Virtual Coach.
Classroom training for Kubernetes
Classroom sessions are conducted in client locations in:
- Bengaluru
- Chennai
- Hyderabad
- Mumbai
- Delhi/Gurgaon/NCR
Note: Classroom training is for corporate clients only
Detailed Course Outline for Kubernetes
Cloud Computing, Microservices and the like
- Introduction to Cloud Computing
- Comparison of cloud v/s non-cloud deployments
- Handling scalability and failures
- Cloud Deployment Models
- Important technologies in this space
- Important Cloud Service Providers
- State and its importance in cloud architectures
Spring Boot Overview/Python/Go based Microservices Overview
- Introduction to Microservices architecture
- Stand-alone applications v/s Application Server based applications
- Analysing the sample application
Containerisation with Docker
- Installation of Docker
- Docker basics - images and containers
- Building images from Dockerfiles
- Managing state in Docker
- Docker networking
- Deploying the sample application with Docker
- Limitations of Docker in multi-node deployments
Orchestration with Kubernetes
- How Kubernetes helps with orchestrating stateless and stateful components
- Comparison with Docker
- Introduction to declarative specifications
- Understanding the YAML file format
- Kubernetes architecture overview - master and workers
Installation of Kubernetes
- Use of kubeadm to setup a cluster
- Listing available nodes
- Troubleshooting cluster setup issues
- Dependency of Kubernetes on Docker/OCI runtimes
- Kubernetes Hello World
- A 50000 ft view of Kubernetes - running an nginx server and exposing it as a service
- Similarities between kubectl and docker commands
Containers and Pods
- Understanding the relationship between containers and pods
- Creating, listing and deleting pods via kubectl
- Interacting with pods - exec, log
- Running multiple containers in a pod
- Managing resources consumed by pods
- Node labels and selectors, affinity and anti-affinity
Deployments and ReplicaSets
- The role of ReplicaSets in managing pod replicas
- Deployments via Kubernetes
- Creating, listing and deleting Deployments via kubectl
- Understanding selectors
- How deployments work
- Deployment strategies
Kubernetes Networking and Services
- Multi-host Networking in Kubernetes (overview)
- Overview of Service discovery
- Creating, listing and deleting services via manifests
- Endpoint controller
- Listing endpoints of a service
- Communicating between multiple deployments
- Understanding how services work
- Virtual IPs and Service proxies
- Load balancer service
- Ingress
- Port forwarding during development
- Defining network policies
Managing Config Data with Kubernetes
- Creating and working with ConfigMaps
- Creating and working with Secrets
- Injecting configuration and secrets to pods
State Management with Kubernetes
- Persistent Volumes and Persistent Volume Claims
- Stateful Sets
- A walk-through of an application deployment in Kubernetes
Clusters, Namespaces and Context
- Understanding kubeconfig
- Creating, listing and deleting namespaces
- Deploying to specific namespaces
- kubens
Authentication and Authorization in Kubernetes
- Service Accounts
- Role-based access control (RBAC)
- Roles and ClusterRoles
- RoleBindings and ClusterRoleBindings
- Case study using a Kubernetes dashboard setup
Microservices Architecture in Depth
- Comparing Microservices to Monolithic architectures
- Pros and cons of microservices architecture
- Complexities of microservice architectures
- 12 factor application development
- Common pitfalls when migrating from Monolith to Microservices
Operational Readiness
- Handling scale with microservices architecture
- Handling failures and performing failovers in microservices architecture
- Logging, tracing and monitoring in microservices architecture
- Testing for operational readiness
Microservices architectural patterns (concepts)
- Challenges of building and maintaining microservices applications
- Service discovery
- Circuit breaker
- Routing and proxies
- Load balancing – internal and external
- Ingress controllers
- API gateway
Introduction to Service Meshes
- Issues with traditional Devops tools
- Role of Service Meshes
- Monitoring Microservices
- Telemetry - Distributed Tracing, Opentracing, Analysing Performance
- Improving performance with better protocols/serialization formats
- Centralized Logging
- End to end encryption
- Applying authorization policies for service to service communication
- Issue with debugging and development
- Case study of Istio