Kubernetes for complete beginners
AIM:
This course is designed for beginners who want to learn and master their skills to work efficiently with Kubernetes (k8s). K8s is the most popular and fastest growing container orchestration platform. As Kubernetes is extensible and fault tolerant, various organizations are adopting Kubernetes as their native container platform to host business critical applications. Top cloud providers such as Amazon, Google and Microsoft are providing k8s platforms for easy adoption. Kubernetes is a perfect choice to host modern micro services-based applications.
At the end of this course delegates will gain hands-on experience working on Kubernetes and Docker to build and deploy real world applications. More than 80% of the learning is based on interactive sessions. Students will be learning while performing scenario based practical labs and home work to gain valuable experience. In short, this course is for those who want to get their hands dirty with Kubernetes and Docker.
Prerequisites:
- Delegates must be fluent and efficient dealing with command line interface.
- Minimum 6 – 12 months of
- Software development experience in any programming language OR
- Working knowledge of Linux systems administration OR
- Working knowledge of Network Administration OR
- Software testing experience.
Note: All labs and scenario-based exercises will be performed through CLI.
YAML:
What is YAML?
Why YAML? (. yaml and. yml)
Preparing sample YAML files to understand data structure.
All Kubernetes object definitions are written in YAML.
Monolithic vs micro service Application overview.
What is Kubernetes?
High level Architectural diagram of Kubernetes.
Cluster: Master (Control Pane) vs Worker nodes.
Importance of cluster components.
– Control plane components.
– Node components.
Getting started with kubectl command line utility.
Query different Kubernetes Objects Using Imperative Commands
kubectl get, kubectl cluster-info, kubectl config, kubectl describe, kubectl run …etc.
Query Kubernetes objects and different properties with JSONPath
Namespaces:
What is namespace
When to use different namespaces
Create a new namespace
Switch between namespaces
Labels and Selectors:
What are labels and selectors?
Importance of Labels and selectors.
Syntax and Character set.
List, watch and filter Kubernetes objects.
Pod:
What is a pod?
Single container pod
Multi container pod
Pod template (Configuration)
Prepare a custom pod configuration from scratch.
Prepare a pod using imperative command with –dry-run
Export / build pod configuration using imperative command.
Understanding pod lifecycle.
Watching logs for debugging and analysis.
Pod – Internals
– What is a container?
– Why Docker Containerization?
– Learn basic Docker operations.
– Create a nginx pod with imperative command.
– Update index.html with kubectl exec.
– Perform docker exec and kubectl exec to validate content of a file.
– Export pod configuration from Running pod.
Deployments:
What is a Deployment?
Deployment template (Configuration)
Prepare a custom deployment using imperative command and different options.
Create a deployment.
Update a deployment.
Scaling a deployment.
Rolling update on a deployment.
Rollback a deployment.
Rollback to a specific revision.
Check history and status of deployment.
Recreate deployment. (rolling update vs recreate)
Pausing and Resuming deployment.
ReplicaSet
What is a ReplicaSet?
When to use a Replicaset?
Scaling a replicaset.
Replicaset as a Horizontal pod autoscaler.
Service:
What is a service?
Service template (configuration)
Service types – NodePort, ClusterIP, Loadbalancer, Externalname
Creating service while creating pod (imperative).
Create an individual service config.
Access application running on pod with a service.
Network Policies:
What is a network policy?
Understand Ingress and Egress for pods.
Isolated and Non-isolated pods.
Create a network policy and apply to pod.
Validate pod access based on network policy.
Securing pod access with default network policy in namespace.
Behaviour of to and from selectors.
Different network providers and network policy support.
ConfigMap:
Create config map from literals.
Create config map from files.
Configure pod to retrieve configuration / parameters from config maps.
Configure pod to retrieve configuration from environment variables.
Configmap data from volume.
Volumes:
Concept of volumes in Docker and Kubernetes
Types of volumes
Persistent Volumes
Persistent Volume Claim
Storage Classes
Job and CronJob:
Ad-hoc job – run to complete a task
Job template (Configuration)
Prepare a sample job with imperative command.
Parallel executions.
Termination and cleanup finished jobs.
Handling pod and container failure.
CronJob limitations.
Secrets:
Overview of secrets.
Create a secret.
Retrieve a secret.
Configure pod to retrieve secret value.
Daemon Set:
Prepare Daemon Set template configuration.
Scheduled by default scheduler.
Based on Taints and Toleration.
Node Affinity.
Resource Quota:
Enabling resource quota
Compute resource quota (CPU and Memory)
Storage resource quota.
Note: If delegates need more practice on Docker then we will set up a session just on Docker.
Docker:
Virtual machines vs Containers.
Install Docker CE on virtual machine (Optional)
Learn basic Docker operations
Build container from default images
Create docker image from running container
Write DockerFile to build container image
Execute various command using docker exec
Build a custom web server image using nginx
Setup a free external docker repository at hub.docker.com
Who’s is using Kubernetes: https://kubernetes.io/case-studies/