“Cloud computing” is a term that everyone is very familiar with.
As a mainstream trend in information technology development, it frequently appears before us. Along with it come these concept names—OpenStack, Hypervisor, KVM, Docker, K8S…

All these terms belong to the field of cloud computing technology.
For beginners, understanding the specific meanings of these concepts is not an easy task.
Therefore, today’s article by Xiaozao will provide a simple and easy-to-understand introduction, explaining these cloud computing concepts and their relationships, hoping to assist everyone in getting started.
What Is Cloud Computing
Before introducing those strange terms, let me first explain cloud computing.
When computers were first invented, there was no network, and each computer (PC) was a standalone machine.

This standalone machine includes hardware such as CPU, memory, hard drive, and graphics card. Users install operating systems and application software on the machine to complete their work.
Later, networks were developed, allowing standalone machines to exchange information and work collaboratively.

As machines became more powerful, servers emerged. People discovered that they could centralize some servers in a data center and allow users to access and use the computing resources in the data center via the network.

Eventually, small networks evolved into large networks, leading to the emergence of the Internet. Small data centers became large data centers, resulting in the IDC (Internet Data Center).
As more and more computing resources and application services (e.g., browsing the web, downloading movies) were centralized, it transformed into—“cloud computing (Cloud Computing)”. Countless large data centers became the “cloud.”

Cloud computing
Does it seem too simple? Don’t rush, let’s dive deeper.
The principle of cloud computing is simple; in short, it is about centralizing computing resources and placing them on the network. However, the implementation of cloud computing is very complex.
For example, if you only set up a server in a small company data center to run an FTP download service for sharing movies among a few colleagues, that is indeed very simple.
However, for the “Double 11” shopping festival on Taobao, where billions of users globally access Alibaba’s Taobao website with daily traffic exceeding several PB (1PB=1024TB=1024×1024GB), and hundreds of GB per second… this cannot be solved with just a few network cables and servers.
At this point, a cloud computing system needs to be designed that can handle super-large capacity, super-high concurrency (simultaneous access), super-fast speed, and super-strong security to ensure smooth business operations.
This is where the complexity of cloud computing lies.
As mentioned earlier, we place computing resources in the cloud. These computing resources are actually divided into several layers:
The first layer is the lowest layer of hardware resources, mainly including CPU (computing resources), hard drives (storage resources), and network cards (network resources).
The second layer is a bit more advanced; I do not intend to use the CPU, hard drive, and network card directly. I hope you can install the operating system (e.g., Windows, Linux) and database software, and then I will use it.
The third layer is even more advanced; you not only need to install the basic operating system but also specific application software, such as FTP server software, online video server software, etc., so I can use the services directly.
These three layers are often referred to as IaaS, PaaS, and SaaS.

SaaS: Software-as-a-Service
PaaS: Platform-as-a-Service
IaaS: Infrastructure-as-a-Service
Here’s another diagram, which may be more intuitive:

Currently, mainstream cloud service providers, such as Amazon AWS, Alibaba Cloud, Huawei Cloud, Tianyi Cloud, Tencent Cloud, are essentially providing the above three layers of cloud resources. Whatever you want, they will provide. Whatever amount you need, they will supply.

Let’s continue.
With such diverse and multi-layered cloud computing services, how do Alibaba, Huawei, and others provide them?
Is it all done manually?
If you need a server with an eight-core CPU, 16GB of memory, and a 500GB hard drive, does Alibaba temporarily assign an engineer to assemble it for you? If you want to install CentOS 7.2 (a type of Linux operating system) and MySQL 5.5.60 (a type of database system), does Alibaba also temporarily have an engineer help you install and configure it?
This is clearly impossible; it is not feasible in terms of manpower or time.
Thus, various software and platforms have been developed to quickly call and manage resources.
What Is Virtualization
If we want to manage physical resources, the first step is “virtualization”.
Virtualization is the foundation of cloud computing. In simple terms, virtualization allows multiple “virtual servers” to run on a single physical server. These virtual servers are also called virtual machines (VM).
On the surface, these virtual machines appear to be independent servers, but in reality, they share the physical server’s CPU, memory, hardware, network card, and other resources.

The physical machine is commonly referred to as the “host.” The virtual machine is referred to as the “guest.”
Who completes the virtualization of physical resources?
It is the renowned Hypervisor .
Hypervisor, translated into Chinese as “supervisor,” is also known as VMM (Virtual Machine Monitor). It is not a specific software but a general term for a type of software.
Hypervisors are divided into two categories:
The first type runs directly on the physical machine, while virtual machines run on top of the hypervisor. The second type involves installing a standard operating system (e.g., Linux or Windows) on the physical machine, and then installing the hypervisor on that operating system to generate and manage virtual machines.

Software like VMware, KVM, Xen, and Virtual Box all belong to Hypervisor.
VMware is well-known; it is VMware Workstation. Many people install VMware on Windows systems to create Linux virtual machines when learning Linux.

However, the truly powerful one is KVM (kernel-based virtual machine). It is currently the most popular and sought-after virtualization solution.

Hypervisor software like KVM actually provides a virtualization capability that simulates CPU operation at a lower level. However, its user interaction is not very good and is inconvenient to use.
Thus, to better manage virtual machines, a cloud management platform like OpenStack is needed.

I previously introduced OpenStack (link). It is like a store that manages products (computing resources, storage resources, network resources, etc.) and sells them to users, but it does not manufacture products (it lacks virtualization capabilities); its products come from KVM. Of course, if KVM is not used, other hypervisors like Xen can also be used.

The OpenStack management interface is much better than the command line, right?
Please remember that the concepts mentioned above, including VM, KVM, OpenStack, etc., mainly belong to IaaS (Infrastructure as a Service). This is not difficult to understand, right?
What Is a Container
Let’s continue.
So, what is a container? What are Docker and K8S that experts often mention?
Earlier, we introduced virtualization. After using virtualization for some time, people discovered some issues:
Different users sometimes just want to run their simple programs or a small process. To avoid mutual interference, virtual machines must be established. However, creating virtual machines clearly leads to some waste, and the operation is relatively complex, taking a long time.
Moreover, sometimes, if you want to migrate your service program, you must migrate the entire virtual machine. Clearly, the migration process can also be quite complicated.
Is there a way to be more flexible and faster?
Yes, this is where “containers (Container)” come into play.
Containers are also a form of virtualization but are considered “lightweight” virtualization. Their goal, like virtual machines, is to create an “isolated environment.” However, they differ significantly from virtual machines—virtual machines provide operating system-level resource isolation, while containers fundamentally provide process-level resource isolation.

Virtualization vs. Containers
The widely known Docker is the tool for creating containers and serves as the application container engine.
The Chinese meaning of Docker is “dock worker,” and its logo features a whale carrying many shipping containers.

Compared to traditional virtual machines, Docker has obvious advantages; it has a very fast startup time, measured in seconds, and has a high resource utilization rate (one host can run thousands of Docker containers simultaneously). Additionally, it takes up very little space; virtual machines generally require several GB to dozens of GB, while containers only need MB or even KB.

Besides Docker for creating containers, we also need a tool for orchestrating containers.
This tool is K8S.
K8S stands for Kubernetes, which means helmsman or navigator in Chinese. The word Kubernetes is long, so people abbreviate the eight letters in the middle to 8, resulting in K8S.

K8S is a container cluster management system, mainly responsible for container orchestration—starting containers, automating deployment, scaling, and managing container applications, as well as recycling containers.
In simple terms, K8S is like a nanny for containers. It manages where containers run, monitors if containers have issues, controls communication between containers and the outside world, and more.
The following K8S system architecture diagram illustrates the relationship between K8S and containers.

In addition to K8S, there are many other container management platforms, such as Compose, Marathon, Swarm, and Mesos.
Docker and K8S focus not on infrastructure and physical resources, but on the application layer, so they belong to PaaS. Do you understand?
Alright, that’s it for today. If we go on, many people will probably get dizzy again.
As mentioned at the beginning of the article, today’s focus was to introduce the meanings of terms like KVM, Hypervisor, OpenStack, Docker, and K8S, their positions in the cloud computing system, and their interrelationships. Cloud computing involves a large number of demands. The same demand can be fulfilled by many different technologies. The same technology often has multiple competing manufacturers. Therefore, there will be many concepts and terms, and the development changes will be rapid.
In any case, clarifying the key terms and concepts is the first step in mastering cloud computing.
In the future, Xiaozao will release more articles about cloud computing, so stay tuned!