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 organisations 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.
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. OR
- Degree or Diploma in computer or any relevant field.
Syllybus: Following topics will be taught through online sessions.
- 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.
- 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
*
- What is namespace
- When to use different namespaces
- Create a new namespace
- Switch between namespaces
*
- What is configuration management systems ? (15 mins)
- Importance of Configuration management system. (10 mins)
- Declarative Language vs Procedural Language. (20 mins)
- Install and configure ansible. (30 mins)
- Ansibles playbooks. (45 mins)
- Prepare a sample playbook and test it. (30 mins)
- Ansible roles (30 mins)
- Ansible Variables (30 mins)
- Build VM using Vagrantfile and apply ansible playbook (30 mins)
*
- 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.
- 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.
*
- What is a Deployment?
- What is a ReplicaSet ?
- When to use a Replicaset ?
- Scaling a replicaset.
- Replicaset as a Horizontal pod autoscaler.
*
- 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.
*
- 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 .
*
- 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.
*
- Concept of volumes in Docker and Kubernetes.
- Types of volumes
- Persistent Volumes
- Persistent Volume Claim
- Storage Classes
*
- 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.
*
- Overview of secrets.
- Create a secret.
- Retrieve a secret.
- Configure pod to retrieve secret value.
*
- Prepare DaemonSet template configuration.
- Scheduled by default scheduler.
- Based on Taints and Toleration.
- Node Affinity.
*
- 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.
*
- 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
*
Note: Every delegate will need to bring their own laptop.
** Based on participants' requirements, advanced topics will be
covered.
Quizzes will be available during courses to get you prepared for
interviews.
** Required information and basic knowledge will be provided depends
on the delegate's requirement.