订阅 RSS 源

Friends and acquaintances often reach out to me for questions on where and how they can start learning Kubernetes. These requests are from a mixed bag of both Ops and Devs people who are still working with legacy systems like VM and monolith applications. Terms like CI/CD and DevOps are nothing but buzzwords to them, as they are still busy watering and feeding the legacy systems they maintain as part of their daily job requirements.

They are showing interest now that they’ve noticed more and more workloads being migrated away from VM to containers, and monolith applications are re-architected to microservices to handle innovation easily and respond to the rapid market demands. The time is now for them to learn the tools, platforms, and solutions causing this mass migration to Kubernetes.

This encouraged me to write this article, to help my friends and others who wanted to start learning Kubernetes to push their own journey toward containers and the cloud-native application world.

Disclaimer: Learning Kubernetes is going to be a bumpy ride. You will learn some new terminologies and new ways of managing and deploying your application the cloud-native way.

So what is Kubernetes anyway?

The first thing to do when learning Kubernetes is to find a clear explanation of what it is. There are a lot of books and YouTube references that you can use to get the most basic explanations—I found this YouTube video, The Illustrated Children’s Guide to Kubernetes, that I thought was the best explanation of what Kubernetes is. Have a look before reading on.

The Kubernetes components

Kubernetes is not a single machine but rather a platform. When you deploy Kubernetes, you will get a cluster. A cluster consists of a set of master and worker machines, called nodes, that run containerized applications. Every cluster has at least one worker node. These are the Kubernetes components.

Below is what Kubernetes looks like with all the components tied together.

Diagram of Kubernetes cluster components when put together.

How to start?

When learning Kubernetes, you need to deploy a cluster. But that will be a challenge for people who aren’t able to get their hands on the extra hardware and find time to set it up along with the required networking and computing resources. This requirement often derails a Kubernetes journey before it starts. So what is the best way to start?

Fortunately, there are multiple open source projects that allow you to deploy a Kubernetes cluster from your laptop. Let’s take a look at those projects before I offer my own opinion on which is the best way to learn Kubernetes and deploy your first cloud-native application.

Local Kubernetes projects to the rescue

These are the local projects that you can use to explore Kubernetes. Note that these projects are not enterprise-ready and only are supposed to be used for learning purposes.

Note: Before starting your Kubernetes exploration, make sure that you have adequate resources on your laptop.

  • Linux: Red Hat Enterprise Linux, Fedora, CentOS
  • 16 GiB or more of RAM per machine (any less leaves little room for your apps).
  • 2 CPUs on the machine that you use as a control-plane node.
  • Full network connectivity among all machines in the cluster.

minikube

Minikube is among the easiest to install among these options. It will provide you with a single-node cluster running on top of either VirtualBox or KVM.

Resource requirements:

  • CPU: 2
  • Memory: 2 GB
  • Disk space: 20 GB

Once you have a running cluster (single-node), then you can start to familiarize yourself by deploying a simple application using the kubectl command line to interact with your local Kubernetes cluster. The only issue that I noticed while using minikube is the limitation of adding a worker node to complete the cluster experience.

kind 

Kind requires you to run Kubernetes in a Docker container. The kind installation instructions can be found here.

Although kind is easy to install, the problem that I see in using this project is the complex network configuration to access the cluster. For someone who is just starting to learn Kubernetes, it could be prohibitive.

Resource Requirements:

  • CPU: 2
  • Memory: 8GB
  • Storage: 20GB

kubeadm

The cluster spin-up using kubeadm can be used to deploy cloud-native applications. To start with, you will have a single master node and a worker node.

Installing kubeadm on your laptop is the nearest experience that you can get to production-grade Kubernetes cluster deployment. Because of this, kubeadm is also probably the hardest way to learn Kubernetes.

Resource Requirements:

  • CPU: 2
  • Memory: 8GB (you will need extra memory for application deployment).
  • Storage: 20GB

Minishift

Minishift is a project based in OKD, the upstream behind OpenShift. When you install Minishift, it will provide you with a single-node OpenShift cluster running inside either in VirtualBox or KVM.

Resource Requirements:

  • CPU: 2
  • Memory: 4 GB
  • Storage: 20 GB

Minishift is easy to install and provides more flexibility compared to other projects because you can install it in Linux, Windows, and macOS.

Since Minishift is based in OKD, you will get to learn not only the Kubernetes basics but also Openshift and some of the components available in Minishift.

The drawback of Minishift is that it only supports OKD 3.11, so you will not be able to get the full experience of the new version of OKD 4. Minishift is replaced by CodeReady Containers to get the full experience of OKD 4, as described here.

CodeReady Containers (CRC) 

CRC is based in OKD 4.1, which provides a single-node configuration on your laptop. It operates almost exactly like Minishift and minikube. The installation is easy as well; the documentation can be found here.

Resource Requirements:

  • CPU: 4
  • Memory: 8 GB
  • Storage: 30 GB

[ Get this free ebook: Managing your Kubernetes clusters for dummies. ]

Conclusions

There are many ways of deploying Kubernetes locally to start your own journey towards mastering the important skills that are at the center of the current IT revolution.

If you’re just starting out, I suggest learning Kubernetes using minikube because I found that this is the easiest for beginners. Once you are familiar with the Kubernetes concept, the next step is to move on to CRC. This will raise your Kubernetes skills to the next level so you can learn the enterprise-ready components that most of the advanced adapters are already using.

As mentioned earlier, learning Kubernetes is like learning Linux operating systems all over again. Don’t be discouraged if you hit a roadblock. Having a strong grasp on this technology is like investing in your future and, in a way, helps you future proof yourself.


关于作者

UI_Icon-Red_Hat-Close-A-Black-RGB

按频道浏览

automation icon

自动化

有关技术、团队和环境 IT 自动化的最新信息

AI icon

人工智能

平台更新使客户可以在任何地方运行人工智能工作负载

open hybrid cloud icon

开放混合云

了解我们如何利用混合云构建更灵活的未来

security icon

安全防护

有关我们如何跨环境和技术减少风险的最新信息

edge icon

边缘计算

简化边缘运维的平台更新

Infrastructure icon

基础架构

全球领先企业 Linux 平台的最新动态

application development icon

应用领域

我们针对最严峻的应用挑战的解决方案

Virtualization icon

虚拟化

适用于您的本地或跨云工作负载的企业虚拟化的未来