Container management tools
- Transfer
Deploying applications has always been a headache for developers. Oldfags, who happened to code in the days of Windows COM, probably remember “DLL Hell” - a real nightmare for developers and system administrators. But although years have passed, the daily growing flow of new technologies often creates confusion and uncertainty.
In almost all cases of software development, the development environment is significantly different from the environment in which the application will actually work. The fact that different computers will be configured differently is obvious and predictable, but different behavior of the application on these computers is unacceptable.
Given the difficulties described, container technology has actually become a revolution in deployment, and developments such as Docker have led to explosive growth in popularity. What do containers do? Allows you to deploy the software along with all the necessary dependencies and in the configuration necessary for the application to run successfully in the user runtime. Thus, containerized images allow the "packaged", final runtime to be almost identical to the development environment, while avoiding the costly emulation of the operating system.
The result is a very lightweight package that often runs just a few application-specific processes. Such a package is easy to distribute, deploy and run on various instances. To summarize the above, containers guarantee the same behavior of the application in different software environments.
This article is a brief overview of several important container management tools. If you plan to work with container technologies, you should at least familiarize yourself with this set of applications.
This is not a detailed review, nor does it provide a comparison or assessment. Think of it as a starting point in exploring container management tools. Below is a short list and overview, hoping to help you choose the tools for further in-depth study.
Docker
Docker is one of the most popular platforms. It is possible that Docker is the reason for the recent rise in the popularity of container technology (the technology itself is not so new, and has existed for more than 10 years).
Docker provides functionality for deploying and running container applications. Containers are somewhat reminiscent of virtual machines, but implemented at a higher level than the OS and with less isolation. Instead of packing the entire operating system with all the necessary software, containers only pack the application and its direct dependencies. This is the basic concept implemented by Docker.
The Docker format is similar to a regular package, except that the package is standalone and multiple copies can be run on the same host (or on different hosts). This approach maximizes resource utilization, improves performance, and reduces application size. At the same time, Docker provides a high degree of isolation, limiting application problems inside the container itself, without harming the machine.
Kubernetes
Docker is great for working with containers on a single host and provides all the necessary functionality for this purpose. But in today's realities of distributed services, an important task is to manage resources and workloads on servers and in complex infrastructures.
One such tool is Google Kubernetes. This unusual Greek word translates as “governor” or “commander”. As the name suggests, Kubernetes takes on the hard work of orchestrating (organizing) containers on many nodes, offering a wide range of useful features.
Service discovery
Recently, the ecosystem of container applications has grown along with the growing popularity of the Microservices architectural style. The idea behind Microservices Architecture is to split a heavy monolithic application into small (semi) autonomous services that are interconnected in a distributed system. And since the number of services in such a system increases significantly, it makes no sense to manually assign and take into account the ports that applications “listen to”. It is wiser to assign a port automatically after deploying the container. And although this approach solves the problem of conflict between ports, it also makes it impossible to find the right service and provide it to other services.
The solution to this problem is Service Discovery technology. Service Discovery works as follows: at the time of starting the services, the registry registers distributed keys / values with an IP address and port number, where other services can easily find and call the desired service.
Scheduler (Sheduler)
Another important feature provided by Kubernetes is scheduling. The scheduler takes on the task of launching containerized applications, taking into account available resources, current tasks and requests. In other words, the scheduler performs scaling, reassigning tasks to different hosts and moving workloads between capacities in case of problems.
Thanks to many useful features and a large community, the popularity of Kubernetes has been growing rapidly lately.
Coreos
CoreOS is a Linux-based operating system that comes complete with the functionality needed to deploy and run container applications. Despite its relatively small load balancing capabilities, CoreOS is suitable for both single-server and cluster computing environments.
CoreOS looks like a serious competitor for other popular Linux distributions due to its built-in ability to work with containers and adaptations for working with public cloud applications.
CoreOS started by using Docker as an additional level of abstraction - and as a standardized format for containers, but later released and supports its own container engine Rocket (rkt - keep reading).
Although CoreOS is open source, a commercial version of the system called Tectonic is also available. Tectonic is “freemium,” a major advantage of which is the Kubernetes distribution for container orchestration.
Etcd
CoreOS's Etcd is an open source lightweight distributed key / value repository. Etcd provides applications with a reliable tool for storing data in a server cluster and allows them to respond appropriately to changes in values. It is used by Kubernetes as a central repository where all cluster nodes can read / write configuration data, as well as to discover services (Service Discovery) and to control the selection of a leader (Leader Election).
rkt
rkt is a container management platform for Linux clusters. Based on the design of its own OS and the experience of interacting with Docker, CoreOS has developed a tool for creating, verifying and running container applications with isolation.
rkt, as an alternative to Docker, was released almost a year later and has been gaining popularity since then. You can consider rkt as an improvement in Docker for at least two reasons:
- it has more security, as it uses signature verification and default privilege sharing;
- provides portability: in addition to the ability to run Docker images, rkt is designed to launch App Container Images (ACI) - images in the format specified in the open App Container Specification (appc).
Mesos
Apache Mesos is a kernel for distributed computing systems, built on the same principles as the Linux kernel, but with a different level of abstraction. Its main goal is to consolidate the computing resources of several physical or virtual machines with a high level of isolation and make them available to the central management service, as if it were one large pool of resources. In a nutshell, Mesos allows you to use a server cluster as a single computing power.
By hosting an agent that measures and reports on the availability of resources on each machine, Mesos can plan and organize the execution of tasks, as well as verify their completion. Thus, tasks are simultaneously executed on several servers, whose available resources are considered as a single pool (the so-called Mesos Frameworks).
Consul
Consul is a distributed system that includes many operations, but the main value in it is the service discovery function (Service Discovery) and the provision of key / value storage.
As a service discovery tool, Consul allows applications to register with itself as clients providing services such as APIs. Other systems can then go directly to Consul to find available services. The built-in health check provides the ability to take action when a threat occurs, for example, refusing to accept traffic from nodes that have not passed the test.
As a key / value store, Consul provides applications with the ability to store configuration data across nodes and respond to changes in that data, just like etcd. Consul, in addition, provides native support for several data centers, a more comprehensive health check system based on the gossip pool, its own service search pool and a web interface for monitoring services.
Google container engine
The Google Container Engine (GKE) is a cluster manager and orchestration system for Docker containers. The open source system created by Google’s Kubernetes-based campaign can be used to:
- create, resize, and debug container clusters
- auto scaling applications
- create and manage pods
Compared to Kubernetes, the Google Container Engine provides an additional set of services for developers and system administrators. For example, load balancing, metric tracking, and logging are all provided by GKE.
AWS ECS
Amazon’s Google GKE is similar to the EC2 Container Service (ECS). Like most of these services, ECS supports Docker and allows you to run containerized applications on Amazon EC2 instances.
Like GKE, ECS is an actively managed service with many convenient features, including container deployment, scheduling, automatic scaling, load balancing, cluster-level resource monitoring, and seamless interaction with the rest of the AWS service stack. Although ECS runs only on VPC (Amazon Virtual Private Cloud), the service itself is free, so you’ll only have to pay for using Amazon’s resources at the regular rate.
As an advertisement.These are not just virtual servers! These are VPS (KVM) with dedicated drives, which can be no worse than dedicated servers, and in most cases - better! We made VPS (KVM) with dedicated drives in the Netherlands and the USA (configurations from VPS (KVM) - E5-2650v4 (6 Cores) / 10GB DDR4 / 240GB SSD or 4TB HDD / 1Gbps 10TB available at a uniquely low price - from $ 29 / month , options with RAID1 and RAID10 are available) , do not miss the chance to place an order for a new type of virtual server, where all resources belong to you, as on a dedicated one, and the price is much lower, with a much more productive hardware!
How to build the infrastructure of the building. class using Dell R730xd E5-2650 v4 servers costing 9,000 euros for a penny? Dell R730xd 2 times cheaper? Only here2 x Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 TV from $ 249 in the Netherlands and the USA!