Kubernetes LimitRange 리소스 관리

KubernetesBeginner
지금 연습하기

소개

이 랩에서는 Kubernetes 파드에서 리소스 소비에 대한 제한을 설정하는 데 사용되는 Kubernetes LimitRange 에 대해 배우게 됩니다. LimitRange 는 파드에 할당된 리소스를 관리하고 리소스 경합 문제를 방지하는 데 도움이 되는 Kubernetes 기능입니다.

간단한 예제부터 시작하여 점차적으로 더 복잡한 시나리오로 이동하면서 LimitRange 의 다양한 측면을 이해하기 위한 일련의 단계별 지침을 따르게 됩니다. 각 단계에는 Kubernetes 클러스터에 적용하여 LimitRange 의 효과를 확인할 수 있는 YAML 매니페스트 형식의 코드 예제가 포함됩니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 98%입니다.학습자들로부터 98%의 긍정적인 리뷰율을 받았습니다.

Minikube 클러스터 시작

리소스를 생성하기 전에 실행 중인 Kubernetes 클러스터가 필요합니다. Minikube 는 로컬 머신에서 실행되는 경량 Kubernetes 환경입니다.

  1. 작업 디렉토리로 이동:

    터미널을 열고 기본 프로젝트 폴더로 이동합니다.

    cd /home/labex/project
  2. Minikube 시작:

    Kubernetes 클러스터를 초기화하기 위해 Minikube 를 시작합니다.

    minikube start
    • 이 명령은 로컬 머신에 단일 노드 Kubernetes 클러스터를 설정합니다.
    • Minikube 는 시스템 성능에 따라 시작하는 데 몇 분 정도 걸릴 수 있습니다.
  3. Minikube 가 실행 중인지 확인:

    Minikube 클러스터의 상태를 확인합니다.

    minikube status
    • kubeletapiserver와 같은 구성 요소가 Running으로 나열되어 있는지 확인합니다.
    • 클러스터가 실행 중이지 않으면 minikube start를 다시 실행합니다.

Minikube 를 시작하는 데 문제가 발생하면 필요에 따라 minikube delete를 사용하여 환경을 재설정하십시오.

간단한 LimitRange 생성

이 단계에서는 네임스페이스의 파드에 대한 CPU 및 메모리 리소스에 대한 제한을 설정하는 간단한 LimitRange 를 생성합니다. 방법은 다음과 같습니다.

  1. limitrange.yaml이라는 새 YAML 파일을 다음 내용으로 생성합니다.
cd ~/project
touch limitrange.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
spec:
  limits:
    - type: Container
      max:
        cpu: "1"
        memory: "1Gi"
      min:
        cpu: "100m"
        memory: "100Mi"
      default:
        cpu: "500m"
        memory: "500Mi"

이 LimitRange 는 다음과 같은 제한을 설정합니다.

  • 최대 CPU: 1 코어
  • 최대 메모리: 1 GiB
  • 최소 CPU: 100 밀리코어 (100m)
  • 최소 메모리: 100 MiB
  • 기본 CPU: 500 밀리코어 (500m)
  • 기본 메모리: 500 MiB
  1. kubectl apply 명령을 사용하여 limitrange.yaml 파일을 Kubernetes 클러스터에 적용합니다.
kubectl apply -f limitrange.yaml
  1. 다음 명령을 실행하여 LimitRange 가 성공적으로 생성되었는지 확인합니다.
kubectl describe limitrange example-limitrange

spec 섹션에서 지정한 제한 사항과 함께 example-limitrange LimitRange 가 나열되어야 합니다.

Pod 에 LimitRange 적용

이 단계에서는 "간단한 LimitRange 생성"에서 생성한 LimitRange 의 영향을 받는 파드를 생성합니다. 방법은 다음과 같습니다.

  1. pod.yaml이라는 새 YAML 파일을 다음 내용으로 생성합니다.
cd ~/project
touch pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
    - name: nginx
      image: nginx

이 파드 정의는 Nginx 이미지를 실행하는 단일 컨테이너가 있는 간단한 파드를 생성합니다.

  1. kubectl apply 명령을 사용하여 pod.yaml 파일을 Kubernetes 클러스터에 적용합니다.
kubectl apply -f pod.yaml
  1. 다음 명령을 실행하여 파드가 성공적으로 생성되었는지 확인합니다.
kubectl get pods example-pod

Running 상태로 example-pod 파드가 나열되어야 합니다.

  1. 다음 명령을 실행하여 파드에 적용된 리소스 제한을 확인합니다.
kubectl describe pod example-pod

정의된 대로 파드의 CPU 및 메모리 제한을 확인할 수 있습니다.

LimitRange 적용 테스트

이 단계에서는 LimitRange 에 정의된 리소스 제한을 초과하는 파드를 생성하여 LimitRange 의 적용을 테스트합니다. 방법은 다음과 같습니다.

  1. pod-exceeding-limits.yaml이라는 새 YAML 파일을 다음 내용으로 생성합니다.
cd ~/project
touch pod-exceeding-limits.yaml
apiVersion: v1
kind: Pod
metadata:
  name: example-pod-exceeding-limits
spec:
  containers:
    - name: nginx
      image: nginx
      resources:
        limits:
          cpu: "2"
          memory: "2Gi"

이 파드 정의는 LimitRange 에 설정된 제한을 초과하는 리소스를 요청하는 컨테이너가 있는 파드를 생성합니다 (CPU: 2 코어, 메모리: 2 GiB).

  1. kubectl apply 명령을 사용하여 pod-exceeding-limits.yaml 파일을 Kubernetes 클러스터에 적용합니다.
kubectl apply -f pod-exceeding-limits.yaml

파드 생성 작업이 거부되는 것을 확인할 수 있습니다. 오류 메시지는 Error from server (Forbidden): error when creating "pod-exceeding-limits. yaml": pod "example-pod-exceeding-limits " Forbidden: [Maximum cpu usage per container is 1, but limited to 2, maximum memory usage per container is 1Gi, but limited to 2Gi] 입니다.

LimitRange 업데이트

이 단계에서는 "간단한 LimitRange 생성"에서 생성한 LimitRange 를 업데이트하여 리소스 제한을 수정합니다. 방법은 다음과 같습니다.

  1. 요구 사항에 따라 리소스 제한을 업데이트하도록 limitrange.yaml 파일을 수정합니다. 예를 들어:
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
spec:
  limits:
    - type: Container
      max:
        cpu: "2"
        memory: "2Gi"
      min:
        cpu: "200m"
        memory: "200Mi"
      default:
        cpu: "1"
        memory: "1Gi"

이 업데이트된 LimitRange 는 다음 제한을 설정합니다.

  • 최대 CPU: 2 코어
  • 최대 메모리: 2 GiB
  • 최소 CPU: 200 밀리코어 (200m)
  • 최소 메모리: 200 MiB
  • 기본 CPU: 1 코어
  • 기본 메모리: 1 GiB
  1. kubectl apply 명령을 사용하여 업데이트된 limitrange.yaml 파일을 Kubernetes 클러스터에 적용합니다.
kubectl apply -f limitrange.yaml
  1. 다음 명령을 실행하여 LimitRange 가 성공적으로 업데이트되었는지 확인합니다.
kubectl describe limitranges example-limitrange

출력에 업데이트된 리소스 제한이 반영된 것을 확인할 수 있습니다.

요약

이 랩에서는 Kubernetes LimitRange 를 사용하여 파드에서 리소스 소비에 대한 제한을 설정하는 방법을 배웠습니다. 간단한 LimitRange 를 생성하는 것으로 시작하여 파드에 적용하고, 적용을 테스트한 다음 LimitRange 를 업데이트하여 리소스 제한을 수정했습니다. LimitRange 는 Kubernetes 에서 리소스를 관리하고 클러스터에서 효율적인 리소스 활용을 보장하는 강력한 도구입니다.