KR20210061633A - Apparatus and method for scheduling containers of virtualization system - Google Patents

Apparatus and method for scheduling containers of virtualization system Download PDF

Info

Publication number
KR20210061633A
KR20210061633A KR1020190149426A KR20190149426A KR20210061633A KR 20210061633 A KR20210061633 A KR 20210061633A KR 1020190149426 A KR1020190149426 A KR 1020190149426A KR 20190149426 A KR20190149426 A KR 20190149426A KR 20210061633 A KR20210061633 A KR 20210061633A
Authority
KR
South Korea
Prior art keywords
node
worker
worker node
pod
package
Prior art date
Application number
KR1020190149426A
Other languages
Korean (ko)
Inventor
이문상
김범수
Original Assignee
주식회사 케이티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 케이티 filed Critical 주식회사 케이티
Priority to KR1020190149426A priority Critical patent/KR20210061633A/en
Publication of KR20210061633A publication Critical patent/KR20210061633A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Disclosed are an apparatus and method for scheduling a container of a virtualization system that provides a computer resource virtualization service using a plurality of worker nodes. An apparatus for scheduling a container of a virtualization system according to an embodiment of the present invention includes a package checking unit for checking program packages of the new pod through images in a hierarchical format used to create a new pod including at least one container; for each of a plurality of worker nodes, a node selector that calculates the package redundancy between the worker node and the new pod by comparing the program packages of the new pod with the active package group including all program packages of all pods executing on the worker node, wherein the node selector selects a worker node in which the new pod is to be placed from among the plurality of worker nodes in consideration of the package redundancy calculated for each worker node; and a node information providing unit that provides information on the worker node selected by the node selector to the master node that manages the plurality of worker nodes, so that the master node places the new pod on the selected worker node.

Description

가상화 시스템의 컨테이너 스케줄링 장치 및 방법{Apparatus and method for scheduling containers of virtualization system}Apparatus and method for scheduling containers of virtualization system

본 발명은 가상화 시스템의 컨테이너 스케줄링 장치 및 방법에 관한 것으로서, 더욱 상세하게는, 복수의 워커 노드를 이용하여 컴퓨터 자원 가상화 서비스를 제공하는 가상화 시스템의 컨테이너를 스케줄링하는 장치 및 방법에 관한 것이다.The present invention relates to an apparatus and method for scheduling a container in a virtualization system, and more particularly, to an apparatus and method for scheduling a container in a virtualization system that provides computer resource virtualization services using a plurality of worker nodes.

컴퓨터 자원의 가상화(virtualization) 기술은, 물리 자원을 효율적으로 사용하고 보안성을 높이기 위한 목적으로 물리 자원과 애플리케이션 사이에 추상화된 계층을 제공하는 기술을 말한다. 이러한 가상화 기술을 이용하여 컴퓨터 자원 가상화 서비스를 제공하는 가상화 시스템은, 하드웨어 자원을 가상화하는 하이퍼바이저 기반으로 가상 머신(virtual machine)을 제공하는 시스템과, 운영체제를 가상화하는 컨테이너(container)를 제공하는 시스템으로 구분될 수 있다. 상기 시스템들 중 컨테이너를 제공하는 가상화 시스템에서는 컨테이너가 실행되는 워커 노드의 자원을 효율적으로 사용하기 위해 컨테이너의 배치를 최적화하는 스케줄링이 수행되어야 한다.The computer resource virtualization technology refers to a technology that provides an abstracted layer between physical resources and applications for the purpose of efficiently using physical resources and enhancing security. A virtualization system that provides computer resource virtualization services using such virtualization technology is a system that provides a virtual machine based on a hypervisor that virtualizes hardware resources and a container that virtualizes an operating system. It can be classified as Among the above systems, in a virtualization system that provides containers, scheduling for optimizing container placement in order to efficiently use resources of worker nodes in which containers are executed must be performed.

그러나, 한국 공개특허공보 제10-2017-0085072호, 한국 공개특허공보 제10-2019-0066516호 등에 개시된 바와 같이, 기존 기술은 컨테이너에 대한 스케줄링시 각 워커 노드에서 사용되는 프로그램 패키지들을 고려하지 않기 때문에, 각각의 워커 노드에서 컨테이너 실행시 메모리에 저장되는 데이터들 간의 중복성이 떨어져 KSM(Kernel Same-page Merging)을 통한 메모리 절감 효과가 충분하지 않으며, 그 결과, 워커 노드에서 실행되는 컨테이너 또는 파드의 수를 감소시키거나 메모리 부족으로 인한 워커 노드들 간의 빈번한 스와핑(Swapping)을 초래하는 문제점이 있다.However, as disclosed in Korean Patent Application Publication No. 10-2017-0085072, Korean Patent Application Publication No. 10-2019-0066516, and the like, the existing technology does not consider program packages used in each worker node when scheduling a container. Therefore, the redundancy between the data stored in the memory when the container is executed in each worker node is low, and the effect of saving memory through KSM (Kernel Same-page Merging) is not sufficient. As a result, the container or Pod running on the worker node There is a problem of reducing the number or causing frequent swapping between worker nodes due to insufficient memory.

본 발명이 해결하고자 하는 기술적 과제는, 각각의 워커 노드에서 컨테이너 실행시 메모리에 저장되는 데이터들 간의 중복성을 증가시켜 KSM(Kernel Same-page Merging)을 통한 메모리 절감 효과를 향상시키고, 메모리 부족으로 인한 워커 노드들 간의 스와핑 동작을 방지하여 가상화 시스템의 성능을 개선하는 가상화 시스템의 컨테이너 스케줄링 장치 및 방법을 제공하는 것이다.The technical problem to be solved by the present invention is to increase the redundancy between data stored in memory when the container is executed in each worker node, thereby improving the memory saving effect through Kernel Same-page Merging (KSM), and It is to provide a container scheduling apparatus and method for a virtualization system that improves performance of a virtualization system by preventing a swapping operation between worker nodes.

본 발명의 일 실시예에 따른 가상화 시스템의 컨테이너 스케줄링 장치는, 복수의 워커 노드(worker node)를 이용하여 컴퓨터 자원 가상화 서비스를 제공하는 가상화 시스템의 컨테이너(container)를 스케줄링하는 장치로서, 적어도 하나의 컨테이너를 포함하는 신규 파드(pod)의 생성에 사용되는 계층적 포맷의 이미지들을 통해 상기 신규 파드의 프로그램 패키지들을 확인하는 패키지 확인부; 상기 복수의 워커 노드 각각에 대해, 해당 워커 노드에서 실행 중인 전체 파드들의 프로그램 패키지들을 모두 포함한 액티브 패키지 그룹과 상기 신규 파드의 프로그램 패키지들을 비교하여 해당 워커 노드와 상기 신규 파드 간의 패키지 중복도를 산출하고, 워커 노드별로 산출된 패키지 중복도를 고려하여 상기 복수의 워커 노드 중 상기 신규 파드가 배치될 워커 노드를 선정하는 노드 선정부; 및 상기 노드 선정부에 의해 선정된 워커 노드에 관한 정보를 상기 복수의 워커 노드를 관리하는 마스터 노드로 제공하여, 상기 마스터 노드로 하여금 상기 신규 파드를 상기 선정된 워커 노드에 배치하도록 하는 노드 정보 제공부를 포함한다.The container scheduling apparatus of a virtualization system according to an embodiment of the present invention is an apparatus for scheduling a container of a virtualization system that provides a computer resource virtualization service using a plurality of worker nodes, comprising: A package checking unit that checks program packages of the new pod through images of a hierarchical format used to create a new pod including a container; For each of the plurality of worker nodes, the active package group including all program packages of all Pods running in the corresponding worker node and the program packages of the new Pod are compared to calculate a package redundancy between the worker node and the new Pod. And a node selection unit that selects a worker node in which the new Pod is to be placed among the plurality of worker nodes in consideration of a package redundancy calculated for each worker node; And providing information on the worker node selected by the node selection unit to a master node that manages the plurality of worker nodes, so that the master node places the new Pod in the selected worker node. Includes wealth.

일 실시예에 있어서, 상기 노드 선정부는, 상기 복수의 워커 노드 각각에 대해, 해당 워커 노드의 레이블 또는 해당 워커 노드에서 실행 중인 기존 파드의 레이블과 상기 신규 파드의 레이블을 비교하여 해당 워커 노드와 상기 신규 파드 간의 레이블 연관성을 판단하고, 워커 노드별로 판단된 레이블 연관성을 더 고려하여 상기 신규 파드가 배치될 워커 노드를 선정하도록 구성된다.In one embodiment, the node selection unit, for each of the plurality of worker nodes, compares a label of a corresponding worker node or a label of an existing Pod running in the worker node with a label of the new Pod, and compares the label of the new Pod with the worker node. It is configured to determine a label association between new Pods, and to select a worker node in which the new Pod is to be placed in further consideration of the label association determined for each worker node.

일 실시예에 있어서, 상기 노드 선정부는, 상기 패키지 중복도와 상기 레이블 연관성에 각각 가중치를 부여하여 산출된 스코어를 기준으로 상기 신규 파드가 배치될 워커 노드를 선정하도록 구성된다.In an embodiment, the node selection unit is configured to select a worker node in which the new Pod is to be placed based on a score calculated by assigning weights to the package redundancy and the label association, respectively.

일 실시예에 있어서, 상기 노드 정보 제공부는, 상기 마스터 노드에 위치하며 상기 복수의 워커 노드와 연동하여 각각의 워커 노드에 파드를 배치하는 컨트롤러 매니저(controller manager)로 상기 선정된 워커 노드에 관한 정보를 제공하도록 구성된다.In an embodiment, the node information providing unit includes information on the selected worker node as a controller manager located in the master node and interworking with the plurality of worker nodes to place pods in each worker node. It is configured to provide.

일 실시예에 있어서, 상기 스케줄링 장치는, 상기 복수의 워커 노드 각각의 액티브 패키지 그룹 정보를 저장하여 관리하며, 상기 액티브 패키지 그룹 정보를 상기 노드 선정부에 제공하는 패키지 정보 관리부를 더 포함한다.In one embodiment, the scheduling device further includes a package information management unit that stores and manages active package group information of each of the plurality of worker nodes, and provides the active package group information to the node selection unit.

일 실시예에 있어서, 상기 패키지 정보 관리부는, 상기 신규 파드가 상기 선정된 워커 노드에 배치되면, 상기 신규 파드의 프로그램 패키지들을 반영하여 상기 선정된 워커 노드의 액티브 패키지 그룹 정보를 업데이트하도록 구성된다.In an embodiment, the package information management unit is configured to update active package group information of the selected worker node by reflecting program packages of the new Pod when the new Pod is disposed in the selected worker node.

일 실시예에 있어서, 상기 패키지 정보 관리부는, 상기 복수의 워커 노드 중 어느 한 워커 노드에서 실행되던 파드가 실행 중단 또는 삭제되면, 실행 중단 또는 삭제된 파드의 프로그램 패키지들을 반영하여 상기 어느 한 워커 노드의 액티브 패키지 그룹 정보를 업데이트하도록 구성된다.In one embodiment, the package information management unit, when a Pod running in any one worker node among the plurality of worker nodes is suspended or deleted, reflects the program packages of the pod that has been suspended or deleted, and reflects the program packages of the pod that has been suspended or deleted. It is configured to update the active package group information.

본 발명의 일 실시예에 따른 가상화 시스템의 컨테이너 스케줄링 방법은, 복수의 워커 노드를 이용하여 컴퓨터 자원 가상화 서비스를 제공하는 가상화 시스템의 스케줄링 장치가 컨테이너를 스케줄링하는 방법으로서, 상기 스케줄링 장치가 적어도 하나의 컨테이너를 포함하는 신규 파드(pod)의 생성에 사용되는 계층적 포맷의 이미지들을 통해 상기 신규 파드의 프로그램 패키지들을 확인하는 (a) 단계; 상기 스케줄링 장치가 상기 복수의 워커 노드 각각에 대해, 해당 워커 노드에서 실행 중인 전체 파드들의 프로그램 패키지들을 모두 포함하는 액티브 패키지 그룹과 상기 신규 파드의 프로그램 패키지들을 비교하여 해당 워커 노드와 상기 신규 파드 간의 패키지 중복도를 산출하는 (b) 단계; 상기 스케줄링 장치가 워커 노드별로 산출된 패키지 중복도를 고려하여 상기 복수의 워커 노드 중 상기 신규 파드가 배치될 워커 노드를 선정하는 (c) 단계; 및 상기 스케줄링 장치가 상기 (c) 단계에서 선정된 워커 노드에 관한 정보를 상기 복수의 워커 노드를 관리하는 마스터 노드로 제공하여, 상기 마스터 노드로 하여금 상기 신규 파드를 상기 선정된 워커 노드에 배치하도록 하는 (d) 단계를 포함한다.A container scheduling method of a virtualization system according to an embodiment of the present invention is a method in which a scheduling device of a virtualization system providing a computer resource virtualization service using a plurality of worker nodes schedules a container, wherein the scheduling device comprises at least one (A) checking program packages of the new pod through images of a hierarchical format used to create a new pod including a container; For each of the plurality of worker nodes, the scheduling device compares the active package group including all program packages of all Pods running in the worker node with the program packages of the new Pod, and the package between the worker node and the new Pod (B) calculating the degree of redundancy; (C) selecting, by the scheduling device, a worker node in which the new Pod is to be placed among the plurality of worker nodes in consideration of a package redundancy calculated for each worker node; And the scheduling device provides information on the worker node selected in step (c) to a master node that manages the plurality of worker nodes, so that the master node deploys the new pod to the selected worker node. Step (d).

일 실시예에 있어서, 상기 방법은, 상기 (c) 단계 전에, 상기 스케줄링 장치가 상기 복수의 워커 노드 각각에 대해, 해당 워커 노드의 레이블 또는 해당 워커 노드에서 실행 중인 기존 파드의 레이블과 상기 신규 파드의 레이블을 비교하여 해당 워커 노드와 상기 신규 파드 간의 레이블 연관성을 판단하는 (b1) 단계를 더 포함하고, 상기 (c) 단계는, 워커 노드별로 판단된 레이블 연관성을 더 고려하여 상기 신규 파드가 배치될 워커 노드를 선정하는 단계를 포함한다.In one embodiment, the method comprises, before step (c), the scheduling device, for each of the plurality of worker nodes, the label of the worker node or the label of the existing Pod running in the worker node and the new Pod. (B1) determining a label association between a corresponding worker node and the new pod by comparing the labels of, and the step (c) further considers the label association determined for each worker node, and the new pod is placed. And selecting a worker node to be used.

일 실시예에 있어서, 상기 (c) 단계는, 상기 패키지 중복도와 상기 레이블 연관성에 각각 가중치를 부여하여 산출된 스코어를 기준으로 상기 신규 파드가 배치될 워커 노드를 선정하는 단계를 포함한다.In an embodiment, the step (c) includes selecting a worker node in which the new Pod is to be placed based on a score calculated by assigning a weight to each of the package redundancy and the label association.

일 실시예에 있어서, 상기 (d) 단계는, 상기 마스터 노드에 위치하며 상기 복수의 워커 노드와 연동하여 각각의 워커 노드에 파드를 배치하는 컨트롤러 매니저(controller manager)로 상기 선정된 워커 노드에 관한 정보를 제공하는 단계를 포함한다.In one embodiment, the step (d) relates to the selected worker node as a controller manager that is located in the master node and interlocks with the plurality of worker nodes to place pods in each worker node. And providing information.

일 실시예에 있어서, 상기 방법은, 상기 스케줄링 장치가 상기 복수의 워커 노드 각각의 액티브 패키지 그룹 정보를 저장하여 관리하는 (e) 단계를 더 포함한다.In one embodiment, the method further includes the step (e) of storing and managing active package group information of each of the plurality of worker nodes by the scheduling device.

일 실시예에 있어서, 상기 (e) 단계는, 상기 신규 파드가 상기 선정된 워커 노드에 배치되면, 상기 스케줄링 장치가 상기 신규 파드의 프로그램 패키지들을 반영하여 상기 선정된 워커 노드의 액티브 패키지 그룹 정보를 업데이트하는 단계를 포함한다.In an embodiment, in the step (e), when the new Pod is placed in the selected worker node, the scheduling device reflects the program packages of the new Pod and reflects the active package group information of the selected worker node. And updating.

일 실시예에 있어서, 상기 (e) 단계는, 상기 복수의 워커 노드 중 어느 한 워커 노드에서 실행되던 파드가 실행 중단 또는 삭제되면, 상기 스케줄링 장치가 실행 중단 또는 삭제된 파드의 프로그램 패키지들을 반영하여 상기 어느 한 워커 노드의 액티브 패키지 그룹 정보를 업데이트하는 단계를 포함한다.In one embodiment, in the step (e), when a Pod running in one of the plurality of worker nodes is suspended or deleted, the scheduling device reflects the program packages of the Pod that has been suspended or deleted. And updating active package group information of the one worker node.

본 발명에 따른 실시예들은, 상술한 동작 또는 방법을 컴퓨터를 통해 실행하는 컴퓨터 프로그램으로서 컴퓨터로 판독 가능한 기록매체에 기록되는 컴퓨터 프로그램을 이용하여 구현될 수 있다.Embodiments of the present invention may be implemented using a computer program recorded on a computer-readable recording medium as a computer program that executes the above-described operation or method through a computer.

본 발명에 따르면, 컨테이너 기반 가상화 시스템에서 운영되는 복수의 워커 노드 각각에 대해, 해당 워커 노드에서 실행 중인 전체 파드들의 패키지들을 모두 포함하는 액티브 패키지 그룹과 신규 파드의 패키지들을 비교하여 해당 워커 노드의 패키지 중복도를 산출하고, 워커 노드별로 산출된 패키지 중복도를 고려하여 상기 복수의 워커 노드 중 상기 신규 파드가 배치될 워커 노드를 선정함으로써, 각각의 워커 노드에서 컨테이너 실행시 메모리에 저장되는 데이터들 간의 중복성을 증가시켜 KSM(Kernel Same-page Merging)을 통한 메모리 사용량 절감 효과를 향상시키고, 워커 노드 당 실행 가능한 컨테이너 또는 컨테이너를 포함한 파드의 수를 증가시켜 가상화 시스템의 성능을 개선할 수 있다.According to the present invention, for each of a plurality of worker nodes operated in a container-based virtualization system, packages of a corresponding worker node are compared with an active package group including all packages of all Pods running in the corresponding worker node and packages of a new Pod. By calculating the degree of redundancy and selecting a worker node to which the new Pod will be placed among the plurality of worker nodes in consideration of the degree of package redundancy calculated for each worker node, the data stored in the memory when the container is executed in each worker node By increasing redundancy, memory usage reduction through KSM (Kernel Same-page Merging) can be improved, and performance of a virtualization system can be improved by increasing the number of executable containers or pods including containers per worker node.

또한, 워커 노드별로 신규 파드와의 패키지 중복도 및 레이블 연관성을 함께 고려하여 상기 신규 파드가 배치될 워커 노드를 선정함으로써, 메모리 절감 효과를 더욱 향상시킬 수 있으며, 메모리 부족으로 인한 워커 노드들 간의 스와핑 동작을 방지할 수 있다.In addition, it is possible to further improve the memory saving effect by selecting the worker node in which the new Pod will be placed by considering the package redundancy and label association with the new Pod for each worker node, and swapping between worker nodes due to memory shortage. It can prevent operation.

나아가, 본 발명이 속하는 기술 분야의 통상의 지식을 가진 자라면, 본 발명에 따른 다양한 실시예들이 상기 언급되지 않은 여러 기술적 과제들을 해결할 수 있음을 이하의 설명으로부터 자명하게 이해할 수 있을 것이다.Furthermore, those of ordinary skill in the art to which the present invention pertains will clearly understand from the following description that various embodiments according to the present invention can solve various technical problems not mentioned above.

도 1은 본 발명이 적용되는 가상화 시스템의 컨테이너 오케스트레이션 플랫폼 구조를 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 스케줄링 장치를 나타낸 블록도이다.
도 3은 본 발명의 일 실시예에 따른 스케줄링 방법을 나타낸 흐름도이다.
도 4는 도커 이미지를 사용하여 생성한 도커 컨테이너의 일례를 나타낸 도면이다.
도 5는 워커 노드별로 배치된 파드들을 예시한 도면이다.
도 6은 본 발명의 일 실시예에 따른 스케줄링 방법에 사용되는 파드 명세서의 일례를 나타낸 도면이다.
1 is a diagram showing the structure of a container orchestration platform of a virtualization system to which the present invention is applied.
2 is a block diagram showing a scheduling device according to an embodiment of the present invention.
3 is a flowchart illustrating a scheduling method according to an embodiment of the present invention.
4 is a diagram showing an example of a Docker container created using a Docker image.
5 is a diagram illustrating Pods arranged for each worker node.
6 is a diagram illustrating an example of a Pod specification used in a scheduling method according to an embodiment of the present invention.

이하, 본 발명의 기술적 과제에 대한 해결 방안을 명확화하기 위해 첨부도면을 참조하여 본 발명의 실시예들을 상세하게 설명한다. 다만, 본 발명을 설명함에 있어서 관련 공지기술에 관한 설명이 오히려 본 발명의 요지를 불명료하게 하는 경우 그에 관한 설명은 생략하기로 한다. 또한, 본 명세서에서 사용되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이들은 설계자, 제조자 등의 의도 또는 관례 등에 따라 달라질 수 있을 것이다. 그러므로 후술되는 용어들의 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings in order to clarify a solution to the technical problem of the present invention. However, in describing the present invention, if the description of the related known technology rather obscure the subject matter of the present invention, a description thereof will be omitted. In addition, terms used in the present specification are terms defined in consideration of functions in the present invention, and these may vary according to intentions or customs of designers, manufacturers, and the like. Therefore, the definition of terms to be described later should be made based on the contents throughout the present specification.

도 1에 본 발명이 적용되는 가상화 시스템(2)의 예시적인 컨테이너 오케스트레이션 플랫폼 구조가 도시되어 있다.1 illustrates an exemplary container orchestration platform structure of a virtualization system 2 to which the present invention is applied.

도 1에 도시된 바와 같이, 가상화 시스템(2)은 컴퓨터 자원 가상화 서비스의 제공시 컨테이너(container)의 생성, 배치, 실행, 실행 중지, 삭제 등의 컨테이너 관리 내지 오케스트레이션(orchestration)을 수행하기 위해 마스터 노드(master node)(10)와 워커 노드(worker node)(20)를 포함할 수 있다.As shown in Fig. 1, the virtualization system 2 is a master in order to perform container management or orchestration such as creating, placing, executing, stopping execution, and deleting containers when providing computer resource virtualization services. It may include a master node 10 and a worker node 20.

가상화 시스템(2)이 제공하는 컨테이너는 사용자의 워크로드(Workload)를 실행하는 주체로서, 도커(Docker), 리눅스 컨테이너(LXC), 로켓(Rocket), 또는 클린 컨테이너(Clean Container)일 수 있다. 또한, 가상화 시스템(2)은 이러한 컨테이너의 관리 내지 오케스트레이션을 수행하기 위해 컨테이너 오케스트레이션 플랫폼을 포함할 수 있다.The container provided by the virtualization system 2 is a subject that executes a user's workload, and may be a Docker, a Linux container (LXC), a rocket, or a clean container. In addition, the virtualization system 2 may include a container orchestration platform to perform management or orchestration of such containers.

본 명세서에서는 설명의 편의를 위해, 가상화 시스템(2)이 컨테이너 오케스트레이션 플랫폼으로서 구글에 의해 설계되고 리눅스 재단에 의해 관리되고 있는 오픈 소스 플랫폼인 쿠버네티스(Kubernetes)를 포함하고, 컨테이너로서 도커(Docker)를 제공하는 것으로 설명될 것이나, 본 발명의 기술적 사상은 다른 컨테이너 오케스트레이션 플랫폼이나 다른 컨테이너를 이용하는 가상화 시스템에 적용될 수 있음은 물론이다.In this specification, for convenience of explanation, the virtualization system 2 includes Kubernetes, an open source platform designed by Google as a container orchestration platform and managed by the Linux Foundation, and Docker as a container. ), but the technical idea of the present invention can be applied to other container orchestration platforms or virtualization systems using other containers.

또한, 본 명세서에서 파드(pod)는, 적어도 하나의 컨테이너를 포함하는 컨테이너 집합으로서, 컨테이너 스케줄링의 기본 단위를 이루는 컨테이너 집합을 지칭한다.In addition, in the present specification, a pod is a container set including at least one container, and refers to a container set constituting a basic unit of container scheduling.

우선, 마스터 노드(10)는 복수의 워커 노드(20)로 이루어진 클러스터 전체를 관리하도록 구성된다. 이를 위해, 마스터 노드(10)는 API 서버(12), Etcd(14), 컨트롤러 매니저(controller manager)(16) 등과 함께, 본 발명에 따른 스케줄링 장치(100)를 포함할 수 있다.First, the master node 10 is configured to manage the entire cluster consisting of a plurality of worker nodes 20. To this end, the master node 10 may include an API server 12, Etcd 14, a controller manager 16, and the like, as well as the scheduling device 100 according to the present invention.

API 서버(12)는 UI(User Interface)를 통해 사용자 요청을 수신하거나, 마스터 노드와 워커 노드 간의 통신을 수행한다. Etcd(14)는 각 노드 및 클러스터의 설정 값이나 상태를 저장하는 데이터베이스 역할을 수행한다. 컨트롤러 매니저(16)는 사용자의 워크로드를 실행하는 주체로서 적어도 하나의 컨테이너를 포함한 파드(pod)의 저장 공간 조절, 추가 또는 삭제되는 파드의 레이블(label) 할당 등을 수행한다.The API server 12 receives a user request through a user interface (UI) or communicates between a master node and a worker node. Etcd(14) plays the role of a database that stores the configuration values and states of each node and cluster. The controller manager 16, as a subject executing a user's workload, adjusts the storage space of a pod including at least one container, and assigns a label of a pod to be added or deleted.

워커 노드(20)는, 마스터 노드(10)의 명령을 수신하여 실제 작업을 수행하도록 구성된다. 이를 위해, 워커 노드(20)는 쿠블릿(Kubelet)(22), 프록시(Proxy 또는 Kube-proxy)(24) 등을 포함하며, 이러한 워커 노드(20)에는 적어도 하나의 컨테이너(28)를 포함한 파드(26)가 배치된다.The worker node 20 is configured to receive an instruction from the master node 10 and perform an actual operation. To this end, the worker node 20 includes a Kubelet 22, a proxy or Kube-proxy 24, and the like, and the worker node 20 includes at least one container 28. Pod 26 is placed.

쿠블릿(22)은, 마스터 노드(10)의 API 서버(12)와 통신을 수행하며 명령을 수신하거나 워커 노드(20)의 상태를 마스터 노드(10)로 전달한다. 프록시(24)는 워커 노드(20)에 들어오는 네트워크 트래픽을 파드(26) 내의 컨테이너(28)에게 라우팅하고 마스터 노드(10)와 워커 노드(20) 간의 네트워크 통신을 관리한다.The Kublet 22 communicates with the API server 12 of the master node 10 and receives a command or transmits the state of the worker node 20 to the master node 10. The proxy 24 routes network traffic incoming to the worker node 20 to the container 28 in the pod 26 and manages network communication between the master node 10 and the worker node 20.

예컨대, 사용자의 웹 브라우저나 쉘 명령행 인터페이스(Shell Command Line Interface)를 통해 파드를 실행하라는 명령이 수신되면, 마스터 노드(10)의 API 서버(12)는 수신된 명령을 컨트롤러 매니저(16)에게 전달하고, 컨트롤러 매니저(16)는 스케줄링 장치(100)에게 대상 파드를 어떤 워커 노드에 배치하여 실행하면 되는지 질의하게 된다. 스케줄링 장치(100)가 해당 파드를 실행할 워커 노드를 선정하면, 컨트롤러 매니저(16)는 워커 노드(20)의 쿠블릿(22)과 연동하여 해당 워커 노드(20)에 대상 파드를 배치하여 실행시킨다.For example, when a command to execute a Pod is received through a user's web browser or a shell command line interface, the API server 12 of the master node 10 sends the received command to the controller manager 16. Then, the controller manager 16 queries the scheduling device 100 on which worker nodes to place and execute the target Pod. When the scheduling device 100 selects a worker node to execute the corresponding Pod, the controller manager 16 interlocks with the Kublet 22 of the worker node 20 to place and execute the target Pod on the corresponding worker node 20. .

이 경우, 스케줄링 장치(100)는 여러 워커 노드들 중 대상 파드의 요구 사항을 만족하는 워커 노드를 확인하는 필터링(filtering) 단계와, 필터링을 통과한 워커 노드들에 대해 일정 기준에 따라 점수를 부가하여 최적의 워커 노드를 선정하는 스코어링(Scoring) 단계를 통해, 대상 파드를 실행할 워커 노드를 선정할 수 있다. 예컨대, 필터링 단계에서는 대상 파드가 요구하는 CPU와 메모리 용량을 제공할 수 있는 워커 노드들만 후보 노드들로 한정하는 규칙(PodFitsResources) 등이 적용될 수 있다. 또한, 스코어링 단계에서는 필터링을 통과한 후보 노드들 중 기존에 배치된 파드의 수가 적어서 여유 자원이 많을 것으로 예상되는 후보 노드에게 높은 점수를 부여하는 규칙(LeastRequestedPriority) 등이 적용될 수 있다. 스코어링 단계 완료 후 동일 점수를 갖는 2 이상의 워커 노드가 존재하는 경우, 스케줄링 장치(100)는 상기 2 이상의 워커 노드 중 하나를 랜덤하게 선택할 수 있다.In this case, the scheduling device 100 adds a filtering step to check worker nodes that satisfy the requirements of the target Pod among several worker nodes, and add scores to worker nodes that have passed the filtering according to a certain criterion. Thus, through a scoring step of selecting an optimal worker node, a worker node to execute the target Pod can be selected. For example, in the filtering step, a rule (PodFitsResources) that restricts only worker nodes capable of providing the CPU and memory capacity required by the target Pod to candidate nodes may be applied. In addition, in the scoring step, a rule (LeastRequestedPriority) that gives a high score to candidate nodes that are expected to have a large amount of spare resources because the number of previously deployed Pods among candidate nodes that have passed filtering may be applied. When two or more worker nodes having the same score exist after completing the scoring step, the scheduling apparatus 100 may randomly select one of the two or more worker nodes.

또한, 스케줄링 장치(100)는 신규 파드를 배치할 워커 노드를 선정하기 위해 상술한 규칙들 이외에 다양한 스케줄링 규칙들을 더 적용할 수 있다. 예컨대, 스케줄링 장치(100)는 NodeAffinity 규칙 또는 PodAffinity 규칙을 적용할 수 있다. NodeAffinity 규칙은 워커 노드들 중에서 신규 파드의 명세(specification)에 나타난 레이블(label)과 대응하는 레이블을 가진 워커 노드에 신규 파드를 배치하는 규칙이다. PodAffinity 규칙은 신규 파드의 명세에 나타난 레이블과 대응하는 레이블을 가진 파드가 실행중인 워커 노드에 신규 파드를 배치하는 규칙이다. 즉, NodeAffinity 규칙과 PodAffinity 규칙은, 워커 노드와 신규 파드 간의 레이블 연관성을 고려하여 신규 파드가 설치될 워커 노드를 선정하는 규칙이다.In addition, the scheduling apparatus 100 may further apply various scheduling rules in addition to the above-described rules in order to select a worker node in which a new Pod is to be placed. For example, the scheduling device 100 may apply a NodeAffinity rule or a PodAffinity rule. The NodeAffinity rule is a rule for placing a new Pod in a worker node having a label corresponding to a label indicated in the specification of the new Pod among worker nodes. The PodAffinity rule is a rule that places a new Pod in a worker node running by a Pod with a label corresponding to the label indicated in the specification of the new Pod. That is, the NodeAffinity rule and the PodAffinity rule are rules for selecting a worker node in which a new Pod will be installed in consideration of the label association between the worker node and the new Pod.

이와 같이, 신규 파드의 명세에 각각의 워커 노드 또는 각각의 워커 노드에서 실행 중인 기존 파드의 레이블과 상기 신규 파드의 레이블 간에 연관성이 존재하는지를 고려하도록 규칙을 부여하여, 스케줄링 장치(100)로 하여금 워커 노드와 신규 파드 간의 레이블 연관성에 따라 신규 파드를 배치할 워커 노드를 선정하도록 할 수 있다. 이 경우, 스케줄링 장치(100)는 다양한 연산자를 사용하여 워커 노드 또는 이미 실행 중인 기존 파드의 레이블과 신규 파드의 레이블 간의 매칭 연산을 수행할 수 있으며, 사전에 워커 노드나 기존 파드에 어떤 레이블이 붙어 있는지에 관한 정보를 미리 저장하도록 구성될 수 있다.In this way, a rule is given to the specification of the new Pod to consider whether there is an association between the label of each worker node or an existing Pod running in each worker node and the label of the new Pod, and the scheduling device 100 causes the worker It is possible to select a worker node to place a new Pod according to the label association between the node and the new Pod. In this case, the scheduling device 100 may perform a matching operation between the label of the worker node or the existing Pod that is already running and the label of the new Pod using various operators, and a label is attached to the worker node or the existing Pod in advance. It may be configured to store information about whether or not in advance.

그러나, 5G 통신의 MEC((Multi-access Edge Computing)과 같이 다수의 사용자에게 컨테이너 실행 환경을 제공해야 하는 클라우드 서비스에서는, 각각의 사용자에 의해 실행되고 있는 파드들이 어떤 레이블을 가지고 있는지 확인하기 곤란할 뿐만 아니라, 사용자가 자유롭게 기술할 수 있는 레이블이 어떤 의미로 사용되었는지 정확히 규정할 수 없기 때문에, 신규 파드의 레이블과의 연관성을 판단할 수 없는 상황들이 발생할 수 있다.However, in a cloud service that needs to provide a container execution environment to a large number of users, such as MEC (Multi-access Edge Computing) of 5G communication, it is difficult not only to check what label the Pods running by each user have. Rather, since it is not possible to accurately define what a label that can be described freely by the user is used, situations in which it is impossible to determine the association with the label of the new Pod may occur.

한편, 리눅스 커널에 의해 제공되고 있는 KSM(Kernel Same-page Merging) 기능은, 메모리를 스캐닝하여 메모리의 페이지들 중에서 동일한 커널 코드들이 저장된 중복된 페이지들을 찾아내고, 중복된 페이지들을 하나의 페이지로 병합한 후 상대적으로 적은 데이터로 구성된 메모리 주소 매핑 정보만 제공함으로써, 다수의 프로세스를 통해 저장되는 데이터량을 감소시켜 메모리 사용량을 절감하는 기능이다.Meanwhile, the KSM (Kernel Same-page Merging) function provided by the Linux kernel scans the memory to find duplicate pages in which the same kernel codes are stored among the pages of the memory, and merges the duplicate pages into one page. It is a function to reduce memory usage by reducing the amount of data stored through a number of processes by providing only memory address mapping information composed of relatively little data.

그러나, 워커 노드와 신규 파드 간의 레이블 연관성을 기준으로 선정된 워커 노드에 신규 파드를 배치하는 경우, KSM 기능을 사용하더라도 메모리 사용량 절감 효과가 없거나 미미한 수준에 그칠 수 있다. 이는 컨테이너 스케줄링 또는 파드 스케줄링이 사용자에 의해 자유롭게 기술될 수 있는 레이블 값에 의존하기 때문이다. 예컨대, db라는 레이블을 가진 사용자 A의 데이터베이스 파드가 MySQL를 사용하는 것이고, 사용자 B의 신규 데이터베이스 파드가 Oracle을 사용하는 것이라면, 사용자 A의 데이터베이스 파드가 실행되고 있는 워커 노드에 사용자 B의 신규 데이터베이스 파드가 배치되어 실행되더라도 메모리에 저장되는 커널 코드들이 상이하여 KSM 기능의 메모리 사용량 절감 효과를 기대할 수 없게 된다.However, when a new Pod is placed in a worker node selected based on the label association between the worker node and the new Pod, even if the KSM function is used, the effect of reducing the memory usage may be insignificant or not. This is because container scheduling or Pod scheduling relies on label values that can be freely described by the user. For example, if User A's Database Pod, labeled db, uses MySQL, and User B's new Database Pod uses Oracle, then User B's new Database Pod is on the worker node where User A's Database Pod is running. Even if is deployed and executed, the kernel codes stored in the memory are different, so the effect of reducing the memory usage of the KSM function cannot be expected.

따라서, Multi-Tenants를 지원하는 가상화 시스템(2)에서는 더욱 정형화된 방법으로 신규 파드와 워커 노드 간의 연관성을 판단하고, 판단된 연관성을 반영하여 선정된 워커 노드에 신규 파드를 배치하는 자동화된 알고리즘을 제공할 필요가 있다.Therefore, in the virtualization system (2) supporting Multi-Tenants, an automated algorithm that determines the association between the new Pod and the worker node in a more formal manner, and places the new Pod on the selected worker node by reflecting the determined association. Need to provide.

이에, 본 발명에 따른 스케줄링 장치(100)는 각각의 워커 노드(20)에서 실행 중인 컨테이너 또는 파드의 프로그램 패키지들과 신규 파드의 프로그램 패키지들을 확인하고, 패키지 중복도가 높은 워커 노드에 상기 신규 파드가 배치되도록 스케줄링을 수행함으로써 KSM(Kernel Same-page Merging)의 효과를 극대화할 수 있다.Accordingly, the scheduling device 100 according to the present invention checks the program packages of the container or Pod running in each worker node 20 and the program packages of the new Pod, and the new Pod in the worker node with high package redundancy. It is possible to maximize the effect of KSM (Kernel Same-page Merging) by performing scheduling so that they are deployed.

이러한 스케줄링 장치(100)는 메모리, 프로세서 등을 포함하는 하드웨어와, 메모리에 저장되고 프로세서에 의해 실행되는 소프트웨어 간의 결합으로 구현될 수 있다. 또한, 스케줄링 장치(100)는 도 1과 같이 마스터 노드(10)에 통합된 형태로 구현되거나, 실시예에 따라 마스터 노드(10)와 구별되는 별도의 장치로 구현될 수도 있다.The scheduling apparatus 100 may be implemented as a combination between hardware including a memory and a processor, and software stored in the memory and executed by the processor. In addition, the scheduling device 100 may be implemented in a form integrated with the master node 10 as shown in FIG. 1, or may be implemented as a separate device distinct from the master node 10 according to embodiments.

도 2에는 본 발명의 일 실시예에 따른 스케줄링 장치(100)가 블록도로 도시되어 있다.2 is a block diagram of a scheduling apparatus 100 according to an embodiment of the present invention.

도 2에 도시된 바와 같이, 본 발명의 일 실시예에 따른 스케줄링 장치(100)는 복수의 워커 노드(20)를 이용하여 컴퓨터 자원 가상화 서비스를 제공하는 가상화 시스템(2)의 컨테이너들을 스케줄링하는 장치로서, 패키지 확인부(110), 노드 선정부(120) 및 노드 정보 제공부(130)를 포함하며, 패키지 정보 관리부(140)를 더 포함할 수 있다.As shown in FIG. 2, the scheduling apparatus 100 according to an embodiment of the present invention uses a plurality of worker nodes 20 to schedule containers of a virtualization system 2 that provides a computer resource virtualization service. As an example, it includes a package confirmation unit 110, a node selection unit 120, and a node information providing unit 130, and may further include a package information management unit 140.

패키지 확인부(110)는, 적어도 하나의 컨테이너를 포함한 신규 파드(pod)에서 사용되는 계층적 포맷의 이미지들을 통해 상기 신규 파드의 실행시 사용되는 프로그램 패키지들을 확인하도록 구성된다.The package checking unit 110 is configured to check program packages used when the new pod is executed through images of a hierarchical format used in a new pod including at least one container.

노드 선정부(120)는, 상기 복수의 워커 노드(20) 각각에 대하여, 해당 워커 노드에서 실행 중인 전체 파드들의 프로그램 패키지들을 모두 포함한 액티브 패키지 그룹(active package group)과 상기 신규 파드의 프로그램 패키지들을 비교하여, 해당 워커 노드와 상기 신규 파드 간의 패키지 중복도를 산출하고, 워커 노드별로 산출된 패키지 중복도를 고려하여 상기 복수의 워커 노드(20) 중 상기 신규 파드가 배치될 워커 노드를 선정하도록 구성된다. 이 경우, 노드 선정부(120)는 상기 복수의 워커 노드(20) 중 패키지 중복도가 가장 높은 워커 노드를 선정할 수 있다. 즉, 노드 선정부(120)는 상기 복수의 워커 노드(20) 중 상기 신규 파드의 프로그램 패키지들과 중복되는 프로그램 패키지들을 가장 많이 가진 워커 노드를 상기 신규 파드가 배치될 워커 노드로 선정할 수 있다.The node selection unit 120, for each of the plurality of worker nodes 20, selects an active package group including all program packages of all Pods running in the worker node and program packages of the new Pods. In comparison, the package redundancy between the worker node and the new Pod is calculated, and the worker node to which the new Pod is to be placed is selected from among the plurality of worker nodes 20 in consideration of the package redundancy calculated for each worker node. do. In this case, the node selection unit 120 may select a worker node having the highest package redundancy among the plurality of worker nodes 20. That is, the node selection unit 120 may select a worker node having the most program packages overlapping with the program packages of the new Pod among the plurality of worker nodes 20 as a worker node in which the new Pod will be placed. .

일 실시예에 있어서, 노드 선정부(120)는 상기 복수의 워커 노드(20) 각각에 대해, 해당 워커 노드의 레이블(label) 또는 해당 워커 노드에서 실행 중인 기존 파드의 레이블과 상기 신규 파드의 레이블을 비교하여, 해당 워커 노드과 상기 신규 파드 간의 레이블 연관성(label affinity)을 판단하고, 워커 노드별로 판단된 레이블 연관성을 더 고려하여 상기 신규 파드가 배치될 워커 노드를 선정하도록 구성될 수 있다.In an embodiment, the node selection unit 120 includes, for each of the plurality of worker nodes 20, a label of a corresponding worker node or a label of an existing Pod running in the worker node and a label of the new Pod. By comparison, a label affinity between a corresponding worker node and the new pod may be determined, and a worker node in which the new pod will be placed may be selected by further considering the label association determined for each worker node.

이 경우, 노드 선정부(120)는 워커노드별 패키지 중복도와 레이블 연관성에 각각 가중치를 부여하여 산출된 스코어를 기준으로 상기 신규 파드가 배치될 워커 노드를 선정할 수 있다. 즉, 노드 선정부(120)는 상기 복수의 워커 노드(20) 중 패키지 중복도와 레이블 연관성에 각각 가중치를 부여하여 산출된 스코어가 가장 높은 워커 노드를 상기 신규 파드가 배치될 워커 노드로 선정할 수 있다.In this case, the node selection unit 120 may select a worker node in which the new Pod is to be placed based on a score calculated by assigning a weight to each worker node's package redundancy and label association. That is, the node selection unit 120 may select a worker node with the highest score calculated by assigning weights to package redundancy and label association among the plurality of worker nodes 20 as the worker node in which the new Pod will be placed. have.

노드 정보 제공부(130)는, 노드 선정부(120)에 의해 선정된 워커 노드에 관한 정보를 상기 복수의 워커 노드(20)를 관리하는 마스터 노드(10)로 제공하여, 상기 마스터 노드(10)로 하여금 상기 신규 파드를 상기 선정된 워커 노드에 배치하도록 한다. 이 경우, 노드 정보 제공부(130)는 상기 마스터 노드(10)에 위치하며 상기 복수의 워커 노드(20)와 연동하여 각각의 워커 노드에 파드를 배치하는 컨트롤러 매니저(controller manager)로 상기 선정된 워커 노드에 관한 정보를 제공하도록 구성될 수 있다.The node information providing unit 130 provides information on the worker node selected by the node selection unit 120 to the master node 10 managing the plurality of worker nodes 20, and the master node 10 ) To place the new Pod in the selected worker node. In this case, the node information providing unit 130 is located in the master node 10 and interlocked with the plurality of worker nodes 20 to place pods in each worker node, as the selected controller manager. It can be configured to provide information about worker nodes.

한편, 패키지 정보 관리부(140)는, 상기 복수의 워커 노드 각각의 액티브 패키지 그룹 정보를 저장하여 관리하며, 상기 액티브 패키지 그룹 정보를 노드 선정부(120)에 제공하도록 구성된다.Meanwhile, the package information management unit 140 is configured to store and manage active package group information of each of the plurality of worker nodes, and to provide the active package group information to the node selection unit 120.

이 경우, 패키지 정보 관리부(140)는 상기 신규 파드가 노드 선정부(120)에 의해 선정된 워커 노드에 배치되면 상기 신규 파드의 프로그램 패키지들을 반영하여, 상기 선정된 워커 노드의 액티브 패키지 그룹 정보를 업데이트하도록 구성될 수 있다. 즉, 상기 신규 파드의 프로그램 패키지들 중 상기 선정된 워커 노드의 액티브 패키지 그룹에 포함되지 않은 프로그램 패키지가 존재하는 경우, 패키지 정보 관리부(140)는 해당 프로그램 패키지에 관한 정보를 상기 선정된 워커 노드의 액티브 패키지 그룹 정보에 추가할 수 있다.In this case, the package information management unit 140 reflects the program packages of the new pod when the new pod is placed on the worker node selected by the node selection unit 120, and stores active package group information of the selected worker node. It can be configured to update. That is, if a program package that is not included in the active package group of the selected worker node among the program packages of the new Pod exists, the package information management unit 140 stores information on the program package of the selected worker node. Can be added to the active package group information.

또한, 패키지 정보 관리부(140)는 상기 복수의 워커 노드(20) 중 어느 한 워커 노드에서 실행되던 파드가 실행 중단 또는 삭제된 경우, 실행 중단 또는 삭제된 파드의 프로그램 패키지들을 반영하여 해당 워커 노드의 액티브 패키지 그룹 정보를 업데이트하도록 구성될 수 있다. 즉, 실행 중단 또는 삭제된 파드의 프로그램 패키지들 중 해당 워커 노드에서 여전히 실행되고 있는 다른 파드들의 프로그램 패키지와 중복되지 않는 프로그램 패키지가 존재하는 경우, 패키지 정보 관리부(140)는 해당 프로그램 패키지에 관한 정보를 해당 워커 노드의 액티브 패키지 그룹 정보에서 삭제할 수 있다.In addition, the package information management unit 140 reflects the program packages of the pod that has been suspended or deleted when the pod running in any one worker node among the plurality of worker nodes 20 is stopped or deleted. It can be configured to update the active package group information. That is, if there is a program package that does not overlap with program packages of other Pods still running in the worker node among the program packages of the Pod that has been suspended or deleted, the package information management unit 140 provides information on the corresponding program package. Can be deleted from the active package group information of the worker node.

이와 같이 스케줄링 장치(100)에 포함되는 패키지 확인부(110), 노드 선정부(120), 노드 정보 제공부(130) 및 패키지 정보 관리부(140)는 메모리, 프로세서 등을 포함하는 하드웨어와, 메모리에 저장되고 프로세서에 의해 실행되는 소프트웨어 간의 결합으로 구현될 수 있다.As described above, the package identification unit 110, the node selection unit 120, the node information providing unit 130, and the package information management unit 140 included in the scheduling device 100 include hardware including a memory, a processor, and the like, and It can be implemented as a combination between software stored in and executed by the processor.

도 3에는 본 발명의 일 실시예에 따른 스케줄링 방법이 흐름도로 도시되어 있다. 도 3을 참조하여 스케줄링 장치(100)의 세부 동작들을 시계열적으로 설명한다.3 is a flowchart illustrating a scheduling method according to an embodiment of the present invention. Detailed operations of the scheduling device 100 will be described in time series with reference to FIG. 3.

도 3에 도시된 바와 같이, 스케줄링 장치(100)의 패키지 확인부(110)는 적어도 하나의 컨테이너를 포함한 신규 파드의 생성에 사용되는 계층적 포맷의 이미지들을 통해 상기 신규 파드의 프로그램 패키지들을 확인한다(S310).As shown in FIG. 3, the package checking unit 110 of the scheduling device 100 checks the program packages of the new Pod through images in a hierarchical format used to create a new Pod including at least one container. (S310).

도 4에는 도커 이미지(X)를 사용하여 생성한 도커 컨테이너(Y)의 일례가 도시되어 있다.4 shows an example of a docker container Y created by using the docker image X.

도 4에 도시된 바와 같이, 상술한 가상화 시스템(2)에서 제공되는 컨테이너의 일종인 도커(docker)는 오버레이2(overlay2) 또는 AUFS(Advanced multi-layered Unification FileSystem)와 같은 계층적 포맷의 이미지들을 사용한다.As shown in FIG. 4, a docker, which is a kind of container provided in the above-described virtualization system 2, contains images in a hierarchical format such as overlay2 or AUFS (Advanced multi-layered Unification File System). use.

예컨대, 도커 컨테이너(Y)는 3개의 계층으로 이루어진 도커 이미지(X)를 통해 생성될 수 있다. 이 경우, 상기 도커 이미지(X)는 도커파일(Dockerfile)의 작성과 도커 빌드 명령을 통해 생성되며, 베이스 이미지(1)와 추가된 계층 이미지들(2, 3)로 구성된다. 베이스 이미지(1)는 리눅스 배포판과 그 버전번호로 식별되며, 추가된 계층 이미지들(2, 3)은 설치된 패키지 명과 해당 패키지의 버전번호로 식별될 수 있다. 파드는 이러한 도커 컨테이너를 1 또는 2 이상 포함한다.For example, the docker container Y may be generated through a docker image X consisting of three layers. In this case, the Docker image X is generated through the creation of a Dockerfile and a Docker build command, and is composed of a base image 1 and added layer images 2 and 3. The base image 1 is identified by the Linux distribution and its version number, and the added hierarchical images 2 and 3 can be identified by the installed package name and the version number of the corresponding package. Pods contain one or more of these Docker containers.

따라서, 스케줄링 장치(100)는 파드의 실행 시 해당 파드에 포함된 컨테이너들이 사용하는 도커 이미지로부터 해당 파드에서 사용되는 리눅스 배포판과 설치된 프로그램 패키지들을 파악할 수 있다. 예컨대, 스케줄링 장치(100)는 “docker image inspect $DockerImageName”과 같은 명령을 사용하여 신규 파드의 도커 이미지에 포함된 각 이미지 계층에 관한 정보나 프로그램 패키지 리스트 등을 확인할 수 있다.Accordingly, when the pod is executed, the scheduling device 100 may grasp the Linux distribution used in the pod and the installed program packages from the Docker image used by the containers included in the pod. For example, the scheduling device 100 may use a command such as “docker image inspect $DockerImageName” to check information on each image layer or a program package list included in the docker image of a new Pod.

다시 도 3을 참조하면, 스케줄링 장치(100)의 노드 선정부(120)는 상기 복수의 워커 노드(20) 각각에 대해, 해당 워커 노드에서 실행 중인 전체 파드의 프로그램 패키지들을 모두 포함한 액티브 패키지 그룹(active package group)과 상기 신규 파드의 프로그램 패키지들을 비교하여 해당 워커 노드와 상기 신규 노드 간의 패키지 중복도를 산출한다(S320).Referring back to FIG. 3, the node selection unit 120 of the scheduling device 100 includes, for each of the plurality of worker nodes 20, an active package group including all program packages of all Pods running in the corresponding worker node ( active package group) and the program packages of the new Pod are compared to calculate the degree of package redundancy between the corresponding worker node and the new node (S320).

그리고 노드 선정부(120)는 워커 노드별로 산출된 패키지 중복도를 고려하여 상기 복수의 워커 노드 중 상기 신규 파드가 배치될 워커 노드를 선정한다(S330).In addition, the node selector 120 selects a worker node in which the new Pod is to be placed among the plurality of worker nodes in consideration of the package redundancy calculated for each worker node (S330).

그 다음, 스케줄링 장치(100)의 노드 정보 제공부(130)는 노드 선정부(120)에 의해 선정된 워커 노드에 관한 정보를 상기 복수의 워커 노드(20)를 관리하는 마스터 노드(10)로 제공하여, 상기 마스터 노드(10)로 하여금 상기 신규 파드를 상기 선정된 워커 노드에 배치하도록 한다(S340). 이 경우, 노드 정보 제공부(130)는 상기 마스터 노드(10)에 위치하며 상기 복수의 워커 노드(20)와 연동하여 각각의 워커 노드에 파드를 배치하는 컨트롤러 매니저(controller manager)로 상기 선정된 워커 노드에 관한 정보를 제공할 수 있다Then, the node information providing unit 130 of the scheduling device 100 transfers the information on the worker node selected by the node selection unit 120 to the master node 10 that manages the plurality of worker nodes 20. By providing, it causes the master node 10 to place the new Pod in the selected worker node (S340). In this case, the node information providing unit 130 is located in the master node 10 and interlocked with the plurality of worker nodes 20 to place pods in each worker node, as the selected controller manager. Can provide information about worker nodes

그 다음, 스케줄링 장치(100)의 패키지 정보 관리부(140)는 상기 복수의 워커 노드 각각의 액티브 패키지 그룹 정보를 저장하여 관리한다. 즉, 상기 신규 파드가 노드 선정부(120)에 의해 선정된 워커 노드에 배치되면, 패키지 정보 관리부(140)는 상기 신규 파드의 프로그램 패키지들을 반영하여 상기 선정된 워커 노드의 액티브 패키지 그룹 정보를 업데이트한다(S350). 예컨대, 상기 신규 파드의 프로그램 패키지들 중 상기 선정된 워커 노드의 액티브 패키지 그룹에 포함되지 않은 프로그램 패키지가 존재하는 경우, 패키지 정보 관리부(140)는 해당 프로그램 패키지에 관한 정보를 상기 선정된 워커 노드의 액티브 패키지 그룹 정보에 추가할 수 있다.Then, the package information management unit 140 of the scheduling device 100 stores and manages active package group information of each of the plurality of worker nodes. That is, when the new Pod is placed on a worker node selected by the node selection unit 120, the package information management unit 140 updates the active package group information of the selected worker node by reflecting the program packages of the new Pod. Do (S350). For example, if a program package that is not included in the active package group of the selected worker node among the program packages of the new Pod exists, the package information management unit 140 stores information on the program package of the selected worker node. Can be added to the active package group information.

또한, 패키지 정보 관리부(140)는 상기 복수의 워커 노드(20) 중 어느 한 워커 노드에서 실행되던 파드가 실행 중단 또는 삭제된 경우, 실행 중단 또는 삭제된 파드의 프로그램 패키지들을 반영하여 해당 워커 노드의 액티브 패키지 그룹 정보를 업데이트할 수도 있다. 예컨대, 실행 중단 또는 삭제된 파드의 프로그램 패키지들 중 해당 워커 노드에서 여전히 실행되고 있는 다른 파드들의 프로그램 패키지와 중복되지 않는 프로그램 패키지가 존재하는 경우, 패키지 정보 관리부(140)는 해당 프로그램 패키지에 관한 정보를 해당 워커 노드의 액티브 패키지 그룹 정보에서 삭제할 수 있다.In addition, the package information management unit 140 reflects the program packages of the pod that has been suspended or deleted when the pod running in any one worker node among the plurality of worker nodes 20 is stopped or deleted. Active package group information can also be updated. For example, if there is a program package that does not overlap with program packages of other Pods still running in the worker node among program packages of a Pod that has been suspended or deleted, the package information management unit 140 provides information on the corresponding program package. Can be deleted from the active package group information of the worker node.

그 다음, 스케줄링 장치(100)는 워커 노드에 배치할 다른 신규 파드가 존재하는 경우, 상술한 단계들(S310 내지 S350)을 반복할 수 있다.Then, the scheduling apparatus 100 may repeat the above-described steps (S310 to S350) when there is another new pod to be disposed in the worker node.

도 5에는 워커 노드별로 배치된 파드들이 예시되어 있다.5 illustrates Pods arranged for each worker node.

도 5에 도시된 바와 같이, 워커 노드 1(20a)에 2개의 파드 A가 배치되어 실행되고 있고, 워커 노드 2(20b)에 1개의 파드 A와 1개의 파드 B가 배치되어 실행되고 있고, 워커 노드 N(20n)에 2개의 파드 B가 배치되어 실행되고 있는 상황에서, 스케줄링 장치(100)는 복수의 워커 노드(20a, 20b, 20n) 중 신규 파드인 파드 C를 배치할 워커 노드를 선정할 수 있다.As shown in Fig. 5, two pods A are arranged and executed in worker node 1 (20a), and one pod A and one pod B are arranged and executed in worker node 2 (20b). In a situation in which two Pod Bs are arranged and executed in node N (20n), the scheduling device 100 selects a worker node to deploy a new Pod C from among a plurality of worker nodes 20a, 20b, and 20n. I can.

아래의 표 1에는 도 5에 도시된 파드 A, B, C의 도커 이미지에 포함된 프로그램 패키지들이 표시되어 있다.Table 1 below shows program packages included in the Docker image of Pods A, B, and C shown in FIG. 5.

파드 A의 이미지Pod A's image 파드 B의 이미지Pod B's image 파드 C의 이미지Pod C's image 패키지1Package 1 패키지4Package 4 패키지3Package 3 패키지2Package 2 패키지5Package 5 패키지4Package 4 패키지3Package 3 패키지5Package 5

표 1에 표시된 바와 같이, 파드 A가 사용하는 도커 이미지에 패키지 1, 2, 3이 포함되어 있고, 파드 B가 사용하는 도커 이미지에 패키지 4, 5가 포함되어 있으며, 파드 C가 사용하는 도커 이미지에 패키지 3, 4, 5가 설치되어 있다면, 각 워커 노드의 액티브 패키지 그룹은 아래 표 2와 같이 표시될 수 있다.As shown in Table 1, the docker image used by Pod A includes packages 1, 2, and 3, the docker image used by Pod B includes packages 4 and 5, and the docker image used by Pod C. If packages 3, 4, and 5 are installed in, the active package group of each worker node can be displayed as shown in Table 2 below.

워커 노드 1Worker node 1 워커 노드 2Worker node 2 워커 노드 NWorker node N 패키지 1Package 1 패키지 1Package 1 패키지 4Package 4 패키지 2Package 2 패키지 2Package 2 패키지 5Package 5 패키지 3Package 3 패키지 3Package 3 패키지 4Package 4 패키지 5Package 5

즉, 워커 노드 1(20a)의 액티브 패키지 그룹은 패키지 1, 2, 3을 포함하게 되고,워커 노드 2(20b)의 액티브 패키지 그룹은 패키지 1, 2, 3, 4, 5를 포함하게 되고, 워커 노드 N(20n)의 액티브 패키지 그룹은 패키지 4, 5를 포함하게 된다.That is, the active package group of worker node 1 (20a) includes packages 1, 2, and 3, and the active package group of worker node 2 (20b) includes packages 1, 2, 3, 4, 5, The active package group of worker node N (20n) includes packages 4 and 5.

이 경우, 스케줄링 장치(100)는 상술한 바와 같이 신규 파드를 배치할 워커 노드를 패키지 중복도를 기준으로 선정하는 소위 PackageAffinity 규칙을 적용하여 파드 C가 배치될 워커 노드를 선정할 수 있다.In this case, as described above, the scheduling apparatus 100 may select a worker node in which Pod C is to be placed by applying a so-called PackageAffinity rule that selects a worker node to place a new Pod based on package redundancy as described above.

즉, 파드 C의 패키지들과 워커 노드 1(20a)의 액티브 패키지 그룹 간의 중복되는 패키지는 패키지 3이고, 파드 C의 패키지들과 워커 노드 2(20b)의 액티브 패키지 그룹 간의 중복되는 패키지는 패키지 3, 4, 5이고, 파드 C의 패키지들과 워커 노드 3(20c)의 액티브 패키지 그룹 간의 중복되는 패키지는 패키지 4, 5이다. 따라서, 스케줄링 장치(100)의 노드 선정부(120)는 파드 C와의 패키지 중복도가 가장 높은 워커 노드 2(20b)를, 파드 C가 배치될 워커 노드로 선정할 수 있다.That is, package 3 is the overlapping package between the packages of Pod C and the active package group of worker node 1 (20a), and Package 3 is the overlapping package between packages of Pod C and the active package group of worker node 2 (20b). , 4 and 5, and packages 4 and 5 are overlapping packages between the packages of Pod C and the active package group of the worker node 3 (20c). Accordingly, the node selector 120 of the scheduling apparatus 100 may select the worker node 2 (20b) having the highest package redundancy with Pod C as the worker node in which Pod C is to be placed.

그 다음, 스케줄링 장치(100)의 노드 정보 제공부(130)는 상기 워커 노드 2에 관한 정보를 마스터 노드(10)의 컨트롤러 매니저(16)에 제공하고, 컨트롤러 매니저(16)는 상기 워커 노드 2(20b)에 파드 C를 실제로 배치하여 실행되도록 한다.Then, the node information providing unit 130 of the scheduling device 100 provides information on the worker node 2 to the controller manager 16 of the master node 10, and the controller manager 16 provides the worker node 2 Place Pod C in (20b) to make it run.

일 실시예에 있어서, 스케줄링 장치(100)의 노드 선정부(120)는 복수의 워커 노드(20a, 20b, 20n) 각각에 대해, 해당 워커 노드의 레이블(label) 또는 해당 워커 노드에서 실행 중인 기존 파드의 레이블과 신규 파드 C의 레이블을 비교하여, 해당 워커 노드과 상기 신규 파드 간의 레이블 연관성(label affinity)을 판단하고, 워커 노드별로 판단된 레이블 연관성을 더 고려하여 신규 파드 C가 배치될 워커 노드를 선정하도록 구성될 수도 있다.In one embodiment, the node selection unit 120 of the scheduling device 100 is for each of a plurality of worker nodes (20a, 20b, 20n), the label of the worker node or the existing running on the worker node. By comparing the label of the Pod and the label of the new Pod C, the label affinity between the corresponding worker node and the new Pod is determined, and the worker node where the new Pod C is to be placed is further considered by further considering the label association determined for each worker node. It can also be configured to select.

도 6에는 본 발명의 일 실시예에 따른 스케줄링 방법에 사용되는 파드 명세서의 일례가 도시되어 있다.6 shows an example of a Pod specification used in a scheduling method according to an embodiment of the present invention.

도 6에 도시된 바와 같이, 신규 파드가 배치될 워커 노드를 선정하는 과정에서, 신규 파드와의 패키지 중복도에 따라 워커 노드를 선정하는 PackageAffinity 규칙과 함께, 신규 파드와의 레이블 연관성에 따라 워커 노드를 선정하는 NodeAffinity 규칙 또는 PodAffinity 규칙이 적용될 수도 있다. 즉, 도 6에 도시된 파드 명세서(S)는 PodAffinity 규칙(S1)과 PackageAffinity 규칙(S2)이 동시에 적용된 경우를 나타낸 것이다. PackageAffinity 규칙(S2)은 레이블 매칭 과정이 필요하지 않기 때문에, NodeAffinity 규칙 또는 PodAffinity 규칙에서 사용하는 lableSelector 하위 필드들이 생략된다.As shown in FIG. 6, in the process of selecting a worker node in which a new Pod is to be deployed, a worker node according to a label association with a new Pod along with a PackageAffinity rule for selecting a worker node according to a package redundancy with a new Pod NodeAffinity rule or PodAffinity rule for selecting a may be applied. That is, the Pod specification (S) shown in FIG. 6 shows a case where the PodAffinity rule (S1) and the PackageAffinity rule (S2) are applied at the same time. Since the packageAffinity rule S2 does not require a label matching process, lableSelector subfields used in the NodeAffinity rule or PodAffinity rule are omitted.

이 경우, 스케줄링 장치(100)는 PodAffinity 규칙(S1)에 따른 레이블 연관성에 제1 가중치인 10을 부여하고, PackageAffinity 규칙(S2)에 따른 패키지 중복도에 제2 가중치인 90을 부여하여 워커 노드별로 스코어를 산출하고, 산출된 스코어가 가장 높은 워커 노드를 상기 신규 파드가 배치될 워커 노드로 선정할 수 있다.In this case, the scheduling device 100 assigns a first weight of 10 to the label association according to the PodAffinity rule (S1), and a second weight of 90 to the package redundancy according to the PackageAffinity rule (S2) for each worker node. The score may be calculated, and a worker node having the highest calculated score may be selected as a worker node in which the new Pod is to be placed.

한편, 본 발명에 따른 실시예들은 컴퓨터 시스템과 이러한 컴퓨터 시스템을 구동하는 컴퓨터 프로그램으로 구현될 수 있다. 본 발명의 실시예들이 컴퓨터 프로그램으로 구현되는 경우, 본 발명의 구성요소들은 해당 컴퓨터 시스템을 통해 해당 동작이나 작업을 실행하는 프로그램 세그먼트들이다. 이러한 컴퓨터 프로그램 내지 프로그램 세그먼트들은 컴퓨터로 판독 가능한 다양한 기록매체에 저장될 수 있다. 컴퓨터로 판독 가능한 기록매체에는 컴퓨터 시스템이 읽어들일 수 있는 데이터를 기록하는 모든 종류의 매체가 포함된다. 예컨대, 컴퓨터로 판독 가능한 기록매체에는 ROM, RAM, EEPROM, 레지스터, 플래시 메모리, CD-ROM, 자기 테이프, 하드 디스크, 플로피디스크, 또는 광 데이터 기록장치 등이 포함될 수 있다. 또한, 이러한 기록매체는 다양한 네트워크로 연결된 컴퓨터 시스템들에 분산 배치되어 프로그램 코드들을 분산 방식으로 저장하거나 실행시킬 수 있다.Meanwhile, the embodiments according to the present invention may be implemented as a computer system and a computer program that drives the computer system. When the embodiments of the present invention are implemented as a computer program, the components of the present invention are program segments that execute a corresponding operation or task through a corresponding computer system. These computer programs or program segments may be stored in various computer-readable recording media. The computer-readable recording medium includes all types of media that record data that can be read by a computer system. For example, the computer-readable recording medium may include ROM, RAM, EEPROM, register, flash memory, CD-ROM, magnetic tape, hard disk, floppy disk, or optical data recording device. In addition, such a recording medium can be distributed and arranged in computer systems connected through various networks to store or execute program codes in a distributed manner.

본 발명에 따르면, 컨테이너 기반 가상화 시스템에서 운영되는 복수의 워커 노드 각각에 대해, 해당 워커 노드에서 실행 중인 전체 파드들의 패키지들을 모두 포함하는 액티브 패키지 그룹과 신규 파드의 패키지들을 비교하여 해당 워커 노드의 패키지 중복도를 산출하고, 워커 노드별로 산출된 패키지 중복도를 고려하여 상기 복수의 워커 노드 중 상기 신규 파드가 배치될 워커 노드를 선정함으로써, 각각의 워커 노드에서 컨테이너 실행시 메모리에 저장되는 데이터들 간의 중복성을 증가시켜 KSM(Kernel Same-page Merging)을 통한 메모리 사용량 절감 효과를 향상시키고, 워커 노드 당 실행 가능한 컨테이너 또는 컨테이너를 포함한 파드의 수를 증가시켜 가상화 시스템의 성능을 개선할 수 있다.According to the present invention, for each of a plurality of worker nodes operated in a container-based virtualization system, packages of a corresponding worker node are compared with an active package group including all packages of all Pods running in the corresponding worker node and packages of a new Pod. By calculating the degree of redundancy and selecting a worker node to which the new Pod will be placed among the plurality of worker nodes in consideration of the degree of package redundancy calculated for each worker node, the data stored in the memory when the container is executed in each worker node By increasing redundancy, memory usage reduction through KSM (Kernel Same-page Merging) can be improved, and performance of a virtualization system can be improved by increasing the number of executable containers or pods including containers per worker node.

또한, 워커 노드별로 신규 파드와의 패키지 중복도 및 레이블 연관성을 함께 고려하여 상기 신규 파드가 배치될 워커 노드를 선정함으로써, 메모리 절감 효과를 더욱 향상시킬 수 있으며, 메모리 부족으로 인한 워커 노드들 간의 스와핑 동작을 방지할 수 있다.In addition, it is possible to further improve the memory saving effect by selecting the worker node in which the new Pod will be placed by considering the package redundancy and label association with the new Pod for each worker node, and swapping between worker nodes due to memory shortage. It can prevent operation.

나아가, 본 발명에 따른 실시예들은, 당해 기술 분야는 물론 관련 기술 분야에서 본 명세서에 언급된 내용 이외의 다른 여러 기술적 과제들을 해결할 수 있음은 물론이다.Further, it goes without saying that the embodiments according to the present invention can solve various technical problems other than those mentioned in the present specification in the related technical field as well as in the relevant technical field.

지금까지 본 발명에 대해 구체적인 실시예들을 참고하여 설명하였다. 그러나 당업자라면 본 발명의 기술적 범위에서 다양한 변형 실시예들이 구현될 수 있음을 명확하게 이해할 수 있을 것이다. 그러므로 앞서 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 할 것이다. 즉, 본 발명의 진정한 기술적 사상의 범위는 청구범위에 나타나 있으며, 그와 균등범위 내에 있는 모든 차이점은 본 발명에 포함되는 것으로 해석되어야 할 것이다.The present invention has been described with reference to specific examples. However, those skilled in the art will clearly understand that various modified embodiments may be implemented within the technical scope of the present invention. Therefore, the embodiments disclosed above should be considered from an explanatory point of view rather than a limiting point of view. That is, the scope of the true technical idea of the present invention is shown in the claims, and all differences within the scope of equivalents thereto should be interpreted as being included in the present invention.

100 : 스케줄링 장치 110 : 패키지 확인부
120 : 노드 선정부 130 : 노드 정보 제공부
140 : 패키지 정보 관리부
100: scheduling device 110: package confirmation unit
120: node selection unit 130: node information providing unit
140: package information management unit

Claims (15)

복수의 워커 노드(worker node)를 이용하여 컴퓨터 자원 가상화 서비스를 제공하는 가상화 시스템의 컨테이너(container)를 스케줄링하는 스케줄링 장치로서,
적어도 하나의 컨테이너를 포함하는 신규 파드(pod)의 생성에 사용되는 계층적 포맷의 이미지들을 통해 상기 신규 파드의 프로그램 패키지들을 확인하는 패키지 확인부;
상기 복수의 워커 노드 각각에 대해, 해당 워커 노드에서 실행 중인 전체 파드들의 프로그램 패키지들을 모두 포함한 액티브 패키지 그룹과 상기 신규 파드의 프로그램 패키지들을 비교하여 해당 워커 노드와 상기 신규 파드 간의 패키지 중복도를 산출하고, 워커 노드별로 산출된 패키지 중복도를 고려하여 상기 복수의 워커 노드 중 상기 신규 파드가 배치될 워커 노드를 선정하는 노드 선정부; 및
상기 노드 선정부에 의해 선정된 워커 노드에 관한 정보를 상기 복수의 워커 노드를 관리하는 마스터 노드로 제공하여, 상기 마스터 노드로 하여금 상기 신규 파드를 상기 선정된 워커 노드에 배치하도록 하는 노드 정보 제공부를 포함하는 스케줄링 장치.
As a scheduling device for scheduling a container of a virtualization system that provides computer resource virtualization services using a plurality of worker nodes,
A package identification unit that checks program packages of the new pod through images of a hierarchical format used to create a new pod including at least one container;
For each of the plurality of worker nodes, the active package group including all program packages of all Pods running in the corresponding worker node and the program packages of the new Pod are compared to calculate a package redundancy between the corresponding worker node and the new Pod. And a node selection unit that selects a worker node in which the new Pod is to be placed among the plurality of worker nodes in consideration of a package redundancy calculated for each worker node; And
A node information providing unit that provides information on the worker node selected by the node selection unit to a master node that manages the plurality of worker nodes, and causes the master node to place the new pod in the selected worker node. Scheduling device comprising.
제1항에 있어서,
상기 노드 선정부는, 상기 복수의 워커 노드 각각에 대해, 해당 워커 노드의 레이블 또는 해당 워커 노드에서 실행 중인 기존 파드의 레이블과 상기 신규 파드의 레이블을 비교하여 해당 워커 노드와 상기 신규 파드 간의 레이블 연관성을 판단하고, 워커 노드별로 판단된 레이블 연관성을 더 고려하여 상기 신규 파드가 배치될 워커 노드를 선정하도록 구성된 것을 특징으로 하는 스케줄링 장치.
The method of claim 1,
For each of the plurality of worker nodes, the node selection unit compares a label of a corresponding worker node or a label of an existing Pod running in the worker node with a label of the new Pod to determine a label association between the worker node and the new Pod. And selecting a worker node in which the new Pod is to be placed by further considering the label correlation determined for each worker node.
제2항에 있어서,
상기 노드 선정부는, 상기 패키지 중복도와 상기 레이블 연관성에 각각 가중치를 부여하여 산출된 스코어를 기준으로 상기 신규 파드가 배치될 워커 노드를 선정하도록 구성된 것을 특징으로 하는 스케줄링 장치.
The method of claim 2,
And the node selection unit is configured to select a worker node to which the new Pod is to be placed based on a score calculated by assigning weights to the package redundancy and the label association, respectively.
제1항에 있어서,
상기 노드 정보 제공부는, 상기 마스터 노드에 위치하며 상기 복수의 워커 노드와 연동하여 각각의 워커 노드에 파드를 배치하는 컨트롤러 매니저(controller manager)로 상기 선정된 워커 노드에 관한 정보를 제공하도록 구성된 것을 특징으로 하는 스케줄링 장치.
The method of claim 1,
The node information providing unit is configured to provide information on the selected worker node to a controller manager located at the master node and interlocking with the plurality of worker nodes to place pods in each worker node. Scheduling device.
제1항에 있어서,
상기 스케줄링 장치는, 상기 복수의 워커 노드 각각의 액티브 패키지 그룹 정보를 저장하여 관리하며, 상기 액티브 패키지 그룹 정보를 상기 노드 선정부에 제공하는 패키지 정보 관리부를 더 포함하는 것을 특징으로 하는 스케줄링 장치.
The method of claim 1,
The scheduling apparatus further comprises a package information management unit that stores and manages active package group information of each of the plurality of worker nodes, and provides the active package group information to the node selection unit.
제5항에 있어서,
상기 패키지 정보 관리부는, 상기 신규 파드가 상기 선정된 워커 노드에 배치되면, 상기 신규 파드의 프로그램 패키지들을 반영하여 상기 선정된 워커 노드의 액티브 패키지 그룹 정보를 업데이트하도록 구성된 것을 특징으로 하는 스케줄링 장치.
The method of claim 5,
And the package information management unit is configured to update active package group information of the selected worker node by reflecting program packages of the new Pod when the new Pod is disposed in the selected worker node.
제5항에 있어서,
상기 패키지 정보 관리부는, 상기 복수의 워커 노드 중 어느 한 워커 노드에서 실행되던 파드가 실행 중단 또는 삭제되면, 실행 중단 또는 삭제된 파드의 프로그램 패키지들을 반영하여 상기 어느 한 워커 노드의 액티브 패키지 그룹 정보를 업데이트하도록 구성된 것을 특징으로 하는 스케줄링 장치.
The method of claim 5,
The package information management unit, when a Pod running in one of the plurality of worker nodes is stopped or deleted, the active package group information of the one worker node reflects the program packages of the pod that has been stopped or deleted. Scheduling device, characterized in that configured to update.
복수의 워커 노드(worker node)를 이용하여 컴퓨터 자원 가상화 서비스를 제공하는 가상화 시스템의 스케줄링 장치가 컨테이너(container)를 스케줄링하는 스케줄링 방법으로서,
상기 스케줄링 장치가 적어도 하나의 컨테이너를 포함하는 신규 파드(pod)의 생성에 사용되는 계층적 포맷의 이미지들을 통해 상기 신규 파드의 프로그램 패키지들을 확인하는 (a) 단계;
상기 스케줄링 장치가 상기 복수의 워커 노드 각각에 대해, 해당 워커 노드에서 실행 중인 전체 파드들의 프로그램 패키지들을 모두 포함하는 액티브 패키지 그룹과 상기 신규 파드의 프로그램 패키지들을 비교하여 해당 워커 노드와 상기 신규 파드 간의 패키지 중복도를 산출하는 (b) 단계;
상기 스케줄링 장치가 워커 노드별로 산출된 패키지 중복도를 고려하여 상기 복수의 워커 노드 중 상기 신규 파드가 배치될 워커 노드를 선정하는 (c) 단계; 및
상기 스케줄링 장치가 상기 (c) 단계에서 선정된 워커 노드에 관한 정보를 상기 복수의 워커 노드를 관리하는 마스터 노드로 제공하여, 상기 마스터 노드로 하여금 상기 신규 파드를 상기 선정된 워커 노드에 배치하도록 하는 (d) 단계를 포함하는 스케줄링 방법.
As a scheduling method in which a scheduling device of a virtualization system providing a computer resource virtualization service using a plurality of worker nodes schedules a container,
(A) checking, by the scheduling device, program packages of the new pod through images of a hierarchical format used to create a new pod including at least one container;
For each of the plurality of worker nodes, the scheduling device compares the active package group including all program packages of all Pods running in the worker node with the program packages of the new Pod, and the package between the worker node and the new Pod (B) calculating the degree of redundancy;
(C) selecting, by the scheduling device, a worker node in which the new Pod is to be placed among the plurality of worker nodes in consideration of a package redundancy calculated for each worker node; And
The scheduling device provides information on the worker node selected in step (c) to a master node that manages the plurality of worker nodes, causing the master node to place the new pod in the selected worker node. (d) a scheduling method comprising the step.
제8항에 있어서,
상기 방법은, 상기 (c) 단계 전에, 상기 스케줄링 장치가 상기 복수의 워커 노드 각각에 대해, 해당 워커 노드의 레이블 또는 해당 워커 노드에서 실행 중인 기존 파드의 레이블과 상기 신규 파드의 레이블을 비교하여 해당 워커 노드와 상기 신규 파드 간의 레이블 연관성을 판단하는 (b1) 단계를 더 포함하고,
상기 (c) 단계는, 워커 노드별로 판단된 레이블 연관성을 더 고려하여 상기 신규 파드가 배치될 워커 노드를 선정하는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
The method of claim 8,
In the method, before step (c), the scheduling device compares the label of the worker node or the label of the existing Pod running in the worker node with the label of the new Pod for each of the plurality of worker nodes. Further comprising (b1) determining a label association between the worker node and the new Pod,
The step (c) further comprises the step of selecting a worker node in which the new Pod is to be placed in consideration of a label correlation determined for each worker node.
제9항에 있어서,
상기 (c) 단계는, 상기 패키지 중복도와 상기 레이블 연관성에 각각 가중치를 부여하여 산출된 스코어를 기준으로 상기 신규 파드가 배치될 워커 노드를 선정하는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
The method of claim 9,
The step (c) includes selecting a worker node in which the new Pod is to be placed based on a score calculated by assigning weights to the package redundancy and the label association, respectively.
제8항에 있어서,
상기 (d) 단계는, 상기 마스터 노드에 위치하며 상기 복수의 워커 노드와 연동하여 각각의 워커 노드에 파드를 배치하는 컨트롤러 매니저(controller manager)로 상기 선정된 워커 노드에 관한 정보를 제공하는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
The method of claim 8,
The step (d) includes providing information on the selected worker node to a controller manager that is located in the master node and interlocks with the plurality of worker nodes to place pods in each worker node. Scheduling method comprising a.
제8항에 있어서,
상기 방법은, 상기 스케줄링 장치가 상기 복수의 워커 노드 각각의 액티브 패키지 그룹 정보를 저장하여 관리하는 (e) 단계를 더 포함하는 것을 특징으로 하는 스케줄링 방법.
The method of claim 8,
The method further comprises the step (e) of storing and managing active package group information of each of the plurality of worker nodes by the scheduling device.
제12항에 있어서,
상기 (e) 단계는, 상기 신규 파드가 상기 선정된 워커 노드에 배치되면, 상기 스케줄링 장치가 상기 신규 파드의 프로그램 패키지들을 반영하여 상기 선정된 워커 노드의 액티브 패키지 그룹 정보를 업데이트하는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
The method of claim 12,
In the step (e), when the new Pod is placed in the selected worker node, the scheduling device includes updating active package group information of the selected worker node by reflecting program packages of the new Pod. Scheduling method, characterized in that.
제12항에 있어서,
상기 (e) 단계는, 상기 복수의 워커 노드 중 어느 한 워커 노드에서 실행되던 파드가 실행 중단 또는 삭제되면, 상기 스케줄링 장치가 실행 중단 또는 삭제된 파드의 프로그램 패키지들을 반영하여 상기 어느 한 워커 노드의 액티브 패키지 그룹 정보를 업데이트하는 단계를 포함하는 것을 특징으로 하는 스케줄링 방법.
The method of claim 12,
In the step (e), when a Pod running in any one of the plurality of worker nodes is stopped or deleted, the scheduling device reflects the program packages of the Pod that has been stopped or deleted, And updating active package group information.
제8항 내지 제14항 중 어느 한 항에 따른 방법을 컴퓨터를 통해 실행하는 컴퓨터 프로그램으로서 컴퓨터로 판독 가능한 기록매체에 기록된 컴퓨터 프로그램.A computer program recorded on a computer-readable recording medium as a computer program for executing the method according to any one of claims 8 to 14 through a computer.
KR1020190149426A 2019-11-20 2019-11-20 Apparatus and method for scheduling containers of virtualization system KR20210061633A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190149426A KR20210061633A (en) 2019-11-20 2019-11-20 Apparatus and method for scheduling containers of virtualization system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190149426A KR20210061633A (en) 2019-11-20 2019-11-20 Apparatus and method for scheduling containers of virtualization system

Publications (1)

Publication Number Publication Date
KR20210061633A true KR20210061633A (en) 2021-05-28

Family

ID=76140340

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190149426A KR20210061633A (en) 2019-11-20 2019-11-20 Apparatus and method for scheduling containers of virtualization system

Country Status (1)

Country Link
KR (1) KR20210061633A (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760452A (en) * 2021-08-02 2021-12-07 阿里巴巴新加坡控股有限公司 Container scheduling method, system, equipment and storage medium
KR20230064733A (en) * 2021-11-04 2023-05-11 (주)아이티아이즈 Method and apparatus for providing common platform for virtual healthcare service

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113760452A (en) * 2021-08-02 2021-12-07 阿里巴巴新加坡控股有限公司 Container scheduling method, system, equipment and storage medium
CN113760452B (en) * 2021-08-02 2023-09-26 阿里巴巴新加坡控股有限公司 Container scheduling method, system, equipment and storage medium
KR20230064733A (en) * 2021-11-04 2023-05-11 (주)아이티아이즈 Method and apparatus for providing common platform for virtual healthcare service

Similar Documents

Publication Publication Date Title
US10268408B2 (en) Flexible efficient runtime placement of data across multiple disks
US7904540B2 (en) System and method for deploying virtual machines in a computing environment
RU2498394C2 (en) Synchronisation of life cycles of virtual machine and application
US9276987B1 (en) Identifying nodes already storing indicated input data to perform distributed execution of an indicated program in a node cluster
US6714949B1 (en) Dynamic file system configurations
JP6658882B2 (en) Control device, VNF placement destination selection method and program
US8789043B2 (en) Optimized placement planning for virtual machines in a network by breaking relocation graph into one or more cores to apply different solutions
JP5352890B2 (en) Computer system operation management method, computer system, and computer-readable medium storing program
US8448219B2 (en) Securely hosting workloads in virtual computing environments
US8260840B1 (en) Dynamic scaling of a cluster of computing nodes used for distributed execution of a program
US8321558B1 (en) Dynamically monitoring and modifying distributed execution of programs
US20160234300A1 (en) Dynamically modifying a cluster of computing nodes used for distributed execution of a program
US8572607B2 (en) System and method for performing designated service image processing functions in a service image warehouse
CN107247619B (en) Live migration of virtual machine method, apparatus, system, storage medium and equipment
US20130339956A1 (en) Computer system and optimal arrangement method of virtual machine in computer system
US20130179883A1 (en) Migration of virtual machines
US10310900B2 (en) Operating programs on a computer cluster
US20090013321A1 (en) Managing virtual computers
CN102938784A (en) Method and system used for data storage and used in distributed storage system
GB2513528A (en) Method and system for backup management of software environments in a distributed network environment
KR20210061633A (en) Apparatus and method for scheduling containers of virtualization system
US11340881B2 (en) Validation of desired software state image for hardware incompatibilities
CN115576903B (en) File system construction method, computing device and storage medium
US20190347272A1 (en) Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs
US20220179634A1 (en) Creating and upgrading of solutions for deployment in a virtualized computing environment

Legal Events

Date Code Title Description
A201 Request for examination