Course Introduction
Overview of Kubernetes
Deploying Containerized Applications to Kubernetes
The Kubernetes Ecosystem
Course Conclusion
The course is part of these learning paths
See 6 moreKubernetes is a production-grade container orchestration system that helps you maximize the benefits of using containers. Kubernetes provides you with a toolbox to automate deploying, scaling, and operating containerized applications in production. This course will teach you all about Kubernetes including what it is and how to use it.
This course is paired with an Introduction to Kubernetes Playground lab that you can use to follow along with the course using your own Kubernetes cluster. The lab creates a Kubernetes cluster for you to use as we perform hands-on demos in the course. All of the commands that are used in the course are included in the lab to make it easy to follow along.
Learning Objectives
- Describe Kubernetes and what it is used for
- Deploy single and multiple container applications on Kubernetes
- Use Kubernetes services to structure N-tier applications
- Manage application deployments with rollouts in Kubernetes
- Ensure container preconditions are met and keep containers healthy
- Learn how to manage configuration, sensitive, and persistent data in Kubernetes
- Discuss popular tools and topics surrounding Kubernetes in the ecosystem
Intended Audience
This course is intended for:
- Anyone deploying containerized applications
- Site Reliability Engineers (SREs)
- DevOps Engineers
- Operations Engineers
- Full Stack Developers
Prerequisites
You should be familiar with:
- Working with Docker and be comfortable using it at the command line
Source Code
The source files used in this course are available here:
Updates
August 27th, 2019 - Complete update of this course using the latest Kubernetes version and topics
May 7th, 2021 - Complete update of this course using the latest Kubernetes version and topics
As we have seen, the master components provide the Kubernetes control plane. The way that you retrieve and modify state information in the cluster, is by sending a request to the Kubernetes API server, which is the master component that acts as a front end for the control plane. This leads us to the first method of interacting with Kubernetes, directly communicating via rest API calls. It is possible but not common to need, to work directly with the API server. You might need to if you're using a programming language that does not have a Kubernetes client library.
Client libraries are our second method of interacting with Kubernetes. Client libraries can handle the tedium of authenticating and managing individual REST API requests and responses. Kubernetes maintains official client libraries for Go, Python, Java, .NET, and JavaScript. There are also many community-maintained libraries if there isn't official support for your language of choice. The client libraries are a great choice for the OPAs writing code to interact with Kubernetes.
The next method of interacting with Kubernetes is the most common, and what we will focus on in this course, it is the Kubernetes command line tool called cube control, or Kubectl. With cube control, you can issue commands that are at a high level of abstraction with each command, translating into the appropriate API server request. With cube control, you can also access clusters locally, as well as remote. Your success with Kubernetes directly correlates with your Kubectl skill. You can accomplish all your day-to-day work using Kubectl.
So it is vital to learn this command because it manages all different types of Kubernetes resources, and provides debugging and introspection features. Luckily, Kubectl follows an easy to understand design pattern. When you learn to manage one resource, you learn to manage them all. Let's introduce some common sub commands to see what they look like and what Kubectl can do.
Starting with Kubectl create, Kubectl create creates a new Kubernetes resource. You can create several resources using the built-in sub commands of create, or you can use resources specified in a file. The files are most commonly in gamble format and are referred to, as manifests.
Kubectl delete, Kubectl does the opposite of create, in that it deletes a particular resource. You can do the same with a file, with resources declared inside of it. Kubectl get, returns a list of all the resources for a specified type. For example, Kubectl get, pods lists all the pods and the current namespace. Kubectl describe is going to print detailed information about a particular resource or a list of resources. As an example, Kubectl describe pod, server gives detailed information about the pod named server. Kubectl logs, print container logs for a particular pod or a specific container inside of a multi container pod.
We'll go deeper into these commands and more as the course progresses. This is just enough to kickstart you for our next lesson. And our final method of interacting with Kubernetes, is through the web dashboard. The dashboard provides a nice list of dashboards, as well as, easy to navigate views of cluster resources. The web dashboard is covered in the Deploy Stateful Application in a Kubernetes Cluster lab here on cloud Academy. But if you want, you can check it out after you complete this course.
The web dashboard is optional, so not all clusters will have it. Kubectl truly is the way to go for maximum productivity and it really doesn't take long to get the hang of it. We are now ready to start getting our hands dirty with Kubernetes. We can't cover everything in this introductory course, but I want to cover many of the main parts of Kubernetes. In the next lesson we're going to be deploying our first application to Kubernetes. So see you then.
Jonathan Lewey is a DevOps Content Creator at Cloud Academy. With experience in the Networking and Operations of the traditional Information Technology industry, he has also lead the creation of applications for corporate integrations, and served as a Cloud Engineer supporting developer teams. Jonathan has a number of specialities including: a Cisco Certified Network Associate (R&S / Sec), an AWS Developer Associate, an AWS Solutions Architect, and is certified in Project Management.