컴퓨트(Compute)는 OpenShift 클러스터에서 어떤 방식으로 애플리케이션을 실행하고 리소스를 관리하는지를 의미해.
즉, 워크로드를 배포하고 실행하는 노드(Node) 및 리소스(CPU, 메모리 등)를 어떻게 활용하는지와 관련된 개념이야.
OpenShift에서는 Kubernetes 기반으로 컴퓨트 리소스를 관리하며, 주요 개념은 다음과 같아.
| 개념 | 설명 |
|---|---|
| 노드(Node) | 애플리케이션이 실행되는 물리 또는 가상 머신 |
| 파드(Pod) | OpenShift에서 실행되는 컨테이너의 기본 단위 |
| 네임스페이스(Namespace) | 클러스터 내 리소스를 논리적으로 구분하는 단위 |
| 리소스 할당(Resource Requests & Limits) | CPU, 메모리 등의 사용량을 제어하는 정책 |
| 스케줄링(Scheduling) | 특정 노드에 워크로드를 배치하는 방법 |
| 오토스케일링(Auto Scaling) | 트래픽 증가에 따라 자동으로 리소스를 확장하는 기능 |
OpenShift 클러스터는 여러 개의 노드(Node)로 구성되며, 각 노드는 컨테이너를 실행하는 역할을 해.
노드는 크게 두 가지 종류로 나뉘어.
| 노드 유형 | 설명 |
|---|---|
| 마스터 노드 (Master Node) | 클러스터 관리 및 API 제공 |
| 워커 노드 (Worker Node) | 애플리케이션을 실행하는 실제 컴퓨트 리소스 |
📌 클러스터의 모든 노드 조회
oc get nodes
👉 클러스터 내에서 사용 가능한 노드 목록을 확인
📌 특정 노드의 상세 정보 조회
oc describe node <노드이름>
👉 노드의 CPU, 메모리 사용량, 상태 등을 확인
📌 노드에 할당된 파드 확인
oc get pods -o wide
👉 각 파드가 어떤 노드에서 실행되는지 확인 가능
파드(Pod)는 OpenShift에서 실행되는 컨테이너의 기본 실행 단위야.
하나의 파드는 하나 이상의 컨테이너를 포함할 수 있어.
📌 현재 실행 중인 파드 목록 확인
oc get pods
📌 특정 파드의 상세 정보 조회
oc describe pod <파드이름>
📌 파드의 CPU 및 메모리 사용량 확인
oc top pod
📌 새로운 파드 생성 (예제: Nginx 컨테이너 실행)
oc run my-nginx --image=nginx --port=80
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"
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
OpenShift는 트래픽 증가에 따라 파드 또는 노드를 자동으로 확장(Scale-out)할 수 있어.
오토스케일링에는 두 가지 방법이 있어.
📌 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
| 명령어 | 설명 |
|---|---|
oc get nodes | 클러스터의 모든 노드 목록 조회 |
oc describe node <노드이름> | 특정 노드의 상태 및 리소스 사용량 확인 |
oc get pods -o wide | 파드가 실행 중인 노드 정보 확인 |
oc run my-nginx --image=nginx --port=80 | Nginx 컨테이너 실행 |
oc top pod | 실행 중인 파드의 CPU 및 메모리 사용량 조회 |
oc autoscale deployment my-app --min=2 --max=10 --cpu-percent=50 | HPA로 오토스케일링 설정 |
oc get hpa | 오토스케일링 상태 확인 |
이제 OpenShift에서 컴퓨트 리소스를 효율적으로 관리할 수 있는 방법을 알았지? 🚀
더 궁금한 점 있으면 질문해줘! 😊