Mastering kubernetes

Expert

Mastering kubernetes

Overview
Curriculum
Reviews

What is Kubernetes?

Kubernetes is an open-source platform for deploying and managing containerized applications. At a high-level, Kubernetes is two things:

    1. A cluster

    2. An orchestrator

A Kubernetes cluster has one or more machines that provide CPU, memory and other things required to run applications. The orchestration element implements the intelligence to manage applications.

A brief history of Kubernetes

Kubernetes started life inside of Google where it was designed as a container orchestrator building on lessons learned from other internal Google technologies such as Borg and Omega.

Kubernetes was released to the community as an open-source project in the summer of 2014.

In March 2018, Kubernetes became the first project to graduate from the Cloud Native Computing Foundation (CNCF). Graduation signifies strong project governance, maturity, and that a project is considered ready for production.

Kubernetes is now a mature technology that averages three releases per year. Releases are backwards-compatible with well-established policies for adding and deprecating features.

2020 was a major year for Kubernetes adoption. Most of the major clouds offered managed Kubernetes services designed to make it as easy as possible for individuals and organizations to get started with Kubernetes.     

As a side note, the original founders of Kubernetes wanted to call it “Seven of Nine” after the Borg drone from Star Trek Voyager. However, due to copyright restrictions, the founders decided to call it “Kubernetes” based on the Greek word for helmsman. However, they gave the Kubernetes wheel logo seven spokes, instead of the traditional six or eight, as a subtle reference to “Seven of Nine.”

What is a Kubernetes cluster?

A Kubernetes cluster is one or more nodes working together to run containerised applications. Control plane nodes implement intelligence such as scheduling, self-healing, and auto-scaling. Worker nodes provide the CPU, memory and networking required to execute user apps.

What is a Kubernetes node?

Kubernetes is a cluster of nodes that host user applications. Nodes are either control plane nodes that implement Kubernetes intelligence, or worker nodes that host user applications. Both types can be physical servers, virtual machines, cloud instances, and even things like Raspberry Pis.

Control plane nodes

Control plane nodes (formerly called masters) run the control plane services, which can be thought of as the brain of Kubernetes. These services include the scheduler, the API server, and the cluster store. You should deploy three or five control plane nodes and spread them across fault domains for high availability.

Worker nodes

Worker nodes are where user applications run. The size and number of worker nodes in a cluster will depend on application requirements. However, you should also spread them across fault domains so that application high availability can be maintained.

The pod network

Every Kubernetes cluster implements a special network called the pod network. This is a large flat network, often a VXLAN overlay network, that spans all nodes in the cluster. Every application pod is deployed to the pod network, meaning every application pod can talk to every other application pod. Out-of-the-box the pod network is usually wide open with no security. In production environments you should use Kubernetes network policies and other technologies to secure it.

What is a pod in Kubernetes?

A Pod is the smallest unit of deployment in Kubernetes. For example, if you have a web container that you need to deploy to Kubernetes, you have to deploy it inside a Pod. If you need to scale the web service up or down, you add or remove pods. The simplest Pods run a single containerised app, however, more complex patterns exist where a single pod runs multiple complimentary containers.

What is “managed Kubernetes”?

Building your own Kubernetes clusters can be hard. For example, you have to size them for high availability and application performance. You also have to take care of day-to-day operational tasks such as updates, patching, certificate management and more.

Managed Kubernetes is a model where a cloud provider hides all of this complexity from you and provides you with a secure API endpoint for you to just use your cluster.

You pay a premium for managed Kubernetes, but it’s as close to zero-effort Kubernetes as you’ll get.

What is kubectl?

Kubectl is the official Kubernetes command-line utility. It’s used to manage elements of Kubernetes infrastructure as well as deploy and manage user applications. It’s available on Windows, Linux, macOS, and other platforms and is typically installed on a machine outside the cluster such as an admin laptop.

What are the benefits of Kubernetes?

Kubernetes is often referred to as the “OS of the cloud”. This is because it abstracts infrastructure in much the same way as a traditional OS like Linux or Windows. There are a lot of benefits to running Kubernetes, including infrastructure abstraction, orchestration at scale and a common API.    

Consider how an operating system works. Developers can write applications to run on Windows without having to care about the specifics of underlying server hardware. Servers and VMs can even be upgraded or swapped out without the app developer having to change the app.    

It’s much the same with Kubernetes. As long as apps are designed to run on Kubernetes, it’s possible to change the underlying cloud or hardware platform without having to change the app. This abstraction of underlying infrastructure can simplify the process of migrating apps from one cloud to another.

Kubernetes also implements features such self-healing and dynamic auto-scaling that enable management of containers at scale.

The popularity of Kubernetes has created an environment where many new products and technologies come to Kubernetes first and are often designed specifically for Kubernetes. These are often exposed via the Kubernetes API so they strongly resemble native Kubernetes features.

What are the limitations of Kubernetes?

Two of the most common limitations associated with Kubernetes are the steep on-ramp and its container-centric view.

Kubernetes is notorious for having a steep learning curve and on-ramp. Still, Kubernetes has become significantly simpler in recent years. The core Kubernetes project itself is easier to install and maintain, while major cloud platforms and their managed services take much of the effort out of using Kubernetes.

While Kubernetes can orchestrate virtual machine workloads, serverless workloads, and WebAssembly workloads, much of its DNA is tuned to work with containers. For example, WebAssembly workloads start incredibly fast and enable true scale-to-zero event-driven architectures. However, Kubernetes was built to manage containers that have significantly longer start times and aren’t well-suited to scale-to-zero or true cold starts. 

That said, Kubernetes is under constant development and there’s no reason to believe it won’t adapt to be better suited to new technologies and patterns.

What is Kubernetes used for?

Kubernetes use is on the rise across almost all verticals thanks to its stability and maturity, as well as the many tools that enhance it. In very broad terms, Kubernetes simplifies scalability and productivity for enterprise applications. In the past couple of years, it’s become more common for organizations to lead with Kubernetes as their orchestration platform of choice.

One area where Kubernetes has seen slower adoption is edge computing and other resource-constrained environments. This has been primarily due to containers being too big and resource intensive. 

However, more powerful edge devices and smaller Kubernetes distros are changing this. For example, it’s becoming more common for lightweight Kubernetes distros such as K3d, KubeEdge, or MicroK8s to deploy and manage small containerised applications to edge and IoT devices.

Mastering kubernetes

Curriculum

  • 0 Sections
  • 0 Lessons
  • 0 Quizzes
  • 40h Duration
0 out of 5

0 user ratings

Deleting Course Review

Are you sure? You can't restore this back

Related Courses

Expert

Mastering Rancher

  • Introduction to Rancher
  • Explore Rancher Architecture
  • Access Rancher UI
40h
0
0
0
30,000.00
Buy Now
Scroll to top