KR20260052572A - Method and computing apparatus for automatically accessing applications on nodes in a kubernetes cluster environment - Google Patents
Method and computing apparatus for automatically accessing applications on nodes in a kubernetes cluster environmentInfo
- Publication number
- KR20260052572A KR20260052572A KR1020240138745A KR20240138745A KR20260052572A KR 20260052572 A KR20260052572 A KR 20260052572A KR 1020240138745 A KR1020240138745 A KR 1020240138745A KR 20240138745 A KR20240138745 A KR 20240138745A KR 20260052572 A KR20260052572 A KR 20260052572A
- Authority
- KR
- South Korea
- Prior art keywords
- service
- ingress
- node
- kubernetes cluster
- nodes
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
Abstract
쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 방법이 개시된다. 이 방법은 상기 마스터 노드에 설치된 인그레스매퍼(IngressMapper)가, 사용자의 서비스 요청에 응답하여 상기 쿠버네티스 클러스터에서 상기 노드들 중에서 어느 하나의 노드에서 동작하는 타겟 애플리케이션을 탐색하는 단계; 상기 인그레스매퍼가, 상기 타겟 애플리케이션을 외부로 노출시키는 상기 노드포트 서비스가 존재하는 지를 확인하는 단계; 상기 노드포트 서비스가 존재하는 경우, 상기 인그레스매퍼가, 상기 타겟 애플리케이션에 접근할 수 있는 정규화된 접근 정보를 자동으로 생성하는 단계; 및 상기 인그레스매퍼가, 상기 정규화된 접근 정보를 기반으로 인그레스 리소스(Ingress resource)를 생성한 후, 상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 적용하는 단계를 포함한다.A method for automatically accessing an application on a node in a Kubernetes cluster is disclosed. The method comprises the steps of: an IngressMapper installed on the master node searching for a target application running on one of the nodes in the Kubernetes cluster in response to a user's service request; the IngressMapper checking whether there exists a NodePort service that exposes the target application to the outside; if the NodePort service exists, the IngressMapper automatically generating normalized access information that can access the target application; and the IngressMapper creating an Ingress resource based on the normalized access information and then applying the Ingress resource to the Kubernetes cluster.
Description
본 발명은 쿠버네티스 클러스터(Kubernetes cluster) 환경에서 서비스 접근 경로를 생성 및 관리하는 기술에 관한 것으로, 보다 상세하게는 클라우드와 엣지 컴퓨팅 환경이 결합된 하이브리드 쿠버네티스 클러스터의 각 노드에서 동작하는 애플리케이션에 대한 접근 경로에 대한 규칙을 자동으로 생성 및 관리하는 기술에 관한 것이다.The present invention relates to a technology for generating and managing service access paths in a Kubernetes cluster environment, and more specifically, to a technology for automatically generating and managing rules for access paths for applications running on each node of a hybrid Kubernetes cluster combining cloud and edge computing environments.
종래의 쿠버네티스는 외부에서 애플리케이션에 대한 요청이 발생할 경우, 로드밸런싱 기능을 통해 여러 인스턴스에 분산시킨다. 하지만 특정 노드의 가속기 자원을 추후 활용하기 위한 스케줄링 작업을 수행하거나, 클라우드-엣지 하이브리드 환경처럼 노드의 물리적 거리와 다른 요소들이 영향이 미치는 경우, 쿠버네티스에서 제공하는 일반적인 서비스 구성, 로드 밸런싱(load balancing)을 통한 트래픽 분산이 적절하지 않다. Conventional Kubernetes distributes requests for applications from the outside across multiple instances using load balancing. However, when performing scheduling tasks to utilize the accelerator resources of a specific node later, or when factors such as the physical distance between nodes and other elements have an impact, such as in a cloud-edge hybrid environment, the general service configuration and traffic distribution via load balancing provided by Kubernetes are not suitable.
이러한 환경에서 특정 노드의 애플리케이션에 직접 접근해야 하는 경우, 관리자는 각 노드의 애플리케이션에 대해 개별적인 접근 경로를 수동으로 설정하고 관리해야 하므로, 이는 사용자에게 불편을 주고 관리의 복잡성을 증가시킨다.In such an environment, if direct access to an application on a specific node is required, the administrator must manually set and manage individual access paths for each application on the node, which causes inconvenience to users and increases the complexity of management.
이에, 각 노드에 배포된 서비스에 접근(access)하기 위한 경로(예를 들어, Uniform Resource Locator: URL)를 관리자의 개입없이, 쿠버네티스에서 취득할 수 있는 정보를 조합하여 제공하고, 이를 통해 사용자가 보다 손쉽게 원하는 서비스에 접근할 수 있는 방안이 필요하다.Therefore, there is a need for a method to provide a path (e.g., Uniform Resource Locator: URL) for accessing services deployed on each node by combining information obtainable from Kubernetes without administrator intervention, thereby enabling users to access the desired services more easily.
상술한 문제점을 해결하기 위한 본 발명의 목적은 클라우드-엣지 하이브리드 쿠버네티스 클러스터에서 각 노드별 어플리케이션에 대한 접근 경로(access path)를 자동으로 생성 및 관리하기 위한 장치 및 방법을 제공하는 데 있다. 이러한 목적 달성을 통해 사용자는 특정 노드의 서비스에 쉽게 접근(access)할 수 있으며, 관리자는 서비스 접근 경로를 효율적으로 관리할 수 있다.The objective of the present invention, which aims to solve the aforementioned problems, is to provide an apparatus and method for automatically generating and managing access paths for applications on each node in a cloud-edge hybrid Kubernetes cluster. By achieving this objective, users can easily access services on specific nodes, and administrators can efficiently manage service access paths.
상술한 목적을 달성하기 위한 본 발명의 일면에 따른 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 방법은, 마스터 노드와 노드들을 포함하고, 상기 마스터 노드가 노드별로 설정된 노드포트 서비스(Nodeport Service)를 통해 상기 노드들과 연결되는 쿠버네티스 클러스터에서, 노드의 애플리케이션에 자동으로 접근하기 위한 방법으로서, 상기 마스터 노드에 설치된 인그레스매퍼(IngressMapper)가, 사용자의 서비스 요청에 응답하여 상기 쿠버네티스 클러스터에서 상기 노드들 중에서 어느 하나의 노드에서 동작하는 타겟 애플리케이션을 탐색하는 단계; 상기 인그레스매퍼가, 상기 타겟 애플리케이션을 외부로 노출시키는 상기 노드포트 서비스가 존재하는 지를 확인하는 단계; 상기 노드포트 서비스가 존재하는 경우, 상기 인그레스매퍼가, 상기 타겟 애플리케이션에 접근할 수 있는 정규화된 접근 정보를 자동으로 생성하는 단계; 및 상기 인그레스매퍼가, 상기 정규화된 접근 정보를 기반으로 인그레스 리소스(Ingress resource)를 생성한 후, 상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 적용하는 단계를 포함한다.A method for automatically accessing an application on a node in a Kubernetes cluster according to one aspect of the present invention for achieving the above-described purpose comprises: a step in which an IngressMapper installed on the master node searches for a target application running on one of the nodes in the Kubernetes cluster in response to a user's service request; a step in which the IngressMapper checks whether there is a NodePort Service that exposes the target application to the outside; a step in which, if there is a NodePort Service, the IngressMapper automatically generates normalized access information that can access the target application; and a step in which the IngressMapper creates an Ingress resource based on the normalized access information and then applies the Ingress resource to the Kubernetes cluster.
실시 예에서, 상기 방법은 상기 노드포트 서비스가 존재하지 않는 경우, 상기 인그레스매퍼가, 상기 타겟 애플리케이션을 외부로 노출시킬 수 있는 노드포트 서비스를 생성한 후, 상기 정규화된 접근 정보를 자동으로 생성하는 단계를 더 포함한다.In an embodiment, the method further includes the step of, if the nodeport service does not exist, the ingress mapper creating a nodeport service capable of exposing the target application to the outside, and then automatically generating the normalized access information.
실시 예에서, 상기 정규화된 접근 정보는 IP 주소(Internet Protocol Address), 노드 이름 및 서비스 이름을 포함한다.In an embodiment, the normalized access information includes an IP address (Internet Protocol Address), a node name, and a service name.
실시 예에서, 상기 URL의 형식은 http://IP/[Node name]/[Service name]이다.In the example, the format of the URL is http://IP/[Node name]/[Service name].
실시 예에서, 상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 적용하는 단계는, 상기 인그레스 리소스를 정의하는 YAML 파일을 생성하는 단계를 포함하고, 상기 YAML 파일은 IP 주소, 노드 이름, 서비스 이름, 서비스 포트 번호를 포함한다.In an embodiment, the step of applying the ingress resource to the Kubernetes cluster includes the step of creating a YAML file that defines the ingress resource, and the YAML file includes an IP address, a node name, a service name, and a service port number.
실시 예에서, 상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 적용하는 단계는, 상기 인그레스 리소스를 동작시키기 위해 인그레스(Ingress) 컨트롤러를 상기 쿠버네티스 클러스터(상기 쿠버네티스 클러스터에 포함된 노드(들))에 배포하는 단계를 포함한다.In an embodiment, the step of applying the ingress resource to the Kubernetes cluster includes the step of deploying an ingress controller to the Kubernetes cluster (node(s) included in the Kubernetes cluster) to operate the ingress resource.
본 발명의 다른 일면에 따른 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 컴퓨팅 장치는, 프로세서; 상기 프로세서에 의해 실행되는 인그레스매퍼(IngressMapper)를 저장하는 저장부; 상기 인그레스매퍼의 실행에 필요한 명령어들을 저장하는 메모리; 및 쿠버네티스 클러스터에 포함된 노드들과의 통신을 지원하는 통신 장치를 포함하고, 상기 인그레스매퍼는, 사용자의 서비스 요청에 따랏 상기 노드들 중에서 어느 하나의 노드에서 동작하는 타겟 애플리케이션을 탐색하고, 상기 타겟 애플리케이션을 외부로 노출시키는 노드포트 서비스(Nodeport Service)가 존재하는 지를 확인하고, 상기 노드포트 서비스가 존재하는 경우, 상기 타겟 애플리케이션에 접근할 수 있는 정규화된 접근 정보를 자동으로 생성하고, 상기 정규화된 접근 정보를 기반으로 인그레스 리소스(Ingress resource)를 생성한 후, 상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 적용한다.A computing device for automatically accessing an application on a node in a Kubernetes cluster according to another aspect of the present invention comprises: a processor; a storage unit for storing an IngressMapper executed by the processor; a memory for storing instructions required for the execution of the IngressMapper; and a communication device for supporting communication with nodes included in the Kubernetes cluster. The IngressMapper searches for a target application running on one of the nodes in response to a user's service request, checks whether there is a Nodeport Service that exposes the target application to the outside, and if the Nodeport Service exists, automatically generates normalized access information that can access the target application, creates an Ingress resource based on the normalized access information, and then applies the Ingress resource to the Kubernetes cluster.
본 발명에 따르면, 특정 이미지 기반의 쿠버네티스 워크로드(kubernetes workload: 쿠버네티스 상에서 작동되는 애플리케이션)에 대해 자동으로 접근 경로를 생성 및 관리함으로써, 사용자는 특정 노드의 어플리케이션에 쉽게 접근할 수 있고, 관리자는 자동화된 어플리케이션 접근 경로 생성 및 관리를 통해 관리의 복잡성을 줄일 수 있다.According to the present invention, by automatically generating and managing access paths for specific image-based Kubernetes workloads (kubernetes workload: applications running on Kubernetes), users can easily access applications on specific nodes, and administrators can reduce the complexity of management through the automated generation and management of application access paths.
도 1 및 2는 본 발명과 관련된 기존 기술인 애플리케이션 서비스 요청에 따른 부하 분산 시나리오의 문제점을 설명하기 위한 도면이다.
도 3은 본 발명의 실시 예에 따른 개별 애플리케이션 서비스 요청에 따른 시나리오를 설명하기 위한 도면이다.
도 4는 본 발명의 실시 예에 따른 인그레스매퍼(IngressMapper)의 동작 과정을 나타내는 흐름도이다.
도 5는 본 발명의 실시 예에 따른 인그레스매퍼(IngressMapper)가 설치된 마스터 노드의 구성도이다.Figures 1 and 2 are diagrams illustrating the problems of a load balancing scenario based on application service requests, which is an existing technology related to the present invention.
FIG. 3 is a diagram illustrating a scenario according to an individual application service request according to an embodiment of the present invention.
FIG. 4 is a flowchart showing the operation process of an IngressMapper according to an embodiment of the present invention.
FIG. 5 is a configuration diagram of a master node with an IngressMapper installed according to an embodiment of the present invention.
본 명세서에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terms used in this specification are used merely to describe specific embodiments and are not intended to limit the invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, terms such as “comprising” or “having” are intended to indicate the presence of the features, numbers, steps, actions, components, parts, or combinations thereof described in the specification, and should be understood as not precluding the existence or addition of one or more other features, numbers, steps, actions, components, parts, or combinations thereof.
먼저, 본 발명의 이해를 돕기 위해 본 명세서에서 사용될 수 있는 일부 용어에 간략히 설명하기로 한다.First, to aid in understanding the present invention, some terms that may be used in this specification will be briefly explained.
쿠버네티스(kubernetes)Kubernetes
쿠버네티스는 컨테이너화된(containerized) 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈소스 플랫폼(open source platform)으로, 애플리케이션을 파드(pod)라는 리소스로 관리하고, 클러스터 내의 여러 노드에 배치하는 형태로 애플리케이션을 동작시킨다. 또한 서비스 디스커버리(service discovery)와 로드 밸런싱(load balancing)을 통해 외부 트래픽을 적절하게 분산시키고, 스토리지 오케스트레이션(storage orchestration), 자동화된 롤아웃 및 롤백(automated rollouts and rollbacks), 자가 치유(self-healing) 등과 같은 다양한 기능을 제공한다. Kubernetes is an open source platform that automates the deployment, scaling, and management of containerized applications. It manages applications as resources called Pods and runs them by deploying them across multiple nodes within a cluster. Additionally, it appropriately distributes external traffic through service discovery and load balancing, and provides various features such as storage orchestration, automated rollouts and rollbacks, and self-healing.
쿠버네티스는 서비스 디스커버리(service discovery) 기능을 통해 컨테이너(container)를 DNS 이름(DNS name)이나 자체 IP 주소(their own IP address)를 사용하여 노출(expose)할 수 있다. 컨테이너에 대한 트래픽이 많을 경우, 쿠버네티스는 로드 밸런싱(load balancing) 기능을 통해 네트워크 트래픽(network traffic)을 분산시켜 배포(deployment)가 안정적으로 유지되도록 한다. Kubernetes can expose containers using DNS names or their own IP addresses through service discovery. When there is a lot of traffic to containers, Kubernetes distributes network traffic through load balancing to ensure that the deployment remains stable.
쿠버네티스는, 스토리지 오케스트레이션(storage orchestration) 기능을 통해, 로컬 스토리지(local storages), 퍼블릭 클라우드 제공자(public cloud providers) 등과 같은 스토리지 시스템(a storage system)을 자동으로 마운트(mount)할 수 있다.Kubernetes can automatically mount storage systems, such as local storage and public cloud providers, through storage orchestration capabilities.
쿠버네티스는, 자동화된 롤아웃 및 롤백(automated rollouts and rollbacks) 기능을 통해, 새로운 컨테이너(new container)를 자동으로 생성하고(create), 기존 컨테이너(existing container)를 제거하며 모든 리소스를 새 컨테이너에 적용할 수 있다.Kubernetes can automatically create new containers, remove existing containers, and apply all resources to new containers through automated rollouts and rollbacks.
쿠버네티스는, 자가 치유(self-healing) 기능을 통해, 실패한 컨테이너를 재시작하고(restarts containers that fail), 컨테이너를 교체하며(replaces containers), 사용자 정의 헬스 체크(user-defined health check)에 응답하지 않는 컨테이너를 종료(kill)하고, 준비가 완료될 때까지 클라이언트에게 해당 컨테이너를 광고하지 않는다(doesn't advertise them to clients until they are ready to serve.).Through self-healing capabilities, Kubernetes restarts containers that fail, replaces containers, kills containers that do not respond to user-defined health checks, and does not advertise them to clients until they are ready to serve.
이러한 기능들에 의해, 쿠버네티스는 클라우드 환경에서 자동화된 운영을 통해 관리자의 개입을 최소화하고, 클러스터에 참여한 인스턴스의 리소스를 최적화하여 효율적인 자원 관리를 지원하기 때문에 하이브리드 클러스터와 같은 특수한 케이스에서는 별도의 서비스 접근방법을 제공할 필요가 있다.Due to these features, Kubernetes minimizes administrator intervention through automated operations in cloud environments and supports efficient resource management by optimizing the resources of instances participating in the cluster; therefore, in special cases such as hybrid clusters, it is necessary to provide a separate service approach.
파드(pod)pod
파드(Pod)는 쿠버네티스에서 컨테이너가 실행되는 가장 작은 단위이다. 하나의 파드(Pod)는 하나 이상의 컨테이너를 포함할 수 있다. 파드는 애플리케이션의 실행 환경을 제공하는 객체이다. 파드(Pod)는 애플리케이션, 애플리케이션 컨테이너, IP 주소 및 볼륨과 같은 공유 스토리지를 포함한다.A Pod is the smallest unit in Kubernetes where containers run. A single Pod can contain one or more containers. A Pod is an object that provides the execution environment for an application. A Pod includes an application, an application container, an IP address, and shared storage such as volumes.
노드(Node)Node
노드는 쿠버네티스 클러스터에서 파드(pod)가 실행되는 실제 또는 가상 컴퓨팅 장치이다. 여기서 컴퓨팅 장치는 서버 또는 데스크 탑일 수 있다. 쿠버네티스 클러스터에는 여러 노드들이 있을 수 있으며, 각 노드는 CPU, 메모리, 네트워크 등을 제공하여 파드(Pod)를 실행한다. 노드는 쿠버네티스의 제어 플레인(Control Plane)에 의해 관리된다.A node is a physical or virtual computing device in a Kubernetes cluster where pods run. Here, the computing device can be a server or a desktop. A Kubernetes cluster can have multiple nodes, and each node runs pods by providing CPU, memory, network, etc. Nodes are managed by the Kubernetes Control Plane.
쿠버네티스 서비스(kubernetes service)Kubernetes service
쿠버네티스 서비스는 클러스터 내에서 실행 중인 파드들(pods)을 네트워크 서비스로 노출시키는 기능을 제공한다. 이는 클러스터 내부 또는 외부의 사용자가 파드(pod)에 접근할 수 있도록 도와주는 역할을 한다. 쿠버네티스 서비스는 기본적으로 클러스터 IP, NodePort, 로드밸런서(LoadBalancer) 및 ExternalName과 같은 다양한 유형의 서비스를 제공하여 다양한 네트워크 시나리오에 대응한다.Kubernetes Services provides the ability to expose pods running within a cluster as network services. This enables users inside or outside the cluster to access the pods. By default, Kubernetes Services provides various types of services, such as cluster IPs, NodePorts, LoadBalancers, and ExternalNames, to address diverse network scenarios.
특히, NodePort 서비스는 외부에서 클러스터 내 특정 파드에 접근할 수 있도록 각 노드에서 고정된 포트를 할당하여 사용자가 이 포트를 통해 파드에 접근할 수 있게 한다. 하지만, 이 방식은 관리자가 수동으로 각 서비스에 대해 NodePort를 설정하고 관리해야 하며, 사용자가 직접 NodePort 정보를 파악해야 하는 불편함이 따른다.In particular, the NodePort service assigns a fixed port to each node to allow external access to specific pods within the cluster, enabling users to access those pods through this port. However, this approach entails the inconvenience of requiring administrators to manually configure and manage NodePorts for each service, as well as users having to identify NodePort information themselves.
인그레스(Ingress)Ingress
인그레스(Ingress)는 쿠버네티스 클러스터의 외부에서 내부의 서비스에 접근할 수 있도록 설정된 HTTP 및 HTTPS 라우팅 규칙을 정의하는 리소스이다. 인그레스(Ingress)는 클러스터 내부의 서비스에 대한 접근을 제어하는 역할을 하며, 주로 웹 애플리케이션의 접근 경로를 설정하는 데 사용된다. An Ingress is a resource that defines HTTP and HTTPS routing rules configured to allow access to internal services from outside a Kubernetes cluster. Ingress controls access to services within the cluster and is primarily used to configure access paths for web applications.
도 1 및 2는 본 발명과 관련된 기존 기술인 애플리케이션 서비스 요청에 따른 부하 분산 시나리오의 문제점을 설명하기 위한 도면이다. Figures 1 and 2 are diagrams illustrating the problems of a load balancing scenario based on application service requests, which is an existing technology related to the present invention.
도 1을 참조하면, 전술한 바와 같이, 쿠버네티스 클러스터(10)는 외부에서 애플리케이션으로 들어오는 요청을 로드밸런싱을 통해 여러 인스턴스에 분산시켜 트래픽을 관리한다.Referring to FIG. 1, as described above, the Kubernetes cluster (10) manages traffic by distributing requests coming into the application from the outside to multiple instances through load balancing.
마스터 노드(11)는 쿠버네티스 클러스터(10)를 관리하는 실제 또는 가상 컴퓨팅 장치일 수 있다. 마스터 노드(11)는 서비스 접근을 제어하는 컨트롤 플레인(Control Plane)과 함께 사용된다. The master node (11) may be a physical or virtual computing device that manages the Kubernetes cluster (10). The master node (11) is used in conjunction with a control plane that controls access to services.
노드포트 서비스(Nodeport Service)는 특정 파드(pod)에의 접근을 제어하는 쿠버네티스 리소스(Kubernetes Resource)이다. 노드포트 서비스(Nodeport Service)는 하위의 노드포트(Nodeport) 설정을 통하여 특정 파드(Pod)의 서비스에 대한 외부 접근을 허용한다. 이는 포트 포워딩(port forwarding)의 개념과 유사하다. A Nodeport Service is a Kubernetes resource that controls access to specific pods. A Nodeport Service allows external access to services within a specific pod through underlying Nodeport configurations. This is similar to the concept of port forwarding.
노드 A(13), 노드 B(14) 및 노드 C(15)는 쿠버네티스 클러스터(10)를 구성하는 실제 또는 가상 컴퓨팅 장치들이다. Node A (13), Node B (14) and Node C (15) are actual or virtual computing devices that make up the Kubernetes cluster (10).
AI(Artificial Intelligence) 서비스들(AI Service, 3 및 4)과 데이터 서비스(data Service, 5)는 쿠버네티스 클러스터(10)에서 각 노드에 배포된 파드(Pod) 또는 애플리케이션을 의미한다. AI 서비스는 AI관련 기능이나 애플리케이션을 제공하는 서비스이다. 데이터 서비스는 데이터베이스를 제공하는 서비스이다.AI (Artificial Intelligence) services (AI Service, 3 and 4) and data service (data Service, 5) refer to Pods or applications deployed on each node in a Kubernetes cluster (10). An AI service is a service that provides AI-related functions or applications. A data service is a service that provides a database.
사용자가 쿠버네티스 클러스터(10)에서 마스터 노드(11)에 접근하여 특정 파드(pod) 또는 애플리케이션에 접근을 요청할 경우 아래와 같이 동작한다.When a user accesses the master node (11) in the Kubernetes cluster (10) and requests access to a specific pod or application, it operates as follows.
먼저, 사용자(사용자의 컴퓨팅 장치)가, 예를 들면, REST API 호출을 통해 쿠버네티스 클러스터(10)의 마스터 노드(11)에게 AI 서비스 애플리케이션에 대한 접근을 요청한다. First, a user (user's computing device) requests access to an AI service application from a master node (11) of a Kubernetes cluster (10) via, for example, a REST API call.
이어, 노드포트 서비스(12)는 AI 서비스 애플리케이션에 대한 접근 요청을 수신한 후 각 노드의 리소스와 기존 동작 내용을 확인한 후, 그 접근 요청을 AI 서비스 애플리케이션을 제공할 수 있는 노드들(13 및 14)로 전달한다. 이 때 노드포트 서비스(12)는 노드 A(13)와 노드 B(14)에 라운드 로빈(round robin) 방식으로 부하를 분산 처리한다. Next, the nodeport service (12) receives an access request for an AI service application, checks the resources and existing operations of each node, and then forwards the access request to nodes (13 and 14) capable of providing the AI service application. At this time, the nodeport service (12) distributes the load to node A (13) and node B (14) in a round-robin manner.
이어, 노드 A(13) 또는 노드 B(14)는 AI 서비스를 사용자에게 제공한다.Next, Node A (13) or Node B (14) provides AI services to the user.
이러한 방식은 클라우드 기반 환경에서는 매우 효과적일 수 있지만, 클라우드-엣지 하이브리드 환경에서는 여러 가지 문제점이 있다. 예를 들어, 특정 노드의 가속기 자원(accelerator resources)을 사용해야 하거나, 해당 노드와의 물리적 거리로 인해 실시간 처리 요구사항이 있는 경우, 로드 밸런싱을 통한 트래픽 분산보다는 특정 노드에서 동작하는 서비스에 대한 직접적인 접근이 필요하다. 예를 들어, 도 2에 도시된 바와 같이, 실시간 처리를 필요로하는 서비스를 사용할 경우, 로드밸런싱(Load Balancing, LB)(16)을 통해 물리적으로 거리가 먼 노드 C(15)로부터 서비스를 사용하는 케이스가 있을 수 있다.While this method can be very effective in a cloud-based environment, it has several problems in a cloud-edge hybrid environment. For example, if there is a need to use accelerator resources of a specific node or if there are real-time processing requirements due to the physical distance from that node, direct access to the service running on that specific node is required rather than traffic distribution through load balancing. For example, as shown in FIG. 2, when using a service that requires real-time processing, there may be a case where the service is used from Node C (15), which is physically far away, through Load Balancing (LB) (16).
도 2에서 마스터 노드(11)는 쿠버네티스 클러스터(10)에서 나머지 노드들(13, 14 및 15)과 네트워크로 연결되어 있으며, 나머지 노드들(13, 14 및 15)은 로컬 환경에서 실제로 존재하는 디바이스이다. In FIG. 2, the master node (11) is networked with the remaining nodes (13, 14 and 15) in the Kubernetes cluster (10), and the remaining nodes (13, 14 and 15) are devices that actually exist in the local environment.
사용자가 실시간 처리가 필요한 서비스를 사용할 경우 네트워크 지연을 최소화하기 위해서 물리적인 거리가 가까운 Node B(14)에서 제공하는 해당 서비스를 사용하여야 하는데, 로드밸런싱(16)을 통해 Node C(15)로부터 서비스를 제공받는 경우가 있을 수 있다. 이 경우는 Node B(14)로부터 서비스를 제공받는 경우보다 비효율적이다When a user uses a service that requires real-time processing, they must use the service provided by Node B (14), which is physically closer, to minimize network latency. However, there may be cases where the service is provided by Node C (15) through load balancing (16). This case is less efficient than receiving the service from Node B (14).
쿠버네티스 클라우드 환경에서 도 2와 같은 상황에서 발생하는 문제를 해결하기 위해서 각 애플리케이션에 대한 직접적인 접근이 필요하고, 이를 위해서는 아래의 3가지 절차가 필요하다. To resolve the problem that occurs in a situation like Figure 2 in a Kubernetes cloud environment, direct access to each application is required, and for this, the following three procedures are necessary.
1. 관리자는 각 노드의 애플리케이션에 매핑되는 노드포트(NodePort) 서비스를 서로 다른 포트로 개별 설정하여 생성1. The administrator creates NodePort services mapped to applications on each node by individually configuring them to different ports.
2. 사용자는 접근을 원하는 노드의 포트(port) 정보를 관리자(마스터 노드)에게 요청2. The user requests the port information of the node they wish to access from the administrator (master node).
3. 사용자는 상기 포트 정보를 통해 특정 노드에서 동작(또는 실행) 중인 애플리케이션에 접근3. The user accesses an application running (or executing) on a specific node through the above port information
도 3은 본 발명의 실시 예에 따른 개별 애플리케이션 서비스 요청에 따른 시나리오를 설명하기 위한 도면이다. FIG. 3 is a diagram illustrating a scenario according to an individual application service request according to an embodiment of the present invention.
도 3을 참조하면, 본 발명의 실시 에에 따른 쿠버네티스 클러스터(100)는, 예를 들면, 마스터 노드(101)와 3개의 노드들(105, 106 및 107)을 포함하도록 구성될 수 있으며, 이를 한정하지 않고, 쿠버네티스 클러스터(100)는 4개 이상의 노드들을 포함하도록 구성될 수 있다.Referring to FIG. 3, a Kubernetes cluster (100) according to an embodiment of the present invention may be configured to include, for example, a master node (101) and three nodes (105, 106 and 107), but without limitation, the Kubernetes cluster (100) may be configured to include four or more nodes.
마스터 노드(101)와 3개의 노드들(105, 106 및 107) 사이에는 마스터 노드(101)에 의해 생성(설정)된 서로 다른 3개의 노드포트(Nodeport) 서비스들(102, 103 및 104)이 제공된다. 3개의 노드포트(Nodeport) 서비스들(102, 103 및 104)은 3개의 노드들(105, 106 및 107)에서 동작(제공)하는 애플리케이션들(105', 106' 및 107')에 일대일로 연결된다. 여기서, 애플리케이션들(105', 106' 및 107')은 AI Service를 제공하는 애플리케이션일 수 있다.Between the master node (101) and the three nodes (105, 106, and 107), three different Nodeport services (102, 103, and 104) created (configured) by the master node (101) are provided. The three Nodeport services (102, 103, and 104) are connected one-to-one to applications (105', 106', and 107') running (providing) on the three nodes (105, 106, and 107). Here, the applications (105', 106', and 107') may be applications that provide AI services.
본 실시 에에 따른 쿠버네티스 클러스터(100)에서는 서로 다른 3개의 노드포트 서비스들(102, 103 및 104)이 3개의 노드들(105, 106 및 107)에서 동작(제공)하는 애플리케이션들(105', 106' 및 107')에 일대일로 연결됨으로써, 도 1 및 2의 로드 밸런싱에 의해 사용자 장치(300)가 원하는 노드가 아닌 다른 노드로 접근하는 문제를 방지할 수 있다.In the Kubernetes cluster (100) according to the present embodiment, three different nodeport services (102, 103, and 104) are connected one-to-one to applications (105', 106', and 107') running (provided) on three nodes (105, 106, and 107), thereby preventing the problem of a user device (300) accessing a node other than the desired node through the load balancing of FIGS. 1 and 2.
사용자 장치(300)는 특정 노드에 대한 접근을 마스터 노드(101)에게 명시적으로 요청할 수 있다. 다만, 이 경우 해당 노드들에 대한 접근 정보(예를 들면, 포트 정보)를 관리자 장치(200)가 개별적으로 설정해야 하고, 사용자 장치도 해당 노드들에 대한 접근 정보(예를 들면, 포트 정보)를 사전에 알고 있어야 하는 문제가 있다. A user device (300) may explicitly request access to a specific node from the master node (101). However, in this case, there is a problem that the administrator device (200) must individually set access information (e.g., port information) for the nodes, and the user device must also know the access information (e.g., port information) for the nodes in advance.
예를 들면, 도 3에 도시된 바와 같이, 노드 A(105)의 애플리케이션(105')에 접근하기 위해, 사용자 장치(300)는 관리자 장치(200)에게 노드 A(105)의 애플리케이션(105')에 접근하기 위한 노드포트(Nodeport) 정보(예, port 30010)를 요청하고, 그 요청에 대한 응답에 따른 해당 포트 정보(예, port 30010)를 통해 애플리케이션(105')에 접근할 수 있다.For example, as illustrated in FIG. 3, to access an application (105') of node A (105), a user device (300) requests node port information (e.g., port 30010) for accessing the application (105') of node A (105) from a manager device (200), and can access the application (105') through the corresponding port information (e.g., port 30010) in response to the request.
이러한 접근 시나리오는 관리자 장치(200)가 수동으로 애플리케이션들 각각에 대한 노드포트 서비스(Nodeport Service)를 생성 및 관리해야 하고 이를 사용자 장치(300)에게 제공해야 하므로, 관리의 복잡성이 증가하고 오류 발생 가능성도 높아진다. 또한, 사용자 장치(300)도 직접 노드포트(NodePort) 정보를 알아내야 하므로 이용의 어려움이 따른다. 이러한 문제는 단일 클러스터 내에서도 발생할 수 있으며, 특히 여러 클러스터를 관리해야 하는 대규모 환경에서는 더 큰 어려움을 초래한다.In this access scenario, the administrator device (200) must manually create and manage a Nodeport Service for each application and provide it to the user device (300), which increases the complexity of management and the likelihood of errors. Additionally, the user device (300) must also directly find out the Nodeport information, which makes it difficult to use. These problems can occur even within a single cluster, and cause greater difficulties, especially in large-scale environments where multiple clusters must be managed.
본 명세서에서는 쿠버네티스 클러스터에서 하이브리드 환경의 문제점을 해결하기 위해, 인그레스매퍼(IngressMapper)라는 시스템을 제안한다. This specification proposes a system called IngressMapper to solve the problems of a hybrid environment in a Kubernetes cluster.
인그레스매퍼(IngressMapper)는 특정한 컨테이너 이미지를 사용하는 쿠번네티스 워크로드(Kubernetes workload)에 대해 자동으로 접근 경로를 생성 및 관리하는 시스템으로, 도 3의 마스터 노드(101)에 설치되는 소프트웨어일 수 있다. 또한 인그레스매퍼(IngressMapper)는 인그레스 리소스에 대한 상태, 라우팅 정보 등을 시각화하거나 관리하는 도구일 수 있다.IngressMapper is a system that automatically generates and manages access paths for Kubernetes workloads using specific container images, and may be software installed on the master node (101) of FIG. 3. IngressMapper may also be a tool that visualizes or manages the status, routing information, etc. of ingress resources.
인그레스매퍼(IngressMapper)는 관리자의 수동 개입을 최소화하고, 클러스터 내의 서비스 접근을 간소화시키는 방식으로 도 3과 같은 시나리오 구성을 생성하고 이를 URL(Uniform Resource Locator)을 통해 접근할 수 있도록 한다. IngressMapper creates a scenario configuration like Figure 3 in a way that minimizes manual intervention by administrators and simplifies access to services within the cluster, and enables access via a URL (Uniform Resource Locator).
본 실시 예에 따른 인그레스매퍼(IngressMapper) 기술의 특징은 다음과 같다.The features of the IngressMapper technology according to the present embodiment are as follows.
첫째, 파드(애플리케이션)(Pod)에서 제공하는 서비스에 접근(access)할 수 있는 인그레스 리소스(Ingress Resource)를 자동으로 생성한다. First, it automatically creates an Ingress Resource that can access the services provided by the Pod (Application).
둘째, 기존에는 사용자 및 관리자가 별도로 인그레스 리소스(Ingress Resource)를 생성하고, 이에 대응하는 규칙을 인그레스 리소스(Ingress Resource)에 반영한 반면, 본 실시 예에서는 인그레스매퍼(IngressMapper)가 해당 인그레스 리소스(Ingress Resource)에 접근할 수 있는 URL을 특정 규칙에 자동으로 생성하여 인그레스 리소스(Ingress Resource)에 반영한다.Second, whereas previously users and administrators separately created Ingress Resources and applied corresponding rules to the Ingress Resources, in this embodiment, the IngressMapper automatically generates a URL that allows access to the Ingress Resources for specific rules and applies it to the Ingress Resources.
본 실시 예에 따른 인그레스매퍼(IngressMapper)의 동작은 다음과 같은 주요 단계를 포함한다.The operation of the IngressMapper according to the present embodiment includes the following key steps.
A. 파드(Pod) 정보 확인 단계A. Pod Information Verification Step
인그레스매퍼(IngressMapper)는 먼저 쿠버네티스 클러스터에 배포된 파드(애플리케이션)의 정보를 수집한다. 이때 파드 동작의 기반이 되는 컨테이너 이미지를 기반으로 목표한 파드의 리스트를 확보한다. 파드(애플리케이션)의 정보는, 예를 들면, 파드(애플리케이션)가 설치된 노드 정보와 파드(애플리케이션) 자체 정보를 의미한다.The IngressMapper first collects information about Pods (applications) deployed in the Kubernetes cluster. At this stage, it obtains a list of target Pods based on the container images that serve as the foundation for Pod operations. This information about the Pods refers, for example, to the node where the Pod is installed and the information about the Pod itself.
B. 서비스(Service) 생성 및 확인 단계B. Service Creation and Verification Steps
파드 정보가 확인되면, 인그레스매퍼(IngressMapper)는 각 파드에 대응하는 서비스가 존재하는지 확인하고, 필요 시 노드포트(NodePort) 서비스를 자동으로 생성한다. 여기서, 노드포트(NodePort) 서비스의 자동 생성은 인그레스매퍼(IngressMapper)가 생성한 인그레스 리소스(Ingress Resource)에 접근할 수 있는 URL을 포함하는 설정 파일(예, YAML 파일)을 자동으로 생성함을 의미하거나 노드포트(Nodeport) 정보를 포함하는 인그레스 리소스(Ingress Resource)의 인스턴스(instance)를 자동으로 생성함을 의미한다. 이러한 노드포트 서비스는 파드(pod)에 대한 네트워크 접근을 가능하게 하며, 노드별로 서로 다른 포트를 할당한다. 예를 들어, 노드 A에서 동작중인 파드 A(애플리케이션 A)에 대해 노드포트(NodePort) A 서비스가 생성(설정)되고, 동일하게 노드 B의 파드 B(애플리케이션 B)에 대해 노드포트(NodePort) B 서비스가 생성(설정)된다.Once Pod information is verified, the IngressMapper checks whether a service corresponding to each Pod exists and automatically creates a NodePort service if necessary. Here, the automatic creation of a NodePort service means either automatically generating a configuration file (e.g., a YAML file) containing a URL that allows access to an Ingress Resource created by the IngressMapper, or automatically creating an instance of an Ingress Resource containing NodePort information. These NodePort services enable network access to the Pods and assign different ports per node. For example, a NodePort A service is created (configured) for Pod A (Application A) running on Node A, and similarly, a NodePort B service is created (configured) for Pod B (Application B) on Node B.
C. 인그레스매퍼(IngressMapper)의 YAML 파일 갱신 및 인그레스(Ingress) 생성 단계C. IngressMapper YAML File Update and Ingress Creation Steps
다음으로 인그레스매퍼(IngressMapper)는 각 노드의 서비스 정보를 바탕으로 인그레스(Ingress) 리소스를 정의하는 YAML 파일을 생성하고 갱신한다. 여기서, 각 노드의 서비스 정보는 포트 번호와 서비스 이름(애플리케이션의 이름)을 포함하는 노드포트 정보를 의미한다. 이 YAML 파일은 IP 주소(Internet Protocol Address), 노드 이름, 파드(pod) 이름 또는 서비스 이름, 서비스 포트 번호 등의 정보를 포함한다. 이미 알려진 정보를 기반으로 사용자가 쉽게 접근할 수 있는 정규화된 URL을 다음의 예제와 같이 생성한다. 여기서, 이미 알려진 정보는, 예를 들면, Kubernetes API를 통하여 획득할 수 있는 정보를 의미하며, 예를 들어 노드명, Pod명, Service명, Nodeport 번호 등을 포함한다.Next, the IngressMapper generates and updates a YAML file defining Ingress resources based on the service information of each node. Here, the service information of each node refers to NodePort information, which includes the port number and the service name (application name). This YAML file includes information such as the IP address (Internet Protocol Address), node name, pod or service name, and service port number. Based on this known information, it generates a fully qualified URL that users can easily access, as shown in the following example. Here, the known information refers to information obtainable, for example, through the Kubernetes API, and includes, for instance, the node name, pod name, service name, and NodePort number.
URL 예제: http://IP/[Node name]/[Service name]URL example: http://IP/[Node name]/[Service name]
예를 들어, 노드 A의 파드(Pod) A에 접근하기 위한 URL은 http://IP/NodeA/ServiceA이고, 노드 B의 Pod B는 http://IP/NodeB/ServiceB이다.For example, the URL to access Pod A on Node A is http://IP/NodeA/ServiceA, and Pod B on Node B is http://IP/NodeB/ServiceB.
아래 표1은 IngressMapper에 의해 생성된 Ingress 리소스의 YAML 파일 예제이다.Table 1 below is an example of a YAML file for an Ingress resource generated by IngressMapper.
kind: Ingress
metadata:
name: ingress-mapper
spec:
rules:
- host: example.com
http:
paths:
- path: /NodeA/ServiceA
pathType: Prefix
backend:
service:
name: ServiceA
port:
number: 30010
- path: /NodeB/ServiceB
pathType: Prefix
backend:
service:
name: ServiceB
port:
number: 30020apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-mapper
spec:
rules:
- host: example.com
http:
paths:
- path: /NodeA/ServiceA
pathType: Prefix
backend:
service:
name: ServiceA
port:
number: 30010
- path: /NodeB/ServiceB
pathType: Prefix
backend:
service:
name: ServiceB
port:
number: 30020
D. Ingress 컨트롤러 배포 및 확인 단계D. Ingress Controller Deployment and Verification Steps
인그레스매퍼(IngressMapper)는 인그레스(Ingress) 리소스를 정상적으로 동작시키기 위해 인그레스(Ingress) 컨트롤러를 쿠버네티스(Kubernetes) 클러스터(쿠버네티스 클러스터에 포함된 노드(들))에 배포하고, 그 동작 상태를 지속적으로 모니터링한다. 인그레스(Ingress) 컨트롤러는 쿠버네티스(Kubernetes) 클러스터 내에서 외부 트래픽을 내부 서비스로 라우팅하는 역할을 하는 컴포넌트이다. 이 컨트롤러는 사용자가 정의된 URL을 통해 각 노드의 서비스에 쉽게 접근할 수 있도록 해준다.The IngressMapper deploys Ingress controllers to the Kubernetes cluster (node(s) included in the Kubernetes cluster) to ensure Ingress resources operate properly, and continuously monitors their operational status. An Ingress controller is a component within a Kubernetes cluster that routes external traffic to internal services. This controller enables users to easily access services on each node via defined URLs.
도 4는 본 발명의 실시 예에 따른 인그레스매퍼(IngressMapper)의 동작 과정을 나타내는 흐름도이다.FIG. 4 is a flowchart showing the operation process of an IngressMapper according to an embodiment of the present invention.
도 4를 참조하면, 먼저, 단계 S110에서, 마스터 노드(101)에 설치된 인그레스매퍼(IngressMapper)가 사용자(사용자 장치(300))로부터 수신한 타겟 애플리케이션에 대한 서비스 요청에 응답하여 쿠버네티스 클러스터에서 상기 타겟 애플리케이션을 탐색한다. 여기서, 상기 타겟 애플리케이션의 탐색 방법은 컨테이너(container) 이름을 통해 확인할 수 있다. 컨테이너(container) 이름은 쿠버네티스 API를 통해 확인할 수 있다.Referring to FIG. 4, first, in step S110, an IngressMapper installed on the master node (101) discovers the target application in the Kubernetes cluster in response to a service request for the target application received from a user (user device (300)). Here, the method of discovering the target application can be identified through the container name. The container name can be identified through the Kubernetes API.
이어, 단계 S120에서, 인그레스매퍼(IngressMapper)가 쿠버네티스 클러스터에서 상기 타겟 애플리케이션을 외부로 노출시키는 노드포트 서비스(Nodeport service)가 존재하는 지를 확인한다. 즉, 인그레스매퍼(IngressMapper)가 상기 타겟 애플리케이션에 접근할 수 있는 노드포트 서비스(Nodeport service)가 존재하는 지를 확인한다. Next, in step S120, the IngressMapper checks whether there is a Nodeport service that exposes the target application to the outside in the Kubernetes cluster. That is, the IngressMapper checks whether there is a Nodeport service that can access the target application.
이어, 단계 S120에서, 노드포트 서비스(Nodeport service)가 존재하면, 인그레스매퍼(IngressMapper)가 해당 정보를 기반으로 상기 타겟 애플레이션에 접근(access)할 수 있는 정규화된 접근 정보(normalized access information, 예, URL)를 생성한다. 여기서, 접근 정보의 예로 URL은 IP 주소(Internet Protocol Address), 노드 이름, 파드(pod) 이름, 서비스 이름, 서비스 포트 번호 등을 포함한다. 만일, 노드포트 서비스(Nodeport service)가 존재하지 않으면, 단계 S130에서, 인그레스매퍼(IngressMapper)가 상기 타겟 애플레이션을 외부로 노출시킬 수 있는 노드포트(Nodeport) 서비스를 생성(설정)한 후, 상기 정규화된 접근 정보(예, URL)를 생성한다.Next, in step S120, if a Nodeport service exists, the IngressMapper generates normalized access information (e.g., a URL) that allows access to the target application based on the information. Here, examples of access information such as the URL include an IP address (Internet Protocol Address), node name, pod name, service name, service port number, etc. If a Nodeport service does not exist, in step S130, the IngressMapper creates (configures) a Nodeport service that allows the target application to be exposed externally, and then generates the normalized access information (e.g., a URL).
이어, 단계 S140에서, 인그레스매퍼(IngressMapper)가 단계 S120에서 생성한 정규화된 접근 정보(예, URL)를 기반으로 인그레스(Ingress) 리소스를 생성하고, 이를 쿠버네티스 클러스터에 적용한다.Next, in step S140, the IngressMapper creates an Ingress resource based on the normalized access information (e.g., URL) generated in step S120 and applies it to the Kubernetes cluster.
이상 설명한 인그레스매퍼(IngressMapper)의 주요 기능에 대해 정리하면 아래와 같다.The main features of the IngressMapper described above are summarized as follows.
자동화된 접근 경로 생성 및 관리Automated access path creation and management
기존의 인그레스(Ingress)는 관리자가 수동으로 각 서비스에 대한 인그레스(Ingress) 리소스를 생성하고 관리해야 한다. 특히, 개별 노드로의 접근을 위해서는 각 노드의 서비스와 포트 정보를 정확히 파악하고, 이를 기반으로 인그레스(Ingress) 리소스를 설정해야 한다. 이는 관리의 복잡성을 증가시키고 오류 발생 가능성을 높인다.In traditional Ingress systems, administrators must manually create and manage Ingress resources for each service. In particular, accessing individual nodes requires accurately identifying the service and port information of each node and configuring Ingress resources based on this information. This increases management complexity and raises the likelihood of errors.
반면, 본 실시 예에 따른 인그레스매퍼(IngressMapper)는 이러한 수동 작업을 자동화하여, 특정 이미지를 사용하는 파드(pod)에 대해 자동으로 노드포트(NodePort) 서비스를 생성하고, 이를 기반으로 인그레스 리소스를 생성하고, 이를 쿠베네티스 클러스터에 배포한다. 이로써 관리자는 복잡한 설정 작업에서 해방되며, 인그레스(Ingress) 리소스의 관리 효율성이 크게 향상된다.On the other hand, the IngressMapper according to the present embodiment automates these manual tasks to automatically create a NodePort service for a pod using a specific image, create an Ingress resource based on it, and deploy it to a Kubenetes cluster. This frees administrators from complex configuration tasks and significantly improves the management efficiency of Ingress resources.
정규화된 접근 경로 제공Provide normalized access paths
기존의 인그레스(Ingress)에서는 개별 노드나 파드(pod)에 대한 접근 경로(access path)가 각각 다를 수 있으며, 사용자는 각 서비스의 포트나 경로 정보를 별도로 기억하고 사용해야 한다. 이러한 방식은 특히 여러 노드에 걸쳐 있는 하이브리드 환경에서 관리와 접근성 측면에서 비효율적일 수 있다.In traditional Ingress, access paths for individual nodes or pods can differ, and users must separately remember and use port or path information for each service. This approach can be inefficient in terms of management and accessibility, particularly in hybrid environments spanning multiple nodes.
이에 반해, 본 실시 예에 따른 인그레스매퍼(IngressMapper)는 각 노드 및 파드에 대해 정규화된 접근 경로를 제공하여, 이미 알려진 정보를 통해 사용자가 쉽게 URL로 각 서비스에 접근할 수 있도록 한다.In contrast, the IngressMapper according to the present embodiment provides a normalized access path for each node and pod, enabling users to easily access each service via URL using already known information.
파드(Pod) 상태에 따른 동적 관리Dynamic management based on Pod status
기존의 접근형태는 파드(pod)의 상태 변화에 대응하여 동적으로 리소스를 관리하지 않는다. 파드(pod)가 생성되거나 삭제될 때, 관리자는 수동으로 인그레스(Ingress) 리소스를 업데이트해야 하며, 이를 자동화하는 메커니즘이 부족하다.The existing approach does not dynamically manage resources in response to changes in Pod state. When a Pod is created or deleted, administrators must manually update Ingress resources, and there is a lack of mechanisms to automate this process.
이에 반해, 본 실시 예에 따른 인그레스매퍼(IngressMapper)는 특정 컨테이너 이미지 기반의 파드의 상태를 지속적으로 모니터링하고, 파드의 생성, 삭제 또는 변경 시 자동으로 인그레스(Ingress) 리소스를 업데이트한다. 이러한 동적 관리 기능은 쿠버네티스 클러스터 내 서비스의 가용성과 효율성을 높이며, 관리자의 개입 없이도 인프라가 자동으로 최적화되도록 지원한다.In contrast, the IngressMapper according to the present embodiment continuously monitors the status of Pods based on specific container images and automatically updates Ingress resources when Pods are created, deleted, or modified. This dynamic management capability enhances the availability and efficiency of services within a Kubernetes cluster and supports the automatic optimization of infrastructure without administrator intervention.
하이브리드 클러스터 지원Hybrid cluster support
기존의 부하분산 시스템은 클라우드 기반 환경에서는 효과적이지만, 클라우드-엣지 하이브리드 환경에서는 물리적 거리나 특정 하드웨어 자원의 요구사항에 따른 트래픽 라우팅을 효과적으로 지원하지 못한다. 이는 실시간 처리가 요구되는 서비스에 대해 비효율적이다.While existing load balancing systems are effective in cloud-based environments, they fail to effectively support traffic routing based on physical distance or specific hardware resource requirements in cloud-edge hybrid environments. This makes them inefficient for services requiring real-time processing.
이에 반해, 본 실시 예에 따른 인그레스매퍼(IngressMapper)는 하이브리드 클러스터 환경을 고려하여 설계되어, 특정 노드의 자원을 최적화하거나 물리적 거리를 최소화하는 방향으로 트래픽을 라우팅할 수 있다. 이로써, 실시간 처리 및 고성능 자원 활용이 중요한 환경에서도 효율적으로 동작한다.In contrast, the IngressMapper according to the present embodiment is designed with a hybrid cluster environment in mind and can route traffic in a way that optimizes the resources of a specific node or minimizes physical distance. As a result, it operates efficiently even in environments where real-time processing and the utilization of high-performance resources are critical.
도 5는 본 발명의 실시 예에 따른 인그레스매퍼(IngressMapper)가 설치된 마스터 노드의 구성도이다.FIG. 5 is a configuration diagram of a master node with an IngressMapper installed according to an embodiment of the present invention.
도 5를 참조하면, 마스터 노드(101)는 컴퓨팅 장치 또는 그 컴퓨팅 장치에 포함된 서브 컴퓨팅 장치일 수 있다. 컴퓨팅 장치 또는 서브 컴퓨팅 장치는, 예를 들면, 프로세서(50), 저장부(60), 메모리(70), 통신 장치(80) 및 입/출력 인터페이스를 포함한다. 프로세서(50)는 주변 구성들(60~90)의 전반적인 동작을 제어 및 관리한다. 프로세서(50)는 특정 운영 체제(Operating System: OS)와 그 운영 체제 상에서 동작하는 인그레스매퍼(62)를 실행한다. 프로세서(50)는 실행된 인그레스매퍼(62)의 기능을 수행하기 위한 연산을 지원한다. 프로세서(50)는 적어도 하나의 CPU와 적어도 하나의 GPU를 포함한다. 저장부(60)는 운영체제와 인그레스매퍼(62)를 저장하는 비휘발성 저장장치이다. 비휘발성 저장장치로, 하드 디스크 드라이브 (HDD), 솔리드 스테이트 드라이브 (SSD), ROM/EEPROM (재기록 가능한 읽기 전용 메모리) 등을 예로 들 수 있다. 메모리(70)는 상기 인그레스매퍼(62)의 실행에 필요한 명령어들을 저장하는 휘발성 메모리일 수 있다. 메모리(70)는 프로세서(50)의 요청에 따라 상기 명령어들을 프로세서(50)에 제공한다. 통신 장치(80)는 도 3에 도시한 노드들(105~107) 및 사용자 장치(300)와의 통신(예, 웹 통신(web communication))을 지원하는 장치로, 네트워크 인터페이스를 예로 들 수 있다. 입력 인터페이스(90)는 사용자 입력을 프로세서(50)에 전달하는 장치로서, 예를 들면, 인그레스매퍼(62)의 실행, 동작 및 설정에 필요한 다양한 사용자 입력을 프로세서(50)에 전달한다. Referring to FIG. 5, the master node (101) may be a computing device or a sub-computing device included in the computing device. The computing device or sub-computing device includes, for example, a processor (50), a storage unit (60), memory (70), a communication device (80), and an input/output interface. The processor (50) controls and manages the overall operation of peripheral components (60 to 90). The processor (50) executes a specific operating system (OS) and an ingress mapper (62) that operates on the operating system. The processor (50) supports operations to perform the functions of the executed ingress mapper (62). The processor (50) includes at least one CPU and at least one GPU. The storage unit (60) is a non-volatile storage device that stores the operating system and the ingress mapper (62). Examples of non-volatile storage devices include a hard disk drive (HDD), a solid-state drive (SSD), and ROM/EEPROM (rewritable read-only memory). The memory (70) may be a volatile memory that stores instructions required for the execution of the ingress mapper (62). The memory (70) provides the instructions to the processor (50) upon the request of the processor (50). The communication device (80) is a device that supports communication (e.g., web communication) with the nodes (105-107) and user device (300) shown in FIG. 3, and may be an example of a network interface. The input interface (90) is a device that transmits user input to the processor (50), and, for example, transmits various user inputs required for the execution, operation, and configuration of the ingress mapper (62) to the processor (50).
실시 예에서, 프로세서(50)에 의해 실행되는 인그레스매퍼(62)는 사용자의 서비스 요청에 따라 상기 노드들 중에서 어느 하나의 노드에서 동작하는 타겟 애플리케이션을 탐색하는 기능, 상기 타겟 애플리케이션을 외부로 노출시키는 노드포트 서비스(Nodeport Service)가 존재하는 지를 확인하는 기능, 상기 노드포트 서비스가 존재하는 경우, 상기 타겟 애플리케이션에 접근할 수 있는 정규화된 접근 정보를 자동으로 생성하는 기능 및 상기 정규화된 접근 정보를 기반으로 인그레스 리소스(Ingress resource)를 생성한 후, 상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 적용하는 기능을 수행한다. In an embodiment, an ingress mapper (62) executed by a processor (50) performs the following functions: searching for a target application running on one of the nodes according to a user's service request; checking whether there is a Nodeport Service that exposes the target application to the outside; if there is a Nodeport Service, automatically generating normalized access information that can access the target application; and creating an Ingress resource based on the normalized access information and then applying the Ingress resource to the Kubernetes cluster.
실시 예에서, 프로세서(50)에 의해 실행되는 인그레스매퍼(62)는 상기 노드포트 서비스가 존재하지 않는 경우, 상기 타겟 애플리케이션을 외부로 노출시킬 수 있는 노드포트 서비스를 생성한 후, 상기 정규화된 접근 정보를 자동으로 생성하는 기능을 수행한다.In an embodiment, the ingress mapper (62) executed by the processor (50) performs the function of automatically generating the normalized access information after creating a node port service that can expose the target application to the outside when the node port service does not exist.
실시 예에서, 상기 정규화된 접근 정보는 IP 주소(Internet Protocol Address), 노드 이름 및 서비스 이름을 포함하는 URL(Uniform Resource Locator)일 수 있다.In an embodiment, the normalized access information may be a Uniform Resource Locator (URL) including an Internet Protocol Address (IP), a node name, and a service name.
실시 예에서, 상기 URL의 형식은 http://IP/[Node name]/[Service name]일 수 있다.In an example, the format of the URL may be http://IP/[Node name]/[Service name].
실시 예에서, 프로세서(50)에 의해 실행되는 인그레스매퍼(62)는 상기 인그레스 리소스를 정의하는 YAML 파일을 생성하고, 여기서, 상기 YAML 파일은 IP 주소, 노드 이름, 서비스 이름, 서비스 포트 번호를 포함한다. YAML은 "YAML Ain't Markup Language"라는 이름으로부터 유래된 용어로 마크업 언어(Markup Language)가 아니라 데이터 구조를 표현하는 데 중점을 둔 언어이다.In an embodiment, an ingress mapper (62) executed by a processor (50) generates a YAML file defining the ingress resources, wherein the YAML file includes an IP address, a node name, a service name, and a service port number. YAML is a term derived from the name "YAML Ain't Markup Language" and is a language focused on expressing data structures rather than being a markup language.
실시 예에서, 프로세서(50)에 의해 실행되는 인그레스매퍼(62)는 상기 인그레스 리소스를 동작시키기 위해 인그레스(Ingress) 컨트롤러를 상기 쿠버네티스 클러스터에 배포한다.In an embodiment, an ingress mapper (62) executed by a processor (50) deploys an ingress controller to the Kubernetes cluster to operate the ingress resource.
본 명세서에 개시된 실시 예들은 한정적인 관점이 아니라 설명을 위한 예시적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.The embodiments disclosed in this specification should be considered for illustrative purposes rather than for limiting purposes. The scope of the invention is defined by the claims, not by the foregoing description, and all variations within the scope of the claims should be interpreted as being included in the invention.
Claims (12)
상기 마스터 노드에 설치된 인그레스매퍼(IngressMapper)가, 사용자의 서비스 요청에 응답하여 상기 쿠버네티스 클러스터에서 상기 노드들 중에서 어느 하나의 노드에서 동작하는 타겟 애플리케이션을 탐색하는 단계;
상기 인그레스매퍼가, 상기 타겟 애플리케이션을 외부로 노출시키는 상기 노드포트 서비스가 존재하는 지를 확인하는 단계;
상기 노드포트 서비스가 존재하는 경우, 상기 인그레스매퍼가, 상기 타겟 애플리케이션에 접근할 수 있는 정규화된 접근 정보를 자동으로 생성하는 단계; 및
상기 인그레스매퍼가, 상기 정규화된 접근 정보를 기반으로 인그레스 리소스(Ingress resource)를 생성한 후, 상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 배포하는 단계
를 포함하는 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 방법.A method for automatically accessing applications on nodes in a Kubernetes cluster comprising a master node and nodes, wherein the master node is connected to the nodes through a Nodeport Service configured per node,
A step in which an IngressMapper installed on the master node searches for a target application running on one of the nodes in the Kubernetes cluster in response to a user's service request;
The above ingress mapper checks whether the nodeport service that exposes the target application to the outside exists;
If the above nodeport service exists, the ingress mapper automatically generates normalized access information that can access the target application; and
The above ingress mapper creates an ingress resource based on the normalized access information, and then deploys the ingress resource to the Kubernetes cluster.
A method for automatically accessing applications on nodes in a Kubernetes cluster that includes
상기 노드포트 서비스가 존재하지 않는 경우, 상기 인그레스매퍼가, 상기 타겟 애플리케이션을 외부로 노출시킬 수 있는 노드포트 서비스를 생성한 후, 상기 정규화된 접근 정보를 자동으로 생성하는 단계
를 더 포함하는 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 방법.In paragraph 1,
If the above nodeport service does not exist, the ingress mapper creates a nodeport service capable of exposing the target application externally, and then automatically generates the normalized access information.
A method for automatically accessing applications on nodes in a Kubernetes cluster that includes more.
상기 정규화된 접근 정보는 IP 주소(Internet Protocol Address), 노드 이름 및 서비스 이름을 포함하는 URL(Uniform Resource Locator)인 것인 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 방법.In paragraph 1,
A method for automatically accessing an application on a node in a Kubernetes cluster, wherein the above-mentioned normalized access information is a Uniform Resource Locator (URL) containing an Internet Protocol Address (IP), a node name, and a service name.
상기 URL의 형식은 http://IP/[Node name]/[Service name]인 것인 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 방법.In Paragraph 3,
A method for automatically accessing an application on a node in a Kubernetes cluster, wherein the format of the above URL is http://IP/[Node name]/[Service name].
상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 적용하는 단계는,
상기 인그레스 리소스를 정의하는 YAML 파일을 생성하는 단계를 포함하고,
상기 YAML 파일은 IP 주소, 노드 이름, 서비스 이름, 서비스 포트 번호를 포함하는 것인 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 방법.In paragraph 1,
The step of applying the above ingress resource to the above Kubernetes cluster is,
It includes the step of creating a YAML file that defines the above ingress resource, and
A method for automatically accessing an application on a node in a Kubernetes cluster, wherein the above YAML file includes an IP address, node name, service name, and service port number.
상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 적용하는 단계는,
상기 인그레스 리소스를 동작시키기 위해 인그레스(Ingress) 컨트롤러를 상기 쿠버네티스 클러스터에 배포하는 단계를 포함하는 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 방법.In paragraph 1,
The step of applying the above ingress resource to the above Kubernetes cluster is,
A method for automatically accessing an application on a node in a Kubernetes cluster, comprising the step of deploying an Ingress controller to the Kubernetes cluster to operate the above Ingress resource.
상기 프로세서에 의해 실행되는 인그레스매퍼(IngressMapper)를 저장하는 저장부;
상기 인그레스매퍼의 실행에 필요한 명령어들을 저장하는 메모리; 및
쿠버네티스 클러스터에 포함된 노드들과의 통신을 지원하는 통신 장치를 포함하고,
상기 인그레스매퍼는,
사용자의 서비스 요청에 따랏 상기 노드들 중에서 어느 하나의 노드에서 동작하는 타겟 애플리케이션을 탐색하고,
상기 타겟 애플리케이션을 외부로 노출시키는 노드포트 서비스(Nodeport Service)가 존재하는 지를 확인하고,
상기 노드포트 서비스가 존재하는 경우, 상기 타겟 애플리케이션에 접근할 수 있는 정규화된 접근 정보를 자동으로 생성하고,
상기 정규화된 접근 정보를 기반으로 인그레스 리소스(Ingress resource)를 생성한 후, 상기 인그레스 리소스를 상기 쿠버네티스 클러스터에 배포하는 것을 특징으로 하는 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 컴퓨팅 장치.processor;
A storage unit for storing an IngressMapper executed by the above processor;
Memory for storing commands required for the execution of the above ingress mapper; and
It includes a communication device that supports communication with nodes included in a Kubernetes cluster, and
The above Ingress Mapper is,
Search for a target application running on one of the above nodes in accordance with the user's service request, and
Check whether a Nodeport Service exists that exposes the above target application externally, and
If the above NodePort service exists, normalized access information that can access the above target application is automatically generated, and
A computing device for automatically accessing applications on nodes in a Kubernetes cluster, characterized by creating an Ingress resource based on the normalized access information and then deploying the Ingress resource to the Kubernetes cluster.
상기 인그레스매퍼는,
상기 노드포트 서비스가 존재하지 않는 경우, 상기 타겟 애플리케이션을 외부로 노출시킬 수 있는 노드포트 서비스를 생성한 후, 상기 정규화된 접근 정보를 자동으로 생성하는 것인 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 컴퓨팅 장치.In Paragraph 7,
The above Ingress Mapper is,
A computing device for automatically accessing an application on a node in a Kubernetes cluster, wherein, if the above-mentioned nodeport service does not exist, a nodeport service capable of exposing the target application to the outside is created, and then the above-mentioned normalized access information is automatically generated.
상기 정규화된 접근 정보는 IP 주소(Internet Protocol Address), 노드 이름 및 서비스 이름을 포함하는 URL(Uniform Resource Locator)인 것인 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 컴퓨팅 장치.In Paragraph 7,
A computing device for automatically accessing applications on nodes in a Kubernetes cluster, wherein the above-mentioned normalized access information is a Uniform Resource Locator (URL) including an Internet Protocol Address (IP), a node name, and a service name.
상기 URL의 형식은 http://IP/[Node name]/[Service name]인 것인 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 컴퓨팅 장치.In Paragraph 9,
A computing device for automatically accessing applications on nodes in a Kubernetes cluster, wherein the format of the above URL is http://IP/[Node name]/[Service name].
상기 인그레스매퍼는,
상기 인그레스 리소스를 정의하는 YAML 파일을 생성하고,
상기 YAML 파일은 IP 주소, 노드 이름, 서비스 이름, 서비스 포트 번호를 포함하는 것인 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 컴퓨팅 장치.In Paragraph 7,
The above Ingress Mapper is,
Create a YAML file defining the above ingress resource, and
A computing device for automatically accessing applications on nodes in a Kubernetes cluster, wherein the above YAML file includes an IP address, node name, service name, and service port number.
상기 인그레스매퍼는,
상기 인그레스 리소스를 동작시키기 위해 인그레스(Ingress) 컨트롤러를 상기 쿠버네티스 클러스터에 배포하는 것인 쿠버네티스 클러스터에서 노드의 애플리케이션에 자동으로 접근하기 위한 컴퓨팅 장치.In Paragraph 7,
The above Ingress Mapper is,
A computing device for automatically accessing applications on nodes in a Kubernetes cluster, which deploys an Ingress controller to the Kubernetes cluster to operate the above Ingress resources.
Publications (1)
| Publication Number | Publication Date |
|---|---|
| KR20260052572A true KR20260052572A (en) | 2026-04-20 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11157304B2 (en) | System for peering container clusters running on different container orchestration systems | |
| US12423157B2 (en) | Systems and methods providing serverless DNS integration | |
| US10713071B2 (en) | Method and apparatus for network function virtualization | |
| CN109196474B (en) | Distributed operation control in a computing system | |
| CN107210924B (en) | Method and apparatus for configuring a communication system | |
| Liu et al. | SDN-based live VM migration across datacenters | |
| US11388136B2 (en) | Dynamic distributed service location discovery | |
| US11550616B2 (en) | Virtual IP support for bare metal cloud infrastructures | |
| US11870647B1 (en) | Mapping on-premise network nodes to cloud network nodes | |
| CN115442433A (en) | Method and system for facilitating inter-container communication via cloud exchange | |
| WO2012068867A1 (en) | Virtual machine management system and using method thereof | |
| CN108780410A (en) | The network virtualization of container in computing system | |
| US10237235B1 (en) | System for network address translation | |
| CN116132542B (en) | Container network management method, container network plug-in and related equipment | |
| US11429411B2 (en) | Fast ARP cache rewrites in a cloud-based virtualization environment | |
| US20180295064A1 (en) | Traffic optimization for multi-node applications | |
| CN112655185B (en) | Devices, methods and storage media for service distribution in software-defined networks | |
| US20250293933A1 (en) | Instantiation method and apparatus for virtualised network function vnf | |
| CN116414515A (en) | Information processing method, device, electronic equipment and storage medium | |
| Soares et al. | Re-designing Cloud platforms for massive scale using a P2P architecture | |
| KR20260052572A (en) | Method and computing apparatus for automatically accessing applications on nodes in a kubernetes cluster environment | |
| US10791088B1 (en) | Methods for disaggregating subscribers via DHCP address translation and devices thereof | |
| CN119011537A (en) | High availability egress access with consistent source internet protocol address of workload | |
| CN115242791B (en) | Service platform access method, device, equipment and storage medium | |
| CN118473912A (en) | Service resource deployment method, device, server and storage medium |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |