Kubernetes 리소스 제한 설정

Kubernetes Lisoseu Jehan Seoljeong



리소스 제한은 컨테이너가 너무 많은 리소스를 소비하거나 리소스 고갈로 인해 응답하지 않게 되므로 Kubernetes 컨테이너 오케스트레이션의 중요한 부분입니다. 이 문서에서는 Kubernetes 컨테이너 리소스 제한을 설정하여 이점을 극대화하고 애플리케이션을 최대한 활용하는 방법에 대한 가이드를 제공합니다. 모든 서비스가 원활하게 실행되도록 몇 가지 간단한 단계만으로 컨테이너 리소스를 빠르고 쉽게 구성하고 관리하는 방법을 알아보세요.

Kubernetes에서 컨테이너 리소스 제한 설정

컨테이너 리소스 제한은 사용자가 컨테이너가 소비할 수 있는 리소스 수를 관리할 수 있도록 하는 Kubernetes의 필수 요소입니다. 과부하를 피하고 애플리케이션 성능을 보장하기 위해 이는 프로덕션 환경에서 특히 중요합니다. 다음은 컨테이너 리소스 제한을 설정하는 몇 가지 전문가 팁입니다.







컨테이너에 필요한 리소스를 결정하여 시작하십시오. 시스템 사용량을 분석하고 메모리 및 CPU 제한을 조정해야 하는 컨테이너를 결정합니다. 리소스 제한을 설정할 때 기본 노드를 고려하는 것도 중요합니다. 제한을 너무 높게 또는 너무 낮게 설정하면 노드가 충돌 없이 다른 애플리케이션을 실행하지 못할 수 있습니다. 다음으로 버스트 가능 또는 버스트 불가능 중 어떤 유형의 제한을 사용할지 결정합니다. 이제 Kubernetes 컨테이너 리소스 제한을 설정하기 위해 따라야 할 필수 단계를 살펴보겠습니다. 단계로 이동하기 전에 몇 가지 필수 전제 조건이 있습니다.



전제 조건

단계로 이동하기 전에 시스템이 전제 조건의 모든 요구 사항을 충족하는지 확인하십시오. Linux/Unix 환경이 작동하려면 Ubuntu 20.04 또는 기타 최신 버전, Kubernetes 클러스터, kubectl 명령을 사용하기 위한 Kubectl CLI, 클러스터 통신, 개발 환경 관리, minikube 또는 기타 Kubernetes 플레이그라운드가 있어야 합니다. 클러스터. 다음 섹션으로 진행하기 전에 이러한 도구를 아직 설치하지 않은 경우 설치하십시오. 이제 Kubernetes 컨테이너 리소스 제한을 설정하는 방법에 대한 단계별 가이드로 이동합니다.



Kubernetes 리소스 제한을 설정하는 방법

Kubernetes 컨테이너 리소스 제한을 설정하는 것은 Kubernetes 클러스터를 관리하고 유지하는 데 중요한 부분입니다. 적절한 리소스 제한이 있으면 다른 컨테이너 또는 전체 클러스터의 성능을 저하시키지 않고 각 컨테이너가 최적으로 실행됩니다. 이는 CPU, 메모리, 임시 저장소 등에 대한 리소스 요청 및 제한을 설정하여 수행할 수 있습니다. Kubernetes 컨테이너 리소스 제한을 올바르게 설정하는 방법은 다음과 같습니다.





1단계: Minikube 시작

Minikube 클러스터는 애플리케이션이나 명령을 실행할 수 있도록 활성 상태여야 합니다. 제대로 작동하는지 확인하려면 다음 명령을 사용하십시오.



> 미니큐브 시작

2단계: 메트릭 서버 활성화

이 단계에서는 메트릭 서버를 활성화할 수 있는 명령을 공유합니다. 명령은 다음과 같이 제공됩니다.

> minikube addons ~할 수 있게 하다 메트릭 서버

3단계: Metrics Server가 활성 상태인지 확인

다음 명령을 입력하여 메트릭 서버가 활성인지 여부를 확인하십시오.

> kubectl API 서비스 받기

이전 이미지에서 볼 수 있듯이 리소스 메트릭 API에 액세스할 수 있는 경우 메트릭스.k8s.io에 대한 참조가 포함되어 있습니다.

4단계: 네임스페이스 생성

리소스를 유지하려면 클러스터의 나머지 부분과 별도로 이 연습을 위한 네임스페이스를 만듭니다. 이제 네임스페이스를 만드는 방법을 보여줍니다. 수행하는 명령은 다음과 같습니다.

> kubectl create namespace ABC

5단계: 구성 파일 생성

컨테이너에서 포드를 구성하는 데 사용하는 YAML 구성 파일이 이 단계에서 생성됩니다. 이를 수행하는 데 사용되는 명령은 다음과 같습니다.

> 나노 reqlimit.yaml

여기에서 CPU 제한과 함께 CPU 요청을 포함해야 합니다. 리소스:제한을 포함하여 CPU 제한을 정의합니다. 이 경우 단일 컨테이너가 포함된 포드가 생성됩니다. 컨테이너에는 0.5 CPU 요청 제한과 최대 1 CPU가 있습니다. Pod의 구성 파일은 여기에서 사용할 수 있습니다. 보시다시피 구성 파일의 args 섹션에는 컨테이너가 시작될 때 사용하는 인수가 포함되어 있습니다. 컨테이너는 -cpus '2' 매개변수를 통해 2개의 CPU를 활용하도록 지시받습니다.

배포 및 포드와 같은 Kubernetes에서 리소스를 생성할 때 각 포드 또는 배포에 필요한 최소 리소스 수(요청)와 허용되는 최대 리소스 수(제한)를 지정하는 것이 중요합니다. 이렇게 하면 하나의 포드가 너무 많은 리소스를 소비하여 다른 활성 포드가 성능 저하를 겪거나 클러스터에서 사용 가능한 리소스 부족으로 충돌이 발생할 수 있는 것을 방지할 수 있습니다.

6단계: 포드 생성

이제 다음 명령을 사용하여 포드를 생성하는 방법을 보여줍니다.

> kubectl 생성 -에프 reqlimit.yaml

이전에 제공된 출력에서 ​​'cpu-demo'라는 포드가 생성되었음을 알 수 있습니다.

7단계: 포드 확인

이 단계에서는 다음 명령을 사용하여 생성된 포드가 활성 상태인지 확인합니다.

> kubectl get pod CPU 데모 --네임스페이스 =abc

8단계: 포드 세부 정보 보기

이제 Pod에 대한 자세한 정보를 보려면 다음 명령을 실행해야 합니다.

> kubectl get pod CPU 데모 --산출 =yaml --네임스페이스 =abc

9단계: 포드 삭제

여기서는 Pod를 삭제하여 리소스를 정리하는 방법을 보여줍니다. 이 목적으로 사용되는 명령은 다음과 같습니다.

> kubectl 삭제 포드 cpu-데모 --네임스페이스 =abc

10단계: 구성 파일 생성

이 단계에서는 구성 파일을 만듭니다. 이 파일은 노드에 상당히 큰 CPU 요청을 지정합니다.

> 나노 reqlimit2

단일 컨테이너가 포함된 구성 파일은 여기에서 찾을 수 있습니다. 컨테이너는 클러스터가 합리적으로 제공할 수 있는 노드보다 많은 CPU 100개를 요구합니다.

11단계: Cre 테 더 포드

이 단계에서는 다음 명령을 사용하여 포드를 생성합니다.

> kubectl 생성 -에프 reqlimit2.yaml

12단계: 포드 상태 보기

이제 st를 볼 수 있습니다. 여기에 첨부된 명령을 사용하여 포드의 tus:

출력은 포드 상태가 보류 중임을 보여줍니다.

13단계: 포드 정보 보기

이제 여기에서 주어진 명령으로 이벤트를 포함하여 Pod에 대한 자세한 정보를 봅니다.

이벤트 섹션으로 이동하여 컨테이너가 예약되었는지 확인하십시오.

예약할 수 없고 그 이유가 CPU 리소스 부족인 경우 노드를 삭제할 수 있습니다. 노드를 삭제하는 방법은 다음 단계에서 설명합니다.

단계 14: 노드 삭제

다음 명령을 사용하여 노드를 삭제할 수 있습니다.

> kubectl delete pod cpu-demo- 2 --네임스페이스 =abc

컨테이너 리소스 제한이 성능에 미치는 영향은 무엇입니까?

Kubernetes 컨테이너 기술의 인기가 높아짐에 따라 리소스 제한이 성능에 미치는 영향을 이해하는 것이 중요합니다. Kubernetes 컨테이너 내부에 리소스 제한을 설정하면 애플리케이션이 최적의 수준에서 실행되고 호스트 서버에서 너무 많은 리소스를 소비하지 않도록 하는 데 도움이 될 수 있습니다. 리소스를 제한함으로써 낭비되는 중복 프로세스를 방지하고 사용률로 인한 시스템 충돌을 방지하고 컨테이너 성능을 최적화할 수 있습니다.

Kubernetes 컨테이너에서 이러한 리소스 제한을 설정하려면 cgroups(제어 그룹)라는 도구를 사용해야 합니다. Cgroup은 관리자가 개별 컨테이너에 대한 CPU 주기 또는 메모리 사용량과 같은 리소스를 제한할 수 있도록 합니다. 최대 파일 크기 또는 컨테이너당 네트워크 대역폭 사용량과 같은 다른 매개변수를 설정할 수도 있습니다.

결론

Kubernetes 컨테이너 리소스 제한을 설정하는 것은 클라우드 컴퓨팅 환경 관리의 중요한 부분입니다. 적절한 구성을 사용하면 각 컨테이너가 필요한 리소스에 액세스할 수 있지만 다른 컨테이너나 시스템에 영향을 미치지 않도록 할 수 있습니다. 이를 통해 컴퓨팅 리소스를 보다 효율적이고 비용 효율적으로 사용할 수 있습니다. 또한 컨테이너가 사용할 수 있는 메모리 또는 CPU의 양을 제한하여 폭주 프로세스 또는 예상치 못한 사용량 급증으로 인해 중단이 발생하는 것을 방지할 수 있습니다.