웹사이트 검색

Kubernetes의 범위 제한


이 페이지에서

  1. 전제 조건
  2. 무엇을 할 것인가?\n
  3. 기본 네임스페이스에 LimitRange 만들기
  4. 기본 네임스페이스에서 CPU 제한 및 범위를 사용하여 Pod 생성\n
    1. 한도가 있는 포드\n
    2. CPU가 더 많은 포드:
    3. CPU가 적은 포드:
    4. CPU가 없는 포드:

    범위 제한을 사용하면 기본적으로 컨테이너가 Kubernetes 클러스터에서 무제한 컴퓨팅 리소스로 실행되므로 리소스 소비 및 생성을 제한할 수 있습니다. Pod는 제한 범위에 정의된 만큼의 CPU와 메모리를 사용할 수 있습니다.

    범위 제한은 다음에 대한 제약 조건을 제공합니다.

    • 최소 및 최대 자원
    • PersistentVolumeClaim당 최소 및 최대 스토리지 요청
    • 네임스페이스의 리소스에 대한 요청과 제한 간의 비율입니다.\n
    • 컴퓨팅 리소스에 대한 기본 요청/제한 설정\n

    제한 범위에 대해 자세히 알아보려면 여기에서 Kubernetes의 공식 문서를 방문하세요.

    이 도움말에서는 제한 범위를 만들고 컨테이너 및 포드에서 사용하는 CPU 리소스의 최소값과 최대값을 설정하는 방법을 알아봅니다. CPU에서 제한 및 요청이 있는 다양한 시나리오를 볼 수 있습니다.

    전제 조건

    1. 워커 노드가 1개 이상 있는 Kubernetes 클러스터.
      Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n

    우리는 무엇을 할 것인가?

    1. 기본 네임스페이스에 LimitRange를 만듭니다.
    2. 기본 네임스페이스에서 CPU 제한 및 범위를 사용하여 Pod 생성\n

    기본 네임스페이스에 LimitRange 만들기

    기본 네임스페이스에서 제한 범위를 정의하는 파일을 만듭니다.

    vim set-limit-range.yml
    apiVersion: v1
    kind: LimitRange
    metadata:
      name: set-limit-range
    spec:
      limits:
      - max:
          cpu: "800m"
        min:
          cpu: "200m"
        type: Container

    기본 네임스페이스에서 기존 제한 범위 목록을 가져오고 위 단계에서 만든 파일을 사용하여 목록을 만듭니다.

    kubectl get limitrange
    kubectl create -f set-limit-range.yml
    kubectl get limitrange
    kubectl describe limitrange set-limit-range

    위의 스크린샷에서 CPU를 "Min=200m" 및 "Max=800m"로 정의하는 제한 범위를 생성한 것을 볼 수 있습니다.

    즉, 기본 네임스페이스의 pod는 CPU가 \Min=200m 미만\ 및 \Max=800m 초과\일 수 없습니다.

    기본 네임스페이스에서 CPU 제한 및 범위를 사용하여 Pod 만들기

    한도가 있는 포드

    200m 이상 800m 미만의 CPU를 요청하는 pod 정의 만들기

    vim pod-with-cpu-within-range.yml
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-cpu-within-range
    spec:
      containers:
      - name: pod-with-cpu-within-range
        image: nginx
        resources:
          limits:
            cpu: "800m"
          requests:
            cpu: "500m"

    기존 포드를 나열하고 위 단계에서 만든 파일로 새 포드를 만듭니다.

    kubectl get pods
    kubectl create -f pod-with-cpu-within-range.yml
    kubectl get pods
    kubectl describe pod pod-with-cpu-within-range

    위의 스크린샷에서 정의된 CPU 요청 및 제한으로 포드가 생성된 것을 볼 수 있습니다.

    CPU가 더 많은 포드:

    이번에는 CPU 제한이 1.5, 즉 800m 이상인 포드를 만들 수 있습니다.

    vim pod-with-cpu-more-than-limit.yml
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-cpu-more-than-limit
    spec:
      containers:
      - name: pod-with-cpu-more-than-limit
        image: nginx
        resources:
          limits:
            cpu: "1.5"
          requests:
            cpu: "500m"

    기존 포드 목록을 가져오고 제한 범위에서 정의한 "800m"보다 CPU 제한이 "1.5"인 새 포드를 생성해 보세요.

    kubectl get pods
    kubectl create -f pod-with-cpu-more-than-limit.yml

    위 스크린샷에서 Pod가 생성되지 않은 것을 확인할 수 있습니다.

    CPU가 적은 포드:

    이제 제한 범위에서 정의한 "200m" 미만인 "CPU=100m"를 요청하는 포드를 생성해 보겠습니다.

    vim pod-with-cpu-less-than-limit.yml
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-cpu-less-than-limit
    spec:
      containers:
      - name: pod-with-cpu-less-than-limit
        image: nginx
        resources:
          limits:
            cpu: "800m"
          requests:
            cpu: "100m"

    이제 기존 pod 목록을 가져오고 위의 정의 파일로 pod를 만들어 보세요.

    kubectl get pods
    kubectl create -f pod-with-cpu-less-than-limit.yml

    이번에도 제한 범위를 정의한 200m보다 적은 CPU=100m를 요청했기 때문에 포드 생성이 실패합니다.

    CPU가 없는 포드:

    이 시나리오에서는 CPU에 대한 요청이나 제한을 정의하지 않습니다.

    vim pod-with-no-cpu.yml
    apiVersion: v1
    kind: Pod
    metadata:
      name: pod-with-no-cpu
    spec:
      containers:
      - name: pod-with-no-cpu
        image: vish/stress

    이제 포드를 생성하고 해당 설명을 살펴보겠습니다.

    kubectl get pods
    kubectl create -f pod-with-no-cpu.yml
    kubectl describe pods pod-with-no-cpu

    위의 스크린샷에서 CPU에 대한 요청이나 제한을 지정하지 않으면 POD가 제한 범위에 지정된 제한과 동일한 CPU를 할당받는 것을 볼 수 있습니다. 제한 범위에 지정된 제한이 800m와 동일

    결론

    이 문서에서는 기본 네임스페이스에서 제한 범위를 만드는 단계를 살펴보았습니다. 그런 다음 Pod의 CPU 제한 및 요청에 대해 다양한 시나리오를 시도했습니다.