1. Home
  2. Training Library
  3. Containers
  4. Courses
  5. Introduction to Kubernetes

Interacting with Kubernetes


Course Introduction
Deploying Containerized Applications to Kubernetes
12m 29s
5m 49s
9m 16s
14m 3s
The Kubernetes Ecosystem
Course Conclusion

The course is part of these learning paths

Building, Deploying, and Running Containers in Production
Introduction to Kubernetes
more_horizSee 2 more
Start course
Duration2h 12m


Kubernetes 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.

The source files used in this course are available in the course's GitHub repository.

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


You should be familiar with:

  • Working with Docker and be comfortable using it at the command line


August 27th, 2019 - 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 requests to the Kubernetes API server, which is the master component that acts as a front-end for the control plane. 

That leads us to the first method for 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 is our second method for interacting with Kubernetes. Client libraries can handle the 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 good choice for developers writing code that 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 using the Kubernetes command-line tool called Kube Control, or kube-C-T-L to interact with the cluster's API server. You might also hear it referred to as kube-cuttle or kube-control. With kubectl, you can issue commands that are at a high level of abstraction, with each command translating into the appropriate API server request. With kubectl, you can access clusters that are local and remote. 

Your success with Kubernetes directly correlates with your kubectl skill. You can accomplish all your day-to-day work using kubectl. It's 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. Kubectl create creates a new Kubernetes resource. You can create server resources using built-in sub-commands of create, or you can use resources specified in a file. The files are most commonly in the AMO format and they're referred to as manifests. Kubectl delete deletes a particular resource. Kubectl get returns a list of all the resources of a specified type. For example, kubectl get pods will list pods. Kubectl describe prints 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 prints container logs for a particular pod or a specific container inside of a multi-container pod. We'll go deeper into each of these commands and more as the course progresses. This is just enough to kickstart you for the next lesson. 

The final method for interacting with Kubernetes that I'll mention is the web dashboard. The dashboard provides easy-to-navigate views of the cluster resources along with nice dashboards. The web dashboard is covered in the deploy a stateful application in a Kubernetes cluster lab here on Cloud Academy. You can check it out after you complete this course. The web dashboard is optional, so not all clusters will have it. Kubectl is really the way to go for maximum productivity and it 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. The official Kubernetes docs at kubernetes.io/docs is a great supplemental reference for whenever you want more information about a topic. 

In the next lesson, we'll deploy our first application to Kubernetes. See you then.

About the Author
Learning paths22

Logan has been involved in software development and research since 2007 and has been in the cloud since 2012. He is an AWS Certified DevOps Engineer - Professional, AWS Certified Solutions Architect - Professional, Microsoft Certified Azure Solutions Architect Expert, MCSE: Cloud Platform and Infrastructure, Google Cloud Certified Associate Cloud Engineer, Certified Kubernetes Administrator (CKA), Certified Kubernetes Application Developer (CKAD), Linux Foundation Certified System Administrator (LFCS), and Certified OpenStack Administrator (COA). He earned his Ph.D. studying design automation and enjoys all things tech.