When Google started running containers a decade ago, nobody could reach this kind of infrastructure agility and efficiency. Using this knowledge, Google released Kubernetes as an free and open source project. Nowadays Kubernetes is used by small companies and big enterprises who want to gain the efficiency and velocity Google has.
You can containerize applications using Docker. You can then run those containers on your servers, but there's no way you can manage those efficiently without extra management software. Kubernetes is an orchestrator for your containers that will create, schedule and manage your containers on a cluster of servers. Kubernetes can run on-premise or in the cloud, on a single machine or on thousands of machines.
This course will help you to gain understanding how to deploy, use, and maintain your applications on Kubernetes. If you are into DevOps, this is a technology you need to master. Kubernetes has gained a lot of popularity lately and it is a well sought skill by companies.
I will show you how to build apps in containers using docker and how to deploy those on a Kubernetes cluster. I will explain you how to setup your cluster on your desktop, or on the cloud using AWS. I use a real world example app (Wordpress with MySQL - blogging software) to show you the real power of Kubernetes: scheduling stateless and stateful applications.
The introduction lectures that show you the Kubernetes desktop installation are free to preview, so you can already have a go at it before buying the course!
This is the fourth course in the "Learn DevOps" series. You don't need to have watched any previous "Learn DevOps" course, but if you find you need some more background on microservices and containerization, then I would highly recommend you to take the course "Learn DevOps: Continuously Deliver Better Software".
What is kubernetes, why would you use it, what benefits does it give you
On Kubernetes you run containers. In this lecture you'll learn what containers are all about.
Kubernetes can run almost anywhere. You can run it on-premise or in the cloud.
This lectures explains what minikube is, a piece of software that can help you run kubernetes locally.
An introduction to Kops - Kubernetes Operations. Software to provision and manage Kubernetes on AWS.
Kops only works on Mac / Linux, so you'll need to setup a vagrant box to run kops. If you are running already MacOS or Linux, and you don't want to be working in a VM, you can skip this step.
You first need to open an AWS account, add an IAM user for kops and setup DNS using route53
Once the AWS setup is complete, you can use kops to setup the Kubernetes cluster on AWS
Kubernetes only runs containers. In this lecture you learn how to build your application in a container.
In this demo I show you how to build a NodeJS example app in a container.
Once you have built a container, you need to put it on a registry, so Kubernetes can download it. You have public and private registries. Putting a container on a public registry is free.
In this demo I show you how to push the container with our app to Docker Hub
THis lecture explains how to run a first application on Kubernetes
Once the first app is available on Docker Hub, I show you how to run this app on our Kubernetes cluster
In this demo I show you some useful commands you can use to manage your containers on Kubernetes
If you're running your cluster on AWS, you can create a LoadBalancer (AWS ELB) for your application
In this demo I show you how to add an ELB (Elastic Load Balancer) to the example app
In this lecture I explain the Kubernetes node architecture
You can use the replication controller to spin up multiple instances of your application
This demo shows you how to spin up multiple instances of your application
Deployment objects allow a better abstraction of an application running on Kubernetes. You can update your application version easily and roll-back if something goes wrong.
In this demo I show you how our example application can be a deployment.
Exposing our application for external traffic can be done using services
In this demo I show you how to expose our example app
Labels can be used to tag objects
Labels together with NodeSelectors can be used to run pods on a specific node
Healthchecks can be used to periodically check whether our app in the pod is still working
In this demo I show you how to use healthchecks
Application credentials (for instance to access a database) can be stored in secrets.
Credentials can be mounted as a volume in a pod. This demo shows you how to do that.
First attempt to run a wordpress on Kubernetes. In a later version I'll show you a better way of running Wordpress on Kubernetes
Kubernetes also has a Web UI, a dashboard that makes it easy to use kubernetes
In this brief demo I give an overview how to use the dashboard
You can do service discovery using DNS.
This is a demo showing you how service discovery works
Containers are immutable. You can still use ConfigMaps for dynamic configuration data that needs to be present on the container.
In this demo I show you how to use ConfigMap to create a custom configuration file for a standard nginx container
Ingress controller allows you to have a reverse proxy / load balancer within your Kubernetes cluster and without using an external load balancer.
In this demo I show you how to use the built-in kubernetes ingress controller
If you want to run stateful applications on Kubernetes, you need volumes.
In this demo I show you how to use volumes in Kubernetes
Kubernetes can auto-provision volumes for you, no need to manually create an EBS volume on AWS
Now we know enough to use volumes to launch a fully working wordpress
Pet Sets enables you to run distributed applications and databases on Kubernetes, like ElasticSearch, MySQL Cluster, or Cassandra
Daemon Sets will make sure a pod is running on every node
Resource Usage Monitoring using influxdb and grafana will give you application metrics
This demo explains how to setup Resource Usage Monitoring using heapster + influxdb + grafana
Autoscaling can scale pods horizontally based on predefined targets
In this demo I show you how horizontal pod autoscaling (hpa) works
This lectures gives an architecture overview of the master services
As an administrator, you can implement resource quotas to make sure one team or one person doesn't take up all resources
Namespaces can logically separate a Kubernetes cluster
In this demo I explain how to implement namespace quotas
Users can be added to your Kubernetes cluster. This lecture explains authentication and authorization
In this demo I show you how to add users using certificates
Every pod needs a unique IP. Not all infrastructure can easily handle this. CNI and overlay networks can help.
Sometimes you want to add / remove nodes. This is how it is done
This demo shows how to drain a Kubernetes node
Once you put a Kubernetes cluster in production, you are going to want to have full high availability. This lecture explains you how to achieve that.
This demo shows how to enable HA on your AWS Kubernetes cluster using kops
I've been a System Administrator and full stack developer for over 10 years, the typical profile for a DevOps engineer. I've been working in multiple organizations and startups. I've cofounded a startup that focusses on applying DevOps and Cloud. I have been training people in newer technologies, like Big Data. I've trained a lot of people working in FTSE 100 & S&P 100 companies. Today I mainly work together with companies to improve their software delivery processes, while coaching and teaching on platforms like Udemy.