Kubernetes/Kubernetes Basics

📌 Kubernetes 비용 절감 & 리소스 최적화 전략

ygtoken 2025. 3. 3. 07:44
728x90

 

1️⃣ Kubernetes에서 비용 최적화가 중요한 이유?

 

Kubernetes는 클라우드 환경에서 자동 확장(Auto Scaling)과 리소스 조정을 지원하지만,

잘못된 설정이 있으면 불필요한 비용이 발생할 수 있습니다.

 

Kubernetes 비용 절감 & 리소스 최적화를 위해 어떤 전략을 사용할 수 있을까요?

 

불필요한 리소스 사용을 줄여 비용 절감

자동 확장(Auto Scaling) 활용으로 최적의 리소스 배분

리소스 요청(Requests) & 제한(Limits) 설정으로 효율적인 클러스터 운영

 


 

2️⃣ Kubernetes에서 비용이 발생하는 주요 원인

 

📌 불필요한 비용 발생 요인

 

오버 프로비저닝(Over-Provisioning) → 필요 이상으로 많은 리소스를 할당

미사용 리소스 유지 → 사용되지 않는 Pod, PVC, LoadBalancer가 클러스터에 남아 있음

잘못된 리소스 요청(Requests & Limits) 설정 → 과도한 CPU/메모리 요청으로 리소스 낭비

비효율적인 노드 배치 → 클러스터 리소스를 균형 있게 사용하지 못함

 

올바른 리소스 최적화 전략을 사용하면 비용을 절감할 수 있습니다!

 


 

3️⃣ 불필요한 리소스 정리

 

📌 클러스터 내에서 사용되지 않는 리소스를 정리하면 비용을 절감할 수 있습니다.

 


 

✅ Step 1: 사용되지 않는 Pod 제거

 

📌 현재 실행 중이지 않은 Pod 확인

kubectl get pods --all-namespaces --field-selector=status.phase=Failed

 

📌 사용되지 않는 Pod 삭제

kubectl delete pod <POD_NAME> -n <NAMESPACE>

실패하거나 필요 없는 Pod를 삭제하여 불필요한 리소스 사용을 방지!

 


 

✅ Step 2: 미사용 Persistent Volume(PV) 삭제

 

📌 사용되지 않는 PVC(PersistentVolumeClaim) 확인

kubectl get pvc --all-namespaces

 

📌 미사용 PVC 삭제

kubectl delete pvc <PVC_NAME> -n <NAMESPACE>

사용되지 않는 스토리지를 삭제하여 비용 절감 가능!

 


 

✅ Step 3: 사용하지 않는 LoadBalancer 서비스 삭제

 

📌 현재 실행 중인 LoadBalancer 서비스 확인

kubectl get svc --all-namespaces | grep LoadBalancer

 

📌 미사용 LoadBalancer 삭제

kubectl delete svc <SERVICE_NAME> -n <NAMESPACE>

클라우드에서 불필요한 LoadBalancer를 유지하면 불필요한 비용이 발생할 수 있음!

 


 

4️⃣ Requests & Limits 최적화

 

📌 Kubernetes에서 올바른 Requests & Limits를 설정하면 리소스를 효율적으로 사용할 수 있습니다.

 


 

✅ Step 1: 현재 리소스 사용량 분석

 

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

kubectl top pod --all-namespaces

 

📌 노드(Node)의 리소스 사용량 확인

kubectl top node

현재 사용량을 분석하여 적절한 Requests & Limits 값을 설정해야 함!

 


 

✅ Step 2: 올바른 Requests & Limits 설정

 

📌 리소스를 최적화한 Deployment 예제 (optimized-deployment.yaml)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: optimized-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: myapp
        image: myapp:latest
        resources:
          requests:
            cpu: "250m"  # 최소 CPU 요청
            memory: "256Mi"  # 최소 메모리 요청
          limits:
            cpu: "500m"  # 최대 CPU 제한
            memory: "512Mi"  # 최대 메모리 제한

 

📌 배포 명령어

kubectl apply -f optimized-deployment.yaml

적절한 Requests & Limits 설정을 통해 불필요한 리소스 사용을 방지 가능!

 


 

5️⃣ 오토스케일링(HPA, Cluster Autoscaler) 활용

 

📌 트래픽 변화에 맞춰 Pod 및 노드 수를 자동으로 조정하면 비용을 최적화할 수 있습니다.

 

✅ Step 1: HPA(Horizontal Pod Autoscaler) 설정

 

📌 HPA 설정 (hpa.yaml)

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: optimized-app
  minReplicas: 2
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50  # CPU 사용량이 50%를 넘으면 확장

📌 HPA 배포

kubectl apply -f hpa.yaml

트래픽이 많아지면 자동으로 Pod를 확장하여 리소스를 효율적으로 활용 가능!

 


 

✅ Step 2: Cluster Autoscaler 설정 (클라우드 환경)

 

📌 GKE에서 Cluster Autoscaler 활성화

gcloud container clusters update my-cluster \
  --enable-autoscaling --min-nodes 1 --max-nodes 5 \
  --node-pool default-pool

 

📌 AWS EKS에서 Cluster Autoscaler 설정

eksctl scale nodegroup --cluster=my-cluster --name=my-nodegroup --nodes-min=1 --nodes-max=5

노드 수를 자동 조정하여 과도한 클러스터 운영 비용을 방지 가능!

 


 

6️⃣ 스팟 인스턴스(Spot Instance) 활용

 

📌 클라우드에서 스팟 인스턴스를 활용하면 비용을 대폭 절감할 수 있습니다.

 

AWS EKS에서 스팟 인스턴스 활용

eksctl create nodegroup --cluster my-cluster \
  --name spot-nodes \
  --instance-types m5.large \
  --spot

 

GKE에서 Preemptible 노드 활용

gcloud container node-pools create spot-pool --cluster=my-cluster \
  --preemptible --num-nodes=3

비용이 저렴한 스팟 인스턴스를 활용하여 운영 비용 절감 가능!

 


 

📌 결론: Kubernetes 비용 절감 & 리소스 최적화 전략

 

전략설명

불필요한 리소스 정리 사용되지 않는 Pod, PVC, LoadBalancer 삭제
Requests & Limits 최적화 적절한 CPU & 메모리 요청 설정
HPA & Cluster Autoscaler 활용 트래픽에 맞춰 자동 확장
스팟 인스턴스 활용 비용이 저렴한 스팟 노드로 운영

🔥 Kubernetes에서 올바른 비용 절감 전략을 사용하면 최적의 성능을 유지하면서도 운영 비용을 절감할 수 있습니다! 🚀

 

 

728x90