The word “cloud computing” is believed to be very familiar to everyone.
As a mainstream trend in the development of information technology, it frequently appears in front of us. Along with it, there are also these conceptual terms – OpenStack, Hypervisor, KVM, Docker, K8S, etc.
These concepts are all in the field of cloud computing technology.
For beginners, understanding the specific meaning of these concepts is not an easy task.
Therefore, today’s article will give you an easy-to-understand introduction, explain these cloud computing concepts and the relationship between them, and hope to help you get started.
What is the Cloud Computing?
When the computer was invented, there was no network. Every computer (PC) was a single machine.
This stand-alone unit includes hardware such as CPU, memory, hard disk, and graphics card. The user installs the operating system and application software on a single machine to complete his work.
Later, with the network, between the stand-alone and the stand-alone, you can exchange information and work together.
Then, the performance of the stand-alone is getting stronger and stronger, and the server appeared. It has been found that some servers can be centralized, placed in the computer room, and then allowed to access and use computer resources in the computer room through the network.
Later, the small network became a large network, and there was the Internet. The small computer room has become a large computer room, and there is an IDC (Internet Data Center).
As more and more computer resources and application services (Application, for example, web pages, movies) are brought together, it becomes “Cloud Computing.” Countless large computer rooms have become “clouds.”
How to Implement the Cloud Computing?
The concept of cloud computing is simple. To put it bluntly, it is to centralize computer resources and put them on the network. However, the implementation of cloud computing is very complicated.
For example, if you just put a server in the company’s small computer room, open an FTP download service, and then use it for movie sharing between several colleagues, it is very simple.
If it is one Shopping Festival, billions of users around the world visit the online shop, dozens of PBs per day (1PB = 1024TB = 1024 × 1024GB), hundreds of GB of traffic per second… This problem is not a few servers and a few network cables that can solve.
At this time, it is necessary to design a cloud computing system with ultra-large capacity, ultra-high concurrent (simultaneous access), ultra-fast, and super-strong security to meet the requirements of smooth operation of the business. This is the complexity of cloud computing.
Just said, we put computer resources in the cloud. This computer resource is actually divided into several levels:
It is the lowest level of hardware resources, including CPU (computing resources), hard disks (storage resources), and network cards (network resources).
To be more advanced, I am not going to use the CPU, hard disk, or network card directly. I hope that you can install the operating system (such as Windows, Linux) and install the database software. I will use it again.
More advanced, you not only have to install the basic operating system, but also to install specific application software, such as FTP server software, online video server software, etc., I can use the service directly.
These three levels are IaaS, Paas, and SaaS that people often hear.
At present, mainstream cloud computing service providers, such as Amazon AWS, Alibaba Cloud, Huawei Cloud, are all white, providing the above three levels of cloud resources. What you want, what they offer. How much you want, how much they provide.
How do Amazon AWS and Huawei provide such a diverse and multi-level cloud computing service?
Is it a manual arrangement?
If you want an eight-core CPU, 16GB RAM, 500GB hard drive server, AWS temporarily arranges engineers to help you assemble?
If you want to install CentOS 7.2 (a Linux-like operating system), MySQL 5.5.60 (a database system), Ali also temporarily let engineers help you install the configuration?
This is obviously impossible, can’t afford manpower, and can’t wait for time.
As a result, there are a variety of software and platforms that are responsible for quick calls and centralized management of resources.
What is the Virtualization?
If you want to manage physical resources, the first step is to “virtualize.”
Virtualization is the foundation of cloud computing. Simply put, virtualization is the operation of multiple “virtual servers” on a single physical server. This kind of virtual server is also called virtual machine (VM, Virtual Machine).
On the surface, these virtual machines are independent servers, but in reality, they share the CPU, memory, hardware, network card and other resources of the physical server.
A physical machine, often referred to as a “host.” A virtual machine is called a “guest”.
Who will complete the work of virtualizing virtual resources?
It is the famous Hypervisor.
Hypervisor, is a “super supervisor”, also known as VMM (Virtual Machine Monitor). It is not a specific piece of software, but a general term for a class of software.
Hypervisors fall into two broad categories:
In the first category, the hypervisor runs directly on top of the physical machine. The virtual machine runs on top of the hypervisor. In the second category, a normal operating system (such as Linux or Windows) is installed on the physical machine, and then the hypervisor is installed on the normal operating system to generate and manage the virtual machine.
Like VMware, KVM, Xen, Virtual Box, all belong to the hypervisor.
Everyone should be familiar with VMware, which is VMware Workstation. When learning Linux, many people install WMware under Windows and then create a Linux virtual machine.
However, the really powerful one is the KVM (kernel-based virtual machine). It is currently the hottest and most sought after virtualization solution.
Hypervisor software such as KVM actually provides a virtualization capability that simulates the operation of the CPU and is more low-level. However, its user interaction is not good and it is not convenient to use.
Therefore, in order to better manage virtual machines, a cloud management platform such as OpenStack is needed.
About OpenStack, it is a bit like a store, responsible for managing goods (computing resources, storage resources, network resources, etc.), sold to users, but it does not manufacture goods itself (does not have virtualization capabilities), its goods, from KVM. Of course, if you don’t use KVM, you can use other hypervisors such as Xen.
What is a container?
What are the Docker and K8S?
Earlier we introduced virtualization. After using virtualization for a while, people found that it had some problems:
Different users sometimes just want to run some simple programs and run a small process. In order not to affect each other, a virtual machine must be built. If you build a virtual machine, obviously the waste will be a bit large, and the operation is more complicated, and it will take a long time.
Moreover, sometimes, if you want to migrate your own service program, you need to migrate the entire virtual machine. Obviously, the migration process can be complicated.
Is there a way to be more flexible and faster?
Yes, this introduces a “container”.
Containers are also virtualized, but are “lightweight” virtualization. Its purpose is the same as that of a virtual machine, in order to create an “isolation environment.” However, it is very different from virtual machines – virtual machines are resource isolation at the operating system level, and containers are essentially process-level resource isolation.
Virtualization VS Container
The Docker is the tool for creating containers, which is the application container engine.
Compared to traditional virtual machines, Docker has the advantage of being fast, second-order, and resource-efficient (one host can run thousands of Docker containers simultaneously). In addition, it takes up a small amount of space, virtual machines generally cost a few gigabytes to tens of gigabytes, and containers only need MB or even KB.
In addition to Docker creating the container, we also need a tool to orchestrate the container.
This tool is the K8S.
K8S is Kubernetes. The word Kubernetes is very long, so everyone abbreviates 8 letters in the middle and becomes K8S.
K8S is a container cluster management system, the main responsibility is Container Orchestration – start container, automate deployment, expand and manage container applications, and recycle containers.
Simply put, the K8S is a bit like a babysitter for a container. It is responsible for managing which machine the container is running on, monitoring the container for problems, controlling the communication between the container and the outside world, and so on.
In addition to the K8S, there are many container management platforms, such as Compose, Marathon, Swarm, Mesos, and others.
Docker and K8S, instead of infrastructure and physical resources, are application layers, so they belong to PaaS.
Want to discuss? Leave your comment now!