클러스터의 쿠버네티스 네임스페이스, 리소스 할당량 및 QoS 제한

Kubernetes Logo

기본적으로, 쿠버네티스 클러스터의 모든 리소스는 기본 네임스페이스에 생성된다. 파드는 무제한 CPU 및 메모리 요청/제한으로 실행됩니다. A 쿠버네티스 네임스페이스 를 사용하면 생성된 리소스를 논리적으로 이름이 지정된 그룹으로 분할할 수 있습니다. 각 네임스페이스는 다음을 제공합니다:

  • 고유한 범위 이름 충돌을 피하기 위한 리소스
  • 정책신뢰할 수 있는 사용자에게 적절한 권한을 보장합니다.
  • 지정할 수 있는 기능 리소스 소비에 대한 제약 조건

이를 통해 쿠버네티스 클러스터는 여러 그룹이 리소스를 공유하고 각 그룹마다 다른 수준의 QoS를 제공할 수 있습니다. 한 네임스페이스에서 생성된 리소스는 다른 네임스페이스에서 숨겨진다. 여러 네임스페이스를 생성할 수 있으며, 각각 다른 제약 조건이 적용될 수 있다.

기본 쿠버네티스 네임스페이스

기본적으로 쿠버네티스 클러스터에서 사용자가 생성한 각 리소스는 다음과 같은 기본 네임스페이스에서 실행된다. 기본값.

모든 파드, 서비스 또는 리플리케이션 컨트롤러가 이 네임스페이스에 생성된다. 큐브 시스템 네임스페이스는 쿠버네티스 클러스터에서 생성한 리소스를 위해 예약되어 있다. 네임스페이스에 대한 자세한 내용은 여기에서 확인할 수 있다:

이 설명에는 리소스 할당량(있는 경우)과 리소스 제한 범위가 표시됩니다. 이제 Couchbase 복제 컨트롤러를 다음과 같이 만들어 보겠습니다:

기존 복제 컨트롤러를 확인합니다:

기본적으로 사용자 네임스페이스에 있는 리소스만 표시됩니다. 모든 네임스페이스의 리소스는 다음을 사용하여 표시할 수 있습니다. --모든 네임스페이스 옵션을 선택합니다:

보시다시피 아룽업타/카우치베이스 이미지가 실행되는 기본값 네임스페이스에서 실행됩니다. 다른 모든 리소스는 큐브 시스템 네임스페이스. 이 복제 컨트롤러의 컨텍스트를 확인해 보겠습니다:

다음을 찾아보세요. contexts.context.name 속성을 사용하여 기존 컨텍스트를 확인할 수 있습니다. 이것은 나중에 조작할 것입니다.

새 쿠버네티스 네임스페이스에서 리소스 생성하기

먼저 새 네임스페이스를 만들어 보겠습니다. 이 작업은 다음 구성 파일을 사용하여 수행할 수 있습니다:

네임스페이스는 다음과 같이 생성됩니다:

그런 다음 모든 네임스페이스를 쿼리하면 다음과 같은 결과가 나옵니다:

이 새 네임스페이스에서 다음을 사용하여 새 복제 컨트롤러를 만들 수 있습니다. --이름공간 옵션을 선택합니다:

모든 네임스페이스의 리소스 목록은 다음과 같습니다:

보시다시피, 다음과 같은 두 개의 복제 컨트롤러가 있습니다. 아룽업타/카우치베이스 이미지 - 하나 기본값 네임스페이스와 개발 네임스페이스.

기존 리소스에 대한 쿠버네티스 네임스페이스 설정하기

리소스가 이미 생성된 경우 네임스페이스를 할당할 수 있습니다. 이전에 만든 리소스에서 네임스페이스에 새 컨텍스트를 설정할 수 있습니다:

이제 컨텍스트 보기가 표시됩니다:

의 두 번째 속성은 context.context 배열은 새 컨텍스트가 생성되었음을 보여줍니다. 또한 현재 컨텍스트가 여전히 카우치베이스-온-쿠버네티스_쿠버네티스. 해당 컨텍스트에 네임스페이스가 지정되지 않았으므로 기본 네임스페이스에 속합니다. 컨텍스트를 변경합니다:

복제 컨트롤러 목록을 참조하세요:

분명히 이 컨텍스트에서 실행 중인 복제 컨트롤러는 없습니다. 이 새 네임스페이스에 새 복제 컨트롤러를 만들어 보겠습니다:

그리고 모든 네임스페이스의 복제 컨트롤러 목록을 확인하세요:

이제 두 가지를 볼 수 있습니다. 아룽업타/카우치베이스 두 개의 서로 다른 네임스페이스에서 실행되는 복제 컨트롤러.

네임스페이스에서 쿠버네티스 리소스 삭제하기

리소스 이름을 완전히 정규화하여 리소스를 삭제할 수 있습니다:

마찬가지로 다른 복제 컨트롤러도 다음과 같이 삭제할 수 있습니다:

마지막으로 모든 네임스페이스의 모든 복제 컨트롤러 목록을 확인하세요:

이렇게 하면 사용자가 만든 모든 복제 컨트롤러가 삭제된 것을 확인할 수 있습니다.

쿠버네티스 네임스페이스를 사용한 리소스 할당량 및 제한

각 네임스페이스에 리소스 할당량을 할당할 수 있다. 기본적으로 파드는 CPU 및 메모리 요청/제한이 무제한으로 실행됩니다. 쿼터를 지정하면 네임스페이스의 모든 파드에서 사용할 수 있는 클러스터 리소스의 양을 제한할 수 있다. 리소스 쿼터는 구성 파일을 사용하여 지정할 수 있다:

다음 리소스는 할당량 시스템에서 지원됩니다:

리소스 설명
cpu 총 요청된 CPU 사용량
메모리 총 요청된 메모리 사용량
포드 단계가 보류 중이거나 활성 상태인 활성 파드의 총 개수입니다.
서비스 총 서비스 수
복제 컨트롤러 총 복제 컨트롤러 수
리소스 할당량 총 리소스 할당량 수
비밀 총 비밀 개수
지속적 볼륨 클레임 총 영구 볼륨 클레임 수

이 리소스 할당량은 네임스페이스에서 만들 수 있습니다:

생성된 할당량은 다음과 같이 볼 수 있습니다:

이제 작동하는 복제 컨트롤러를 만들려고 합니다:

하지만 할당량을 다시 설명하면 다음과 같습니다:

이 복제 컨트롤러의 일부로 새 파드가 생성될 것으로 예상했지만 거기에 없습니다. 따라서 복제 컨트롤러에 대해 설명하겠습니다:

기본적으로 파드는 사용 가능한 모든 CPU와 메모리를 사용한다. 리소스 쿼터를 적용하려면 명시적인 값을 지정해야 한다. 또는 다음 구성 파일을 사용하여 파드의 기본값을 지정할 수 있다:

이는 파드에서 사용할 수 있는 CPU와 메모리를 제한합니다. 이러한 제한을 다음과 같이 적용해 보겠습니다:

이제 복제 컨트롤러를 다시 설명하면 다음과 같이 표시됩니다:

이것은 파드가 성공적으로 생성되었음을 보여줍니다. 이제 할당량을 설명할 때 올바른 값도 표시됩니다:

리소스 할당량 에서 이 값을 설정/업데이트하는 방법에 대한 자세한 내용을 확인하세요. 다른 할당량을 만들면 다음과 같은 오류가 발생합니다:

파드 생성 중 제한 지정

파드를 생성하는 동안에도 제한을 지정할 수 있다: 각 파드의 메모리 제한이 1g으로 제한되어 있다면, 유효한 파드 정의가 됩니다:

이는 파드가 0.5G의 메모리만 요청하기 때문이다. 그리고 잘못된 파드 정의가 있을 수 있다:

이는 파드가 2G의 메모리를 요청하기 때문이다. 이러한 파드를 생성하면 다음과 같은 오류가 발생합니다:

네임스페이스, 리소스 할당량 및 제한을 적용하여 여러 환경에서 클러스터를 공유할 수 있기를 바랍니다.

이 문서 공유하기
받은 편지함에서 카우치베이스 블로그 업데이트 받기
이 필드는 필수 입력 사항입니다.

작성자

게시자 Arun Gupta, 개발자 지원 부문 부사장, Couchbase

아룬 굽타는 Couchbase의 개발자 지원 담당 부사장입니다. 그는 Sun, Oracle, Red Hat에서 10년 이상 개발자 커뮤니티를 구축하고 이끌었습니다. 그는 콘텐츠, 마케팅 캠페인 및 프로그램의 전략, 계획 및 실행을 개발 및 실행하는 교차 기능 팀을 이끄는 데 있어 깊은 전문성을 보유하고 있습니다. 그 전에는 Sun에서 엔지니어링 팀을 이끌었으며 Java EE 팀의 창립 멤버입니다. Gupta는 기술에 관한 블로그 게시물을 2,000개 이상 작성했습니다. 40여 개국에서 수많은 주제에 대해 광범위한 강연 경험을 가지고 있으며, 3년 연속 JavaOne Rock Star로 선정되었습니다. 또한 미국에서 Devoxx4Kids 지부를 설립하여 어린이를 대상으로 한 기술 교육을 지속적으로 장려하고 있습니다. 기술에 관한 여러 권의 책을 저술했으며, 열렬한 마라토너이자 지구를 횡단하는 사람, Java 챔피언, JUG 리더, NetBeans 드림팀 멤버, Docker 캡틴이기도 한 그는 @arungupta에서 쉽게 만나볼 수 있습니다.

댓글 남기기

카우치베이스 카펠라를 시작할 준비가 되셨나요?

구축 시작

개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

카펠라 무료 사용

클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

연락하기

카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.