Red Hat OpenShift 플랫폼 - 컴퓨트

이eun·2025년 3월 10일

Red Hat OpenShift의 컴퓨트(Compute) 개념

컴퓨트(Compute)는 OpenShift 클러스터에서 어떤 방식으로 애플리케이션을 실행하고 리소스를 관리하는지를 의미해.
즉, 워크로드를 배포하고 실행하는 노드(Node) 및 리소스(CPU, 메모리 등)를 어떻게 활용하는지와 관련된 개념이야.

OpenShift에서는 Kubernetes 기반으로 컴퓨트 리소스를 관리하며, 주요 개념은 다음과 같아.

개념설명
노드(Node)애플리케이션이 실행되는 물리 또는 가상 머신
파드(Pod)OpenShift에서 실행되는 컨테이너의 기본 단위
네임스페이스(Namespace)클러스터 내 리소스를 논리적으로 구분하는 단위
리소스 할당(Resource Requests & Limits)CPU, 메모리 등의 사용량을 제어하는 정책
스케줄링(Scheduling)특정 노드에 워크로드를 배치하는 방법
오토스케일링(Auto Scaling)트래픽 증가에 따라 자동으로 리소스를 확장하는 기능

1. 노드(Node) - OpenShift에서 컴퓨트 리소스를 제공하는 단위

OpenShift 클러스터는 여러 개의 노드(Node)로 구성되며, 각 노드는 컨테이너를 실행하는 역할을 해.
노드는 크게 두 가지 종류로 나뉘어.

노드 유형설명
마스터 노드 (Master Node)클러스터 관리 및 API 제공
워커 노드 (Worker Node)애플리케이션을 실행하는 실제 컴퓨트 리소스

📌 클러스터의 모든 노드 조회

oc get nodes

👉 클러스터 내에서 사용 가능한 노드 목록을 확인

📌 특정 노드의 상세 정보 조회

oc describe node <노드이름>

👉 노드의 CPU, 메모리 사용량, 상태 등을 확인

📌 노드에 할당된 파드 확인

oc get pods -o wide

👉 각 파드가 어떤 노드에서 실행되는지 확인 가능


2. 파드(Pod) - OpenShift에서 컨테이너 실행 단위

파드(Pod)는 OpenShift에서 실행되는 컨테이너의 기본 실행 단위야.
하나의 파드는 하나 이상의 컨테이너를 포함할 수 있어.

📌 현재 실행 중인 파드 목록 확인

oc get pods

📌 특정 파드의 상세 정보 조회

oc describe pod <파드이름>

📌 파드의 CPU 및 메모리 사용량 확인

oc top pod

📌 새로운 파드 생성 (예제: Nginx 컨테이너 실행)

oc run my-nginx --image=nginx --port=80

3. 리소스 할당 (Resource Requests & Limits) - CPU & 메모리 관리

OpenShift에서는 각 파드가 사용할 수 있는 CPU 및 메모리 리소스를 제한할 수 있어.
이걸 리소스 요청(Request)과 제한(Limit)이라고 해.

설정 값설명
requests.cpu최소 보장되는 CPU
requests.memory최소 보장되는 메모리
limits.cpu최대 허용되는 CPU
limits.memory최대 허용되는 메모리

📌 리소스 제한이 포함된 Deployment 설정 예제

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 2
  template:
    spec:
      containers:
      - name: my-app
        image: my-app-image
        resources:
          requests:
            cpu: "250m"
            memory: "128Mi"
          limits:
            cpu: "500m"
            memory: "256Mi"

👉 CPU는 최소 250m(0.25코어), 최대 500m(0.5코어), 메모리는 최소 128Mi, 최대 256Mi를 사용할 수 있도록 제한

📌 현재 실행 중인 파드의 리소스 사용량 확인

oc describe pod <파드이름> | grep -i "cpu\|memory"

4. 스케줄링(Scheduling) - 파드를 특정 노드에 배치

OpenShift는 자동으로 적절한 워커 노드에 파드를 배치하지만, 특정 노드에 파드를 배치하려면 노드 셀렉터(Node Selector)를 사용할 수 있어.

📌 특정 노드에만 파드 배포 (예제)

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  nodeSelector:
    disktype: ssd
  containers:
  - name: my-container
    image: my-app-image

👉 "disktype: ssd" 라벨이 있는 노드에서만 실행되도록 설정

📌 현재 클러스터의 모든 노드의 라벨 확인

oc get nodes --show-labels

5. 오토스케일링(Auto Scaling) - 트래픽에 따라 자동 확장

OpenShift는 트래픽 증가에 따라 파드 또는 노드를 자동으로 확장(Scale-out)할 수 있어.
오토스케일링에는 두 가지 방법이 있어.

① HPA(Horizontal Pod Autoscaler) - 파드 개수 증가

📌 CPU 사용량이 50% 이상일 때 자동으로 파드 개수를 조절하는 설정

oc autoscale deployment my-app --min=2 --max=10 --cpu-percent=50

👉 CPU 사용량이 50%를 넘으면 최대 10개까지 자동 확장

📌 현재 오토스케일링 상태 확인

oc get hpa

② 클러스터 오토스케일링 - 노드 개수 증가

만약 파드를 배치할 워커 노드가 부족하면, 새로운 노드를 자동으로 추가할 수도 있어.
이 기능을 Cluster Autoscaler라고 해.

📌 클러스터 오토스케일링 설정 예제

apiVersion: autoscaling.openshift.io/v1
kind: ClusterAutoscaler
metadata:
  name: default
spec:
  scaleDown:
    enabled: true
    delayAfterAdd: 10m
    delayAfterDelete: 1m
  resourceLimits:
    maxNodesTotal: 10

👉 최대 10개의 노드까지 자동으로 확장하며, 사용량이 줄어들면 자동 축소됨

📌 오토스케일러 적용

oc apply -f cluster-autoscaler.yaml

6. OpenShift에서 Compute 관련 명령어 정리

명령어설명
oc get nodes클러스터의 모든 노드 목록 조회
oc describe node <노드이름>특정 노드의 상태 및 리소스 사용량 확인
oc get pods -o wide파드가 실행 중인 노드 정보 확인
oc run my-nginx --image=nginx --port=80Nginx 컨테이너 실행
oc top pod실행 중인 파드의 CPU 및 메모리 사용량 조회
oc autoscale deployment my-app --min=2 --max=10 --cpu-percent=50HPA로 오토스케일링 설정
oc get hpa오토스케일링 상태 확인

📌 정리

  1. OpenShift 컴퓨트(Compute)란?
    • 클러스터에서 애플리케이션을 실행하고, 리소스를 관리하는 기능
  2. 핵심 개념
    • 노드(Node): 애플리케이션을 실행하는 컴퓨트 리소스
    • 파드(Pod): 컨테이너 실행 단위
    • 리소스 할당: CPU 및 메모리 사용량 제어
    • 스케줄링: 특정 노드에 파드 배포
    • 오토스케일링: 트래픽 증가 시 자동 확장

이제 OpenShift에서 컴퓨트 리소스를 효율적으로 관리할 수 있는 방법을 알았지? 🚀
더 궁금한 점 있으면 질문해줘! 😊

0개의 댓글