Method and system for implementing container scaling and movement
A machine learning-based approach for container orchestration in microservices optimizes scaling and migration, addressing inefficiencies in existing tools by predicting future workload demands and reducing network latency.
Patent Information
- Application Number
- JP2023524270
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-11-24
- Filing Date
- 2021-10-21
- Publication Date
- 2025-08-27
- Estimated Expiration
- 2041-10-21
AI Technical Summary
Current container orchestration tools lack the intelligence to efficiently scale and move containers based on future workload demands, leading to suboptimal performance and network latency in microservices architectures.
Implementing a machine learning component that extracts intra-node and inter-node features to predict container scaling and migration needs, optimizing container orchestration policies to meet future workload demands and reduce network latency.
Automated container orchestration improves microservice performance and reduces network latency by proactively scaling and moving containers based on predictive analysis.
Smart Images

Figure 0007730249000002 
Figure 0007730249000003 
Figure 0007730249000004
Abstract
Description
[Technical Field]
[0001] The present disclosure relates generally to container-based microservices, and more particularly to automatically orchestrating containers for microservices by evaluating intra-node and inter-node characteristics of the microservices and then evaluating the results of the container orchestration. [Background technology]
[0002] Container platforms are currently used to package applications so that they have access to a unique set of resources of the host machine's operating system. In a microservices architecture, an application is further decomposed into various individual services, each packaged in a separate container. The benefit is that containers are scalable and ephemeral; in other words, instances of an application or service hosted in a container can be migrated as needed.
[0003] Still, scalability is a challenging operation. Container orchestration is all about managing the lifecycle of containers, especially in large, dynamic environments. Container orchestration controls automate many tasks, such as provisioning and deploying containers, adding or removing containers to spread application load evenly across the host infrastructure, moving containers from one host to another when a host is under-resourced or becomes unavailable, allocating resources among containers, and the like.
[0004] When it's time to deploy a new container into the cluster, the container orchestration tool schedules the deployment and finds the most suitable host to place the container based on given constraints, such as the availability of processors, memory, storage, network resources, or the like. It's also possible for a container to be placed based on its proximity to other hosts.
[0005] A cluster is a set of nodes with at least one controller node, which can be physical or virtual machines, and several worker nodes. Each node has its own operating system environment. The controller manages the scheduling and deployment of application instances across the nodes, and the complete set of services that the controller node runs is known as the control plane. The scheduler assigns nodes to pods based on resource and defined policy limits. A pod is the basic scheduling unit and consists of one or more containers that are guaranteed to be co-located on a host machine and have the ability to share resources. Each pod is assigned a unique IP address within the cluster, allowing applications to use ports without conflict.
[0006] Container orchestration tools, such as Kubernetes, DockerSwarm, or similar, are components for automatically deploying, scaling, and managing containerized applications across clusters of nodes. Container orchestration tools group the containers that make up an application into logical units for easier management and discovery. Multi-cluster container orchestration environments can also manage clusters of containerized applications that can span public, private, and hybrid clouds.
[0007] A microservice is a set of pods that work together, such as one tier of a multi-tier application. Microservices are a structural and organizational approach to software development in which software is composed of small, independent services that communicate through well-defined application programming interfaces (APIs). A microservices architecture makes applications easier to scale and faster to develop, enabling innovation and accelerating time to market for new features. With a microservices architecture, applications are built as independent components, with each application process running as a service. These services communicate through well-defined interfaces using lightweight APIs. Services are built for business capabilities, and each service performs a single function. Because services run independently, each service can be updated, deployed, and scaled to meet the demands of the application's specific functionality. Summary of the Invention
[0008] According to one illustrative embodiment, a computer-implemented method for automatically performing container scaling and migration for container-based microservices is provided. The computer extracts a first set of features from each microservice of a plurality of different microservices. The computer uses the trained predictive model and the first set of features extracted from each microservice to predict the number of containers required at a future time point for each microservice of the plurality of different microservices. The computer assigns a scaling label and a scaling value to each microservice of the plurality of different microservices based on a predicted change in the current number of containers corresponding to each microservice in accordance with the number of containers required at a future time point for each microservice. The computer automatically adjusts the current number of containers corresponding to each microservice of the plurality of different microservices based on the scaling label and the scaling value assigned to each microservice. According to other illustrative embodiments, a computer system and computer program product are provided for automatically performing container scaling and migration for container-based microservices. [Brief explanation of the drawings]
[0009] [Figure 1] 1 is a pictorial representation of a network of data processing systems in which an illustrative embodiment may be implemented; [Figure 2] FIG. 1 is a diagram of a data processing system in which illustrative embodiments may be implemented. [Figure 3] FIG. 1 illustrates a cloud computing environment in which illustrative embodiments may be implemented. [Figure 4] FIG. 1 illustrates an example of abstraction layers in a cloud computing environment in accordance with an illustrative embodiment. [Figure 5] FIG. 1 illustrates an example of a container orchestration system in accordance with an illustrative embodiment. [Figure 6] FIG. 10 illustrates an example of a prediction table in accordance with an illustrative embodiment. [Figure 7] FIG. 10 illustrates an example of a container movement process in accordance with an illustrative embodiment. [Figure 8] FIG. 10 illustrates an example of a container movement identification table in accordance with an illustrative embodiment. [Figure 9A] 1 is a flowchart illustrating a process for anticipating container scaling and migration of container-based microservices in accordance with an illustrative embodiment. [Figure 9B] 1 is a flowchart illustrating a process for anticipating container scaling and migration of container-based microservices in accordance with an illustrative embodiment. DETAILED DESCRIPTION OF THE INVENTION
[0010] The present invention may be a system, method, or computer program product, or a combination thereof, at any possible level of technical detail of integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions for causing a processor to carry out aspects of the present invention.
[0011] A computer-readable storage medium can be a tangible device capable of retaining and storing instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but is not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disks (DVDs), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge-in-groove structures with instructions recorded on them, and any suitable combination of the foregoing. Computer-readable storage media, as used herein, should not be construed as being signals that are transitory in nature, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission medium (e.g., light pulses passing through fiber optic cable), or electrical signals transmitted through wires.
[0012] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or external storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may comprise copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage in a computer-readable storage medium in the respective computing / processing device.
[0013] Computer-readable program instructions for carrying out the operations of the present invention may be either source or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine language instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuit devices, or object-oriented programming languages such as Smalltalk®, C++, or the like, and procedural programming languages such as the "C" programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuitry, a field programmable gate array (FPGA), or a programmable logic array (PLA) can execute computer readable program instructions by utilizing state information of the computer readable program instructions to individualize the electronic circuitry to implement aspects of the present invention.
[0014] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0015] These computer-readable program instructions may be provided to a computer processor or other programmable data processing apparatus to produce a machine, the instructions of which execute by the computer processor or other programmable data processing apparatus to produce means for performing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium such that the computer-readable storage medium comprises an article of manufacture including instructions for performing aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams, and may instruct a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner.
[0016] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device to cause the computer, other programmable apparatus, or other device to perform a series of operational steps such that the instructions executing on the computer, other programmable apparatus, or other device produce a computer-executed process to perform the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.
[0017] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing a specified logical function. In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may actually be implemented as a single step that is executed concurrently, substantially concurrently, partially, or fully overlapping in time, or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. It should also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, can be implemented by a dedicated hardware-based system that performs the specified functions or acts or executes a combination of dedicated hardware and computer instructions.
[0018] Referring now to the figures, and in particular to Figures 1-5, diagrams of data processing environments in which illustrative embodiments may be implemented are provided. It should be understood that Figures 1-5 are intended as examples only and are not intended to assert or imply any limitation with respect to the environments in which different embodiments may be implemented. Many modifications to the depicted environments may be made.
[0019] 1 depicts a diagrammatic representation of a network of data processing systems in which illustrative embodiments may be implemented. Network data processing system 100 is a network of computers, data processing systems, and other devices in which illustrative embodiments may be implemented. Network data processing system 100 includes network 102, which is the medium used to provide communications links between the computers, data processing systems, and other devices connected together within network data processing system 100. Network 102 may include connections such as, for example, wired communications links, wireless communications links, fiber optic cables, and the like.
[0020] In the depicted example, server 104 and server 106, along with storage 108, connect to network 102. Server 104 and server 106 may be, for example, server computers with high-speed connections to network 102. Furthermore, server 104 and server 106 provide container orchestration services to microservices running on client compute node devices by evaluating the intra-node and inter-node characteristics of the microservices and then evaluating the container orchestration results (i.e., scaling up or down containers within compute nodes based on the evaluation of the intra-node characteristics, and moving containers between nodes based on the evaluation of the inter-node characteristics). Note also that server 104 and server 106 may each represent multiple servers in one or more cloud environments. Alternatively, server 104 and server 106 may each represent a cluster of servers in one or more data centers.
[0021] Client 110, client 112, and client 114 also connect to network 102. Clients 110, 112, and 114 are client compute node devices of server 104 and server 106. In this example, clients 110, 112, and 114 are network computers with wired communication links to network 102. Nevertheless, it should be noted that clients 110, 112, and 114 may represent other types of data processing systems, such as desktop computers, laptop computers, handheld computers, smart phones, smart vehicles, smart TVs, smart appliances, and the like, with wired or wireless communication links to network 102. A user may utilize a client device to view the impact of the container orchestration performed by server 104 and server 106 via a key performance indicator dashboard.
[0022] Storage 108 is a network storage device capable of storing any type of data in a structured or unstructured format. Furthermore, storage 108 may represent multiple network storage devices. Furthermore, storage 108 may store identifiers and network addresses of multiple different client compute node devices, identifiers of multiple different microservices, identifiers of multiple containers, intra-node characteristic data, inter-node characteristic data, information regarding the impact of container orchestration operations, historical microservice workload data for a defined period of time, and the like. Furthermore, storage 108 may store other types of data, such as authentication or credential data, which may include, for example, usernames, passwords, and biometric data associated with system administrators and users.
[0023] Additionally, it should be noted that network data processing system 100 may include any number of additional servers, clients, storage devices, and other devices not shown. The program code within network data processing system 100 may be stored on a computer-readable storage medium and downloaded to a computer or other data processing device for use. For example, the program code may be stored on a computer-readable storage medium of server 104 and downloaded to client 110 over network 102 for use by client 110.
[0024] In the depicted example, network data processing system 100 may be implemented as a number of different types of communications networks, such as, for example, the Internet, an intranet, a wide area network (WAN), a local area network (LAN), a telecommunications network, or any combination thereof. Figure 1 is intended as an example only and not as architectural limitations for different illustrative embodiments.
[0025] As used herein, when used in reference to items, "some" means one or more of the items. For example, "several different types of communication networks" is one or more different types of communication networks. Similarly, "set of," when used in reference to items, means one or more of the items.
[0026] Furthermore, the term "at least one of," when used in conjunction with a list of items, means that one or more different combinations of the listed items may be used, and that only one of each item in the list is required. In other words, "at least one of" means that any combination of items and any number of items from the list may be used, but not all of the items in the list are required. An item may be a specific object, thing, or category.
[0027] For example, without limitation, "at least one of item A, item B, or item C" may include item A, item A and item B, or item B. This example may also include item A, item B, and item C, or item B and item C. Of course, any combination of these items may be present. In some illustrative examples, "at least one of" may be, for example, without limitation, two of item A, one of item B, and ten of item C, or four of item B and seven of item C, or other suitable combinations.
[0028] Referring now to Figure 2, a diagram of a data processing system according to an illustrative embodiment is depicted. Data processing system 200 is an example of a computer, such as server 104 of Figure 1, in which computer-readable program code or instructions that execute the container orchestration process of an illustrative embodiment may be located. In this example, data processing system 200 includes a communications fabric 202 that provides communications between a processor unit 204, a memory 206, persistent storage 208, a communications unit 210, an input / output (I / O) unit 212, and a display 214.
[0029] The processor unit 204 functions to execute instructions for software applications and programs that are loaded into the memory 206. The processor unit 204 may be a set of one or more hardware processor devices or may be a multi-core processor, depending on the particular implementation.
[0030] Memory 206 and persistent storage 208 are examples of storage devices 216. As used herein, a computer-readable storage device or computer-readable storage medium is any piece of hardware capable of temporarily or permanently storing information, such as, without limitation, data, computer-readable program code in a functional form, or other suitable information, or a combination thereof. Furthermore, computer-readable storage device or computer-readable storage medium excludes propagating media, such as transitory signals. Memory 206, in these examples, may be, for example, random access memory (RAM) or any other suitable volatile or non-volatile storage device, such as flash memory. Persistent storage 208 may take various forms, depending on the particular implementation. For example, persistent storage 208 may contain one or more devices. For example, persistent storage 208 may be a disk drive, a solid-state drive, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage 208 may be removable. For example, a removable hard drive may be used for persistent storage 208.
[0031] In this example, persistent storage 208 stores machine learning components 218. Nevertheless, it should be noted that although machine learning components 218 are shown as residing in persistent storage 208, in alternative illustrative embodiments, machine learning components 218 may be separate components of data processing system 200. For example, machine learning components 218 may be hardware components coupled to communications fabric 202, or a combination of hardware and software components. In another alternative illustrative embodiment, a first set of components of machine learning components 218 may be located within data processing system 200, and a second set of components of machine learning components 218 may be located within a second data processing system, such as, for example, server 106 of FIG. 1 .
[0032] The machine learning component 218 controls the process of automatically orchestrating containers for multiple different microservices by evaluating intra-node and inter-node characteristics of the multiple different microservices and then evaluating the results of the container orchestration. The machine learning component 218 can learn without being explicitly programmed to do so. The machine learning component 218 can learn based on training data input to the machine learning component 218. The machine learning component 218 can learn using various types of machine learning algorithms. The various types of machine learning algorithms include at least one of supervised learning, semi-supervised learning, unsupervised learning, feature learning, sparse dictionary learning, anomaly detection, association rules, or other types of learning algorithms. Examples of machine learning models include artificial neural networks, decision trees, support vector machines, Bayesian networks, genetic algorithms, and other types of models. These machine learning models can be trained, for example, using historical microservice workload data.
[0033] Microservice 220 represents an identifier for a particular container-based microservice. However, it should be noted that microservice 220 may represent an identifier for multiple different microservices for which machine learning component 218 performs container orchestration services such as container scaling and container migration. Microservice 220 runs on containers 224 located on compute nodes 222. Container 224 represents an identifier for multiple containers located on each compute node of compute nodes 222. Compute node 222 represents an identifier for multiple compute nodes, such as clients 110, 112, and 114 in FIG. 1 . Compute node 222 provides resources (e.g., processors, memory, storage, network devices, and the like) to container 224 to run microservice 220.
[0034] The machine learning component 218 utilizes a microservice feature extraction component 226 to extract features (e.g., properties, attributes, characteristics, parameters, and the like) corresponding to each compute node in each of the compute nodes 222. The extracted features include intra-node features 228 and inter-node features 230.
[0035] The intra-node characteristics 228 include information such as a number of containers corresponding to microservices 220 running on the compute node 222 during the current time period, a utilization state and workload capacity of a number of containers corresponding to microservices 220 running on the compute node 222 during the current time period, a number of containers corresponding to microservices 220 previously running on the compute node 222 during a previous time period, a utilization state and workload capacity of a number of containers corresponding to microservices 220 running on the compute node 222 during a previous time period, a number of application programming interface requests of the microservices 220 during the current time period, a number of application programming interface requests of the microservices 220 during a previous time period, and the like. Inter-node characteristics 230 include information such as dependencies between microservice 220 and other microservices (e.g., microservice 220 makes application programming interface calls to one or more other microservices across multiple different microservices), relationships between microservice 220 and other microservices (e.g., microservice 220 and one or more other microservices use or correspond to the same application), geographic locations of containers 224 (e.g., where each particular compute node running container 224 corresponding to microservice 220 is geographically located), and network bandwidth and latency parameters corresponding to each of compute nodes 222.
[0036] The machine learning component 218 analyzes the extracted intra-node features 228 and inter-node features 230 to determine and generate optimal container orchestration policies, such as container scaling (i.e., scaling containers up or down) within the compute nodes 222 and container movement between some of the compute nodes 222, to improve microservice performance and reduce network latency. The machine learning component 218 instructs the orchestration component 232 to implement the determined optimal container orchestration policies.
[0037] Additionally, the machine learning component 218 determines the impact of container orchestration on a set of key performance indicators, such as, for example, container scaling and migration costs, network latency, microservice security, and the like. The machine learning component 218 generates and displays the results of the impact of container orchestration on the set of key performance indicators using a key performance indicator dashboard component 234. The key performance indicator dashboard component 234 displays the results of the impact to a user via a dashboard (e.g., an interactive graphical user interface) on a display device, such as the display 214.
[0038] As a result, data processing system 200 operates as a special-purpose computer system where machine learning component 218 of data processing system 200 enables automated orchestration of containers to improve microservice performance and reduce network latency. In particular, machine learning component 218 transforms data processing system 200 into a special-purpose computer system comparable to currently available general-purpose computer systems that do not have machine learning component 218.
[0039] Communications unit 210 provides for communication with other computers, data processing systems, and devices over a network, such as network 102 in FIG. 1 in this example. Communications unit 210 may provide for communication through the use of both physical and wireless communications links. The physical communications links may utilize, for example, wires, cables, universal serial buses, or any other physical technology to establish a physical communications link for data processing system 200. The wireless communications links may utilize, for example, short wave, radio frequency, very high frequency, microwave, Wireless Fidelity (Wi-Fi), Bluetooth® technology, Global System for Mobile Communications (GSM), Code Division Multiple Access (CDMA), second generation (2G), third generation (3G), fourth generation (4G), 4G Long Term Evolution (LTE), LTE Advanced, fifth generation (5G), or any other wireless communications technology or standard to establish a wireless communications link for data processing system 200.
[0040] Input / output unit 212 allows for the input and output of data with other devices connected to data processing system 200. For example, input / output unit 212 may provide a connection for user input through a keypad, keyboard, mouse, microphone, or some other suitable input device, or combination thereof. Display 214 provides a mechanism for displaying information to a user and may include, for example, touch screen functionality to allow a user to make on-screen selections through a user interface or input data.
[0041] Instructions for the operating system, applications, and / or programs may be located in storage device 216, which is in communication with processor unit 204 through communications fabric 202. In this illustrative example, the instructions are in functional form on persistent storage 208. These instructions may be loaded into memory 206 for execution by processor unit 204. The processes of the different embodiments may be performed by processor unit 204 using computer-implemented instructions, which may be located in a memory, such as memory 206. These program instructions are referred to as program code, computer-usable program code, or computer-readable program code, and may be read and executed by the processor of processor unit 204. The program instructions may be contained in different physical computer-readable storage devices, such as memory 206 or persistent storage 208, in different embodiments.
[0042] Program code 236 may be located in a functional form on selectively removable computer readable media 238 and loaded onto or transferred to data processing system 200 for execution by processor unit 204. Program code 236 and computer readable media 238 form computer program product 240. In one example, computer readable media 238 may be computer readable storage medium 242 or computer readable signal medium 244.
[0043] In these illustrative examples, computer-readable storage medium 242 is not a medium for propagating or transmitting program code 236, but rather a physical or tangible storage device used to store program code 236. Computer-readable storage medium 242 may include, for example, an optical or magnetic disk inserted into or placed in a drive or other device that is part of persistent storage 208 for transfer to a storage device such as a hard drive that is part of persistent storage 208. Computer-readable storage medium 242 may also be a form of persistent storage, such as a hard drive, thumb drive, or flash memory connected to data processing system 200.
[0044] Alternatively, program code 236 may be transferred to data processing system 200 using computer readable signal media 244. Computer readable signal media 244 may be, for example, a propagated data signal embodied with program code 236. For example, computer readable signal media 244 may be an electromagnetic signal, an optical signal, or any other suitable type of signal. These signals may be transmitted over communications links, such as wireless communications links, fiber optic cable, coaxial cable, a wire, or any other suitable type of communications link.
[0045] Additionally, as used herein, "computer-readable medium 238" may be singular or plural. For example, program code 236 may reside on computer-readable medium 238 in a single storage device or system. In another example, program code 236 may reside on computer-readable medium 238 distributed among multiple data processing systems. In other words, some instructions in program code 236 may reside in one data processing system, while other instructions in program code 236 may reside in one or more other data processing systems. For example, part of program code 236 may reside on computer-readable medium 238 of a server computer, while another part of program code 236 may reside on computer-readable medium 238 within a set of client computers.
[0046] The different components illustrated for data processing system 200 are not intended to provide architectural limitations to the manner in which different embodiments may be implemented. In some illustrative examples, one or more of the components may be incorporated into or otherwise form a part of another component. For example, in some illustrative examples, memory 206, or portions thereof, may be incorporated within processor unit 204. Different illustrative embodiments may be implemented in a data processing system including components other than or in place of those illustrated for data processing system 200. Other components illustrated in FIG. 2 may vary from the illustrated illustrative example. Different embodiments may be implemented using any hardware device or system capable of executing program code 236.
[0047] In another example, a bus system may be used to implement communications fabric 202 and may be comprised of one or more buses, such as a system bus or an input / output bus. Of course, the bus system may be implemented using any suitable type of architecture that provides for a transfer of data between different components or devices attached to the bus system.
[0048] While this disclosure includes a detailed description of cloud computing, it is understood that implementation of the teachings recited herein is not limited to a cloud computing environment. Rather, the illustrative embodiments may be implemented in conjunction with any other type of computing environment, now known or later developed. Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources, such as networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services, that can be rapidly provisioned and published with minimal administrative effort or service provider interaction. This cloud model may include at least five characteristics, at least three service models, and at least four deployment models.
[0049] Characteristics may include, for example, on-demand self-service, broad network access, resource pooling, rapid elasticity, and measured service. On-demand self-service allows cloud consumers to automatically and unilaterally provision computing capacity, such as server time and network storage, as needed without human interaction with the service provider. Broad network access provides capabilities available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms, such as mobile phones, laptops, and personal digital assistants. Resource pooling enables providers to pool their computing resources to serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. Location independence is meaningful in that consumers typically have no control or knowledge of the exact location of the resources provided, but may be able to identify the location at a higher level of abstraction, such as a country, state, or data center. Rapid elasticity provides capacity that can be rapidly elastically provisioned, sometimes automatically, to quickly scale out, and rapidly exposed to quickly scale in. To consumers, the capacity available for provisioning often appears unlimited and can be purchased at any time in any amount. Measured services enable cloud systems to automatically control and optimize resource usage by leveraging metering capabilities at several levels of abstraction appropriate to the type of service, for example, storage, processing, bandwidth, and active user accounts. Resource utilization can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services being used.
[0050] Service models can include, for example, Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). Software as a service is the ability offered to consumers to use provider applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through a thin-client interface, such as a web browser (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or possibly individual application capabilities, with the possible exception of limited user-specific application configuration settings. Platform as a service is the ability offered to consumers to deploy consumer-created or acquired applications, created using programming languages and tools supported by the provider, onto the cloud infrastructure. Consumers do not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but they do have control over the deployed applications and, in some cases, the configuration of the environment hosting the applications. Infrastructure as a Service is the capability offered to customers to provide processing, storage, networking, and other basic computing resources on which they can deploy and run any software, which may include operating systems and applications. Customers do not manage or control the underlying cloud infrastructure, but they do have control over the operating systems, storage, deployed applications, and in some cases, limited control over the selection of networking components, such as host firewalls.
[0051] Deployment models can include, for example, private cloud, community cloud, public cloud, and hybrid cloud. A private cloud is cloud infrastructure operated solely for an organization. A private cloud is managed by an organization or a third party and can exist on-premises or off-premises. A community cloud is cloud infrastructure shared by several organizations to support a unique community with shared concerns, such as mission, security requirements, policies, and compliance considerations. A community cloud is managed by an organization or a third party and can exist on-premises or off-premises. A public cloud is cloud infrastructure made available to the general public or large industry groups and is owned by an organization that sells cloud services. A hybrid cloud is cloud infrastructure consisting of two or more clouds, such as private, community, and public clouds, that remain unique entities but are joined together by standard or proprietary technologies that enable data and application portability, such as cloud bursting for load balancing between clouds.
[0052] A cloud computing environment is service-oriented, with a focus on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that comprises a network of interconnected nodes.
[0053] Referring now to FIG. 3, a diagram illustrating a cloud computing environment in which illustrative embodiments may be implemented is depicted. In this illustrative example, cloud computing environment 300 includes a set of one or more cloud computing nodes 310 with which local computing devices used by cloud users, such as, for example, personal digital assistant or smartphone 320A, desktop computer 320B, laptop computer 320C, or automobile computer system 320N, or any combination thereof, may communicate. Cloud computing node 310 may be, for example, server 104 and server 106 of FIG. 1. Local computing devices 320A-320N may be, for example, clients 110-114 of FIG. 1.
[0054] Cloud computing nodes 310 may communicate with each other and may be physically or virtually grouped into one or more networks, such as private, community, public, or hybrid clouds, or combinations thereof, as described above. This allows cloud computing environment 300 to provide infrastructure, platform, and / or software as a service without requiring cloud consumers to maintain resources on local computing devices, such as local computing devices 320A-320N. The types of local computing devices 320A-320N are intended to be illustrative only, and it is understood that cloud computing nodes 310 and cloud computing environment 300 can communicate with any type of computerized device over any type of network and / or network-addressable connection, for example, using a web browser.
[0055] Referring now to Figure 4, a diagram illustrating abstraction model layers according to an illustrative embodiment is depicted. The set of functional abstraction layers illustrated in this illustrative example may be provided by a cloud computing environment, such as cloud computing environment 300 of Figure 3. It should be understood in advance that the components, layers, and functions illustrated in Figure 4 are intended to be merely illustrative, and embodiments of the present invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:
[0056] Cloud computing environment abstraction layer 400 includes hardware and software layer 402, virtualization layer 404, management layer 406, and workload layer 408. Hardware and software layer 402 includes the hardware and software components of the cloud computing environment. The hardware components may include, for example, mainframe 410, reduced instruction set computer (RISC) architecture-based servers 412, servers 414, blade servers 416, storage devices 418, and network and networking components 420. In some demonstrative embodiments, the software components may include, for example, network application server software 422 and database software 424.
[0057] The virtualization layer 404 provides an abstraction layer in which examples of virtual entities are provided, such as virtual servers 426, virtual storage 428, virtual networks 430 including virtual private networks, virtual applications and operating systems 432, and virtual clients 434.
[0058] In one example, management layer 406 may provide the functions described below. Resource provisioning 436 dynamically procures computing and other resources utilized to perform tasks within the cloud computing environment. Metering and pricing 438 tracks costs as resources are utilized within the cloud computing environment and bills or invoices for the utilization of these resources. In one example, these resources may include application software licenses. Security validates cloud users and tasks and protects data and other resources. User portal 440 provides users and system administrators with access to the cloud computing environment. Service level management 442 allocates and manages cloud computing resources to meet required service levels. Service level agreement (SLA) planning and fulfillment 444 pre-provisions and procures cloud computing resources to anticipate future requirements according to SLAs.
[0059] The workload tier 408 provides examples of functions for which a cloud computing environment is utilized. Example workloads and functions provided by the workload tier 408 may include mapping and navigation 446, software development and lifecycle management 448, virtual classroom instruction delivery 450, data analytics processing 452, transaction processing 454, and microservices container orchestration management 456.
[0060] Computing today is becoming focused on cloud platforms, with the majority of entities, such as companies, businesses, enterprises, organizations, institutions, agencies, and the like, delivering their products in the form of microservices on cloud infrastructure. These products are best practices for deploying microservices hosted inside containers. Yet, deployment is performed by an orchestrator. Current orchestrators require one-way delivery, which lacks autoscaling and optimized proximity of microservice containers. Illustrative embodiments utilize intelligent machine learning components to inform the orchestrator regarding autoscaling and optimal proximity alignment of microservice containers based on user-configurable context. In other words, illustrative embodiments provide the orchestrator with intelligence regarding autoscaling and optimal movement of containers between compute nodes, and then evaluate automatic container scaling and movement interventions.
[0061] For example, current container orchestration tools, such as Kubernetes, DockerSwarm, and the like, are driven by static, user-defined policies and are not intelligent enough to make efficient container scaling decisions or optimal container movements. The illustrative embodiments take into account that these current container orchestration tools scale containers up or down at runtime to reduce network latency without anticipating future loads, but do not perform automatic container movements. To address these issues, the illustrative embodiments use machine learning to predict container scaling and optimal container movements and then evaluate these interventions. The machine learning component of the illustrative embodiments analyzes and evaluates intra-node and inter-node characteristics of microservices to determine efficient container orchestration in an automated manner.
[0062] For example, illustrative embodiments implement synchronized and optimized orchestration of automatic scaling of containers on compute nodes through proactive prediction, automatic container movement based on microservice similarity analysis, and automatic evaluation of the intervention of machine learning components of container scaling and movement. Exemplary embodiments extract and analyze intra-node and inter-node features corresponding to microservices. Exemplary embodiments utilize the extracted intra-node features to proactively predict the number of containers (i.e., scale the number of containers) required to meet the future load of a microservice. Exemplary embodiments utilize the extracted inter-node features to evaluate similarities between microservices and identify which containers should be moved to reduce network latency.
[0063] Accordingly, illustrative embodiments provide one or more technical solutions that overcome technical challenges associated with automatically implementing container orchestration to meet projected future microservice workload demands. As a result, these one or more technical solutions provide technical advantages and practical applications in the field of container-based microservices.
[0064] Referring now to FIG. 5, a diagram illustrating an example container orchestration system is depicted in accordance with an illustrative embodiment. Container orchestration system 500 may be implemented in a network of data processing systems, such as network data processing system 100 of FIG. 1. Container orchestration system 500 is a system of hardware and software components for automatically orchestrating containers for multiple different microservices by evaluating intra-node and inter-node characteristics of the multiple different microservices and then evaluating the results of the container orchestration.
[0065] In this example, container orchestration system 500 includes a machine learning component 502, a microservice feature extraction component 504, an orchestrator component 506, a key performance indicator dashboard component 508, a compute node 510, and a compute node 512. Nevertheless, it should be noted that container orchestration system 500 is intended to be merely an example and is not intended as a limitation on illustrative embodiments. In other words, container orchestration system 500 may include more or fewer components than those shown. For example, one or more components may be combined into a single component, a component may be split into two or more components, additional components not shown may be added, etc. Also, compute node 510 and compute node 512 may each represent multiple compute nodes.
[0066] Compute nodes 510 and 512 are the actual infrastructure provided to host containers 516, 518, 520, 522, 524, 526, 528, and 530. Compute nodes 510 and 512 run microservices 514, which are container-based microservices and may represent one respective microservice of multiple different microservices managed by machine learning component 502.
[0067] Microservices 514 are loosely coupled services focused on performing a single business task and can be scaled both horizontally and vertically. Microservices 514 are contained in a manner that allows them to provide efficient computation for workload management. Microservices 514 are also fault-tolerant and self-healing (i.e., they perform fault management). Furthermore, microservices 514 are capable of batch and real-time processing and are responsive, elastic, and resilient. All of these attributes make microservices 514 great candidates to be ported across compute nodes to make them highly available.
[0068] In this example, compute node 510 runs one portion of microservice 514 using containers 516 and 518 in pod 532 and containers 520 and 522 in pod 534. Compute node 512 runs another portion of microservice 514 using containers 524 and 526 in pod 536 and containers 528 and 530 in pod 538.
[0069] The machine learning component 502 automatically determines a dynamic container orchestration policy corresponding to the microservice 514. The machine learning component 502 utilizes data regarding intra-node characteristics, such as the intra-node characteristics 228 in FIG. 2, to proactively predict the number of containers required within each of the compute nodes 510 and 512 for the predicted future workload of the microservice 514 (i.e., scale the number of containers up or down). The machine learning component 502 further utilizes data regarding inter-node characteristics, such as the inter-node characteristics 230 in FIG. 2, to move containers between the compute nodes 510 and 512 based on relationships and dependencies between the microservice 514 and one or more other microservices among a plurality of different microservices to reduce or minimize network latency. In this example, the machine learning component 502 includes a prediction module 540, a migration module 542, and an evaluation module 544.
[0070] The machine learning component 502 utilizes a microservice information extraction component 504 to identify, capture, and extract intra-node and inter-node feature data, which represent all necessary information related to the microservice 514. The intra-node feature data may include, for example, the number of containers running for the microservice 514, the number of application programming interface requests per defined time interval to determine the workload of the microservice 514, the utilization and workload capacity of each container corresponding to the microservice 514 per defined time interval, and the like. The inter-node feature data may include, for example, the dependency between the microservice 514 and one or more other microservices when the microservice 514 calls another microservice, the relationship between the microservice 514 and one or more other microservices when the same application uses these particular microservices, the geographic locations of the compute nodes 510 and 512 corresponding to the containers 516-530 of the microservice 514, the network bandwidth and latency of the connections corresponding to the compute nodes 510 and 512, the cost and configuration of the compute nodes 510 and 512, and the like.
[0071] The machine learning component 502 utilizes a forecasting module 540 to predict the scaling up and down of containers within compute nodes 510 and 512 in response to the predicted future workload of the microservice 514. The forecasting module 540 uses a time-series forecasting model based on intra-node feature data to predict the number of containers required to match the predicted future workload of the microservice 514. For example, the forecasting module 540 may use an auto-regressive integrated moving average (ARIMA) as a forecasting model. ARIMA is a method for modeling time-series data for forecasting (i.e., for predicting future points in the time series). An ARIMA model is a specific type of regression model in which the dependent variable is stationarized. Since the independent variables are all lags of the dependent variable, or lags of the error, or both, it is straightforward in principle to extend an ARIMA model to incorporate information provided by the most important key performance indicators and other exogenous variables. Essentially, the forecasting module 540 adds one or more regressors to the forecasting equation:
number
[0072] The forecasting module 540 uses the trained forecasting model described above to forecast the number of containers required for the microservice 514. The forecasting module 540 identifies a scaling label and a scaling value by comparing the current number of containers. As an illustrative example, the current number of containers on the compute node 510 is four, and the forecasted number of containers required for the forecasted future workload is seven. As a result, in this example, the scaling label is scale “UP” and the scaling value is three (i.e., scale up the current number of four containers by adding three new containers to equal seven total containers on the compute node 510 and meet the forecasted future workload of the microservice 514). Similarly, the scaling label may be scale “DOWN” and the scaling value may be one (i.e., scale down the current number of four containers by removing one container to equal three total containers on the compute node 510 and meet the forecasted future workload of the microservice 514). Based on the scaling label and value, the orchestrator component 506 removes containers or adds new containers as needed.
[0073] In other words, if the predicted container value is greater than the current container value, scaling up is necessary. Conversely, if the predicted container value is less than the current container value, scaling down is necessary. Note that the prediction module 540 repeats this prediction process for each microservice among the multiple different microservices and assigns corresponding container scaling labels and values. The prediction module 540 then sends all scaling labels and values to the orchestrator component 506, which removes unnecessary containers or generates new containers as needed. Note that the scaling label may still be "NO" and a scaling value of 0, indicating that no change to the current number of containers is required for a particular compute node. The prediction module 540 also calculates a cost associated with scaling, which is then used by the evaluation module 544.
[0074] After the orchestrator component 506 scales the current number of containers based on the output of the prediction module 540, the machine learning component 502 utilizes a migration module 542 to optimize the movement of containers between compute nodes corresponding to the microservice 514 and containers corresponding to multiple other microservices. In other words, the migration module 542 identifies which containers should be moved and where in the network (i.e., to which compute nodes). For example, the migration module 542 identifies microservices with network latency greater than a predefined network latency threshold level. The migration module 542 also identifies microservices that are generally similar to each other (e.g., microservices that have a defined degree of similarity to each other based on the extracted node-to-node feature data). The migration module 542 then instructs the orchestrator component 506 to move containers corresponding to microservices with the defined degree of similarity to the same compute node to reduce network latency. The movement module 542 further calculates the cost and microservice security associated with the movement, which will also be used by the evaluation module 544.
[0075] The orchestrator component 506 defines how to deploy, monitor, and configure containers using container orchestration policies. During runtime, depending on the microservice workload, the orchestrator component 506 scales containers up or down on compute nodes and moves containers between compute nodes based on the container orchestration policies generated by and received from the prediction module 540 and migration module 542 of the machine learning component 502.
[0076] The evaluation module 544 evaluates the container scaling and migration interventions implemented by the prediction module 540 and the migration module 542. The evaluation module 544 may measure the impact of each intervention, such as how container scaling affected cost and network latency and how container migration affected cost, network latency, and microservice security, using, for example, causal inference conditioning equations. For example, E(Key Performance Indicator / Intervention) is the key performance indicator (e.g., cost, latency, security, and the like) impact under which some type of intervention (e.g., container scaling and / or container migration) is implemented.
[0077] The evaluation module 544 evaluates the key performance indicator impact of the forecasting module 540 using the following two equations: Cost delta value = E(cost / before scaling) - E(cost / after scaling), and Latency delta = E(latency / before scaling) - E(latency / after scaling) Here, the cost and latency delta values measure the impact of automatic container scaling per prediction of the forecasting module 540.
[0078] The evaluation module 544 evaluates the key performance indicator impact of the movement module 542 using the following three equations: Cost delta value = E(cost / before movement) - E(cost / after movement), Latency delta = E(latency / before move) - E(latency / after move), and Security Delta = E(security / before movement) - E(security / after movement) Here, the cost, latency, and security delta values measure the impact of automatic container migration per microservice similarity analysis of the migration module 542.
[0079] The key performance indicator dashboard component 508 generates and displays a key performance indicator dashboard, which a user utilizes to visualize the outputs generated by the assessment module 544 (i.e., the different delta values corresponding to the forecasting module 540 and the migration module 542, respectively). As a result, a user can monitor the impact of the container orchestration interventions of the forecasting module 540 and the migration module 542 on a selected set of key performance indicators, such as, for example, container scaling and migration costs, network latency, microservice security, and the like.
[0080] Referring now to Figure 6, a diagram illustrating an example of a prediction table is depicted in accordance with an illustrative embodiment. Prediction table 600 may be implemented in a prediction module, such as prediction module 540 of Figure 5. Prediction table 600 includes a timeline 602 on the X-axis and a container number 604 on the Y-axis.
[0081] Timeline 602 is a user-defined time window that is adjustable. In other words, the units of timeline 602 may be, for example, hours, days, weeks, months, or the like, and are defined by the user depending on which time window the user wants the forecasting module to analyze to predict future microservice workloads using a time series forecasting model. Number of containers 604 indicates the number of containers currently required by the microservice up to unit "24" of timeline 602, and then indicates the predicted number of containers required by the microservice (i.e., forecast 606). Forecast table 600 also indicates a forecast lower confidence bound 608 and a forecast upper confidence bound 610 corresponding to forecast 606.
[0082] Referring now to FIG. 7, a diagram illustrating an example of a container transfer process is depicted in accordance with an illustrative embodiment. The container transfer process 700 may be implemented in a transfer module, such as, for example, transfer module 542 of FIG. 5. In this example, the container transfer process 700 is performed by the transfer module between compute node A 702 and compute node B 704. Nevertheless, it should be noted that the transfer module may perform the container transfer process 700 between any number of compute nodes.
[0083] Also, in this example, compute node A 702 includes container 706 and container 708, and compute node B 704 includes container 710 and container 712. Nevertheless, it should be noted that compute node A 702 and compute node B 704 may include any number of containers. Furthermore, in this example, container 706 is used by application 1 714, and containers 708 and 712 are used by application 2 716.
[0084] Further, in this example, a latency bottleneck 718 exists between containers 706 and 710. As a result, the migration module determines that container 710 needs to be moved from compute node B 704 to compute node A 702 to reduce the network latency caused by the latency bottleneck 718. Accordingly, the migration module instructs an orchestrator component, such as orchestrator component 506 of FIG. 5 , to perform a move 720 of container 710 to compute node A 702. Further, a latency bottleneck 722 exists between container 708 and application 2 716. As a result, the migration module determines that container 708 needs to be moved from compute node A 702 to compute node B 704 to reduce the network latency caused by the latency bottleneck 722. Accordingly, the migration module instructs the orchestrator component to perform a move 724 of container 708 to compute node B 704.
[0085] 8, a diagram illustrating an example of a container movement identification table is depicted in accordance with an illustrative embodiment. Container movement identification table 800 may be implemented in a movement module, such as, for example, movement module 542 of FIG. 5.
[0086] In this example, container movement identification information table 800 includes microservices 802, dependencies 804, relationships 806, compute nodes 808, network latency 810, and shared data attributes 812. Microservices 802 identify each respective microservice. Dependencies 804 identify dependencies between specific microservices. Relationships 806 identify relationships between specific microservices based on the application. In other words, different microservices are connected at the application level. Compute nodes 808 identify specific compute nodes in the network associated with specific microservices. Network latency 810 identifies the amount of network latency associated with each specific microservice. Shared data attributes 812 identify information accessed by specific microservices. Data shared between different microservices is housed via a shared database containing both static and mutable data, and different microservices access the required data from the shared database.
[0087] In this example, container migration identity table 800 shows three microservices: MS-A, MS-B, and MS-X. Container migration identity table 800 also shows their respective dependencies, applications, nodes, and network latencies. The migration module uses the dependencies 804, application information in relationships 806, and information in shared data attributes 812 accessed in and by each microservice to identify the similarity between two microservices.
[0088] The migration module may determine microservice similarity using a similarity calculation 814, such as cosine similarity. In this example, the migration module calculates a similarity calculation between microservice A (MS-A) and microservice B (MS-B) such that similarity (MS-A, MS-B) = 0.95. In other words, MS-A and MS-B have a similarity of 95%, which is indicated as "similar" in the container migration identification table 800. Furthermore, the migration module calculates a similarity calculation between MS-B and microservice X (MS-X) such that similarity (MS-B, MS-X) = 0.30. In other words, MS-B and MS-X have a similarity of only 30%. The container migration identification table 800 also indicates that MS-A should be moved from node A to node C to reduce network latency.
[0089] 9A-9B, a flowchart illustrating a process for predicting container scaling and migration of container-based microservices is shown, according to an illustrative embodiment. The process illustrated in FIG. 9A-9B may be implemented on a computer, such as, for example, server 104 of FIG. 1 or data processing system 200 of FIG. 2. For example, the process illustrated in FIG. 9A-9B may be implemented in machine learning component 218 of FIG. 2.
[0090] The process begins when a computer trains a predictive model used to predict scaling of a plurality of containers corresponding to each of a plurality of different microservices running on a plurality of compute nodes in a network based on a historical number of containers required to satisfy the workload of each respective microservice over a defined time period to form a trained predictive model (step 902). The computer extracts a first set of features from each of the plurality of different microservices (step 904). The first set of features is selected from the group consisting of: a first number of containers corresponding to each respective microservice of the plurality of different microservices running on the plurality of compute nodes during the current time period; at least one of a utilization state and a workload capacity of the first number of containers corresponding to each respective microservice of the plurality of different microservices running on the plurality of compute nodes during the current time period; a second number of containers corresponding to each respective microservice of the plurality of different microservices previously run on the plurality of compute nodes during a previous time period; at least one of a utilization state and a workload capacity of the second number of containers corresponding to each respective microservice of the plurality of different microservices previously run on the plurality of compute nodes during a previous time period; a first number of application programming interface requests for each respective microservice during the current time period; and a second number of application programming interface requests for each respective microservice during the current time period.
[0091] The computer uses the trained predictive model and the first set of features extracted from each respective microservice to predict the number of containers required at a future time point for each respective microservice among the plurality of different microservices (step 906). The computer assigns a scaling label and a scaling value (e.g., scale up or scale down by a value of 1, 2, 3, or the like) to each respective microservice among the plurality of different microservices based on the predicted change in the current number of containers corresponding to each respective microservice in response to the number of containers required at a future time point for each respective microservice (step 908). The computer automatically adjusts the current number of containers corresponding to each respective microservice among the plurality of different microservices based on the scaling label and scaling value assigned to each respective microservice (step 910). Adjusting the current number of containers includes one of making no adjustment to the current number of containers, creating one or more additional containers for the particular microservice with an assigned scaling label and scaling value indicating a need to scale up at a future point in time, and removing one or more current containers for the particular microservice with an assigned scaling label and scaling value indicating a need to scale down at a future point in time.
[0092] The computer uses causal inference conditioning to determine a first impact that adjusting the current number of containers corresponding to each respective microservice among the plurality of different microservices has on a first set of key performance indicators of container scaling cost and network latency for compute nodes among the plurality of compute nodes having an adjusted number of containers (e.g., compute nodes having a scaled-up number of containers and compute nodes having a scaled-down number of containers) (step 912). The computer extracts a second set of features from each respective microservice among the plurality of different microservices (step 914). The second set of features is selected from the group consisting of information about dependencies between the particular microservices (e.g., which particular microservices make application programming interface calls to other microservices in the plurality of different microservices), information about relationships between the particular microservices (e.g., which applications use the same microservice), information about geographic locations corresponding to each container among the plurality of containers corresponding to each respective microservice among the plurality of different microservices (e.g., geographic locations of each particular compute node running the plurality of containers corresponding to the same microservice among the plurality of different microservices), and network bandwidth and latency parameters corresponding to each respective node among the plurality of compute nodes. The computer determines a degree of microservice similarity between the particular microservices among the plurality of different microservices based on the second set of features extracted from each respective microservice (step 916).
[0093] The computer identifies a first set of containers running on a first set of compute nodes in the plurality of compute nodes that have network latency values above a network latency threshold level (step 918). The computer determines a second set of compute nodes in the plurality of compute nodes that runs a second set of containers that have a degree of container similarity above a container similarity threshold level to the first set of containers running on the first set of compute nodes that have network latency values above the network latency threshold level based on the determined degree of microservice similarity between the particular microservices (step 920). The computer identifies particular containers in the first set of containers and the second set of containers that share the same degree of container similarity (step 922).
[0094] The computer migrates those particular containers that share the same degree of container similarity to the same compute node to reduce network latency (step 924). The computer uses causal reasoning to determine a second impact that moving those particular containers between the two compute nodes has on a second set of key performance indicators for the two compute nodes: container migration cost, network latency, and microservice security (step 926). The computer displays, within a key performance indicator dashboard, a first impact that adjusting the current number of containers corresponding to each respective microservice of the plurality of different microservices has on the first set of key performance indicators and a second impact that moving those particular containers between the two compute nodes has on the second set of key performance indicators (step 928). The process then terminates.
[0095] Thus, illustrative embodiments of the present invention provide a computer-implemented method, computer system, and computer program product for automatically orchestrating containers by evaluating intra-node and inter-node characteristics of microservices and then evaluating the results of the container orchestration. The description of various embodiments of the present invention has been presented for illustrative purposes and is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope of the described embodiments. The terminology used herein has been chosen to best explain the principles of the embodiments, practical applications, or technical improvements over technology found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.
Claims
1. A method for automatically performing container scaling and migration for container-based microservices by information processing on a computer, the method comprising: Extracting a first set of features from each respective microservice of a plurality of different microservices; predicting a number of containers needed at a future point in time for each respective microservice of the plurality of different microservices using the trained predictive model and the first set of features extracted from each respective microservice; assigning a scaling label and a scaling value to each respective microservice of the plurality of different microservices based on a predicted change in the current number of containers corresponding to each respective microservice according to the number of containers needed for the respective microservice at the future time; automatically adjusting the current number of containers corresponding to each respective microservice among the plurality of different microservices based on the scaling label and the scaling value assigned to each respective microservice; extracting a second set of features from each respective microservice of the plurality of different microservices; determining a degree of microservice similarity between particular microservices of the plurality of different microservices based on the second set of features extracted from each respective microservice; and A method comprising:
2. identifying a first set of containers running on a first set of compute nodes in the plurality of compute nodes and having network latency values above a network latency threshold level; determining a second set of compute nodes in the plurality of compute nodes to run a second set of containers having a degree of container similarity above a container similarity threshold level to the first set of containers having the network latency values above the network latency threshold level running on the first set of compute nodes based on the determined degree of microservice similarity between the particular microservices; The method of claim 1 further comprising:
3. identifying particular containers in the first set of containers and the second set of containers that share the same degree of container similarity; moving those particular containers that share the same degree of container similarity to the same compute node to reduce network latency; The method of claim 2 further comprising:
4. using causal reasoning conditioning to determine, for compute nodes of the plurality of compute nodes having an adjusted number of containers, a first impact that adjusting the current number of containers corresponding to each respective microservice of the plurality of different microservices has on a first set of key performance indicators; using the causal reasoning conditioning to determine, for two compute nodes, a second impact that moving these particular containers between the two compute nodes has on a second set of key performance indicators; and displaying, by the computer, within a key performance indicator dashboard, the first impact that adjusting the current number of containers corresponding to each respective microservice of the plurality of different microservices has on the first set of key performance indicators, and the second impact that moving those particular containers between two compute nodes has on the second set of key performance indicators. The method of claim 3 further comprising:
5. training a predictive model used to predict scaling of a plurality of containers corresponding to each of a plurality of different microservices running on a plurality of compute nodes in a network based on a historical number of containers required to satisfy the workload of each respective microservice during a defined time period to form the trained predictive model; The method of claim 1 further comprising:
6. The method of claim 5 , wherein the forecasting model is an autoregressive integrated moving average model.
7. 2. The method of claim 1, wherein the first set of features is selected from the group consisting of: a first number of containers corresponding to each respective microservice of the plurality of different microservices running on a plurality of compute nodes during a current time period; at least one of a utilization state and a workload capacity of the first number of containers corresponding to each respective microservice of the plurality of different microservices running on a plurality of compute nodes during the current time period; a second number of containers corresponding to each respective microservice of the plurality of different microservices previously run on the plurality of compute nodes during a previous time period; at least one of a utilization state and a workload capacity of the second number of containers corresponding to each respective microservice of the plurality of different microservices previously run on the plurality of compute nodes during the previous time period; a first number of application programming interface requests for each respective microservice during the current time period; and a second number of application programming interface requests for each respective microservice during the current time period.
8. 10. The method of claim 1, wherein the second set of features is selected from the group consisting of: information regarding dependencies between particular microservices; information regarding relationships between particular microservices; information regarding a geographic location corresponding to each container among a plurality of containers corresponding to each respective microservice among the plurality of different microservices; and network bandwidth and latency parameters corresponding to each respective node among a plurality of compute nodes.
9. 2. The method of claim 1 , wherein adjusting the current number of containers comprises one of: creating one or more additional containers for a particular microservice that has an assigned scaling label and a scaling value that indicates a need to scale up at the future point in time; and removing one or more current containers for a particular microservice that has an assigned scaling label and a scaling value that indicates a need to scale down at the future point in time.
10. 1. A computer system for automatically performing container scaling and migration for container-based microservices, comprising: a bus system; a storage device connected to the bus system, the storage device storing program instructions; a processor connected to the bus system, Extracting a first set of features from each respective microservice of a plurality of different microservices; predicting a number of containers required at a future point in time for each respective microservice among the plurality of different microservices using the trained predictive model and the first set of features extracted from each respective microservice; assigning a scaling label and a scaling value to each respective microservice of the plurality of different microservices based on a predicted change in the current number of containers corresponding to each respective microservice in response to the number of containers needed for the respective microservice at the future time; automatically adjusting the current number of containers corresponding to each respective microservice among the plurality of different microservices based on the scaling label and the scaling value assigned to each respective microservice; extracting a second set of features from each respective microservice of the plurality of different microservices; determining a degree of microservice similarity between particular microservices of the plurality of different microservices based on the second set of features extracted from each respective microservice; the processor executing the program instructions to A computer system comprising:
11. the processor: identifying a first set of containers running on a first set of compute nodes in the plurality of compute nodes and having network latency values above a network latency threshold level; determining a second set of compute nodes in the plurality of compute nodes to run a second set of containers having a degree of container similarity above a container similarity threshold level to the first set of containers having the network latency values above the network latency threshold level running on the first set of compute nodes based on the determined degree of microservice similarity between the particular microservices; 11. The computer system of claim 10, further executing the program instructions to:
12. the processor: identifying particular containers in the first set of containers and the second set of containers that share the same degree of container similarity; moving those particular containers that share the same degree of container similarity to the same compute node to reduce network latency; 12. The computer system of claim 11, further executing the program instructions to:
13. the processor: using causal reasoning conditioning to determine, for compute nodes of the plurality of compute nodes having an adjusted number of containers, a first impact that adjusting the current number of containers corresponding to each respective microservice of the plurality of different microservices has on a first set of key performance indicators; using the causal reasoning conditioning to determine, for two compute nodes, a second impact that moving these particular containers between the two compute nodes has on a second set of key performance indicators; and displaying, within a key performance indicator dashboard, the first impact that adjusting the current number of containers corresponding to each respective microservice of the plurality of different microservices has on the first set of key performance indicators, and the second impact that moving those particular containers between two compute nodes has on the second set of key performance indicators; 13. The computer system of claim 12, further executing the program instructions to:
14. A computer program causing a computer to execute the method according to any one of claims 1 to 9.
15. A computer-readable storage medium having the computer program of claim 14 stored thereon.
Citation Information
Patent Citations
Container enabling method and device applied to physical machine cluster and computer system
CN111488052A
Information processing system, autoscaling cooperation device and program
JP2018160149A