7장. 컨테이너 작업


7.1. 컨테이너 이해

OpenShift Container Platform 애플리케이션의 기본 단위는 컨테이너라고 합니다. Linux 컨테이너 기술은 실행 중인 프로세스를 격리하여 지정된 리소스와만 상호 작용하도록 제한하기 위한 간단한 메커니즘입니다.

많은 애플리케이션 인스턴스는 서로의 프로세스, 파일, 네트워크 등을 보지 않으며 단일 호스트의 컨테이너에서 실행될 수 있습니다. 컨테이너를 임의의 워크로드에 사용할 수는 있지만 일반적으로 각 컨테이너는 웹 서버나 데이터베이스 같은 단일 서비스(흔히 “마이크로 서비스”라고 함)를 제공합니다.

Linux 커널은 수년간 컨테이너 기술을 위한 기능을 통합해 왔습니다. OpenShift Container Platform 및 Kubernetes는 다중 호스트 설치에서 컨테이너를 오케스트레이션하는 기능을 추가합니다.

7.1.1. 컨테이너 및 RHEL 커널 메모리 정보

RHEL(Red Hat Enterprise Linux) 동작으로 인해 CPU 사용량이 많은 노드의 컨테이너에서 예상보다 많은 메모리를 사용하는 것처럼 보일 수 있습니다. 메모리 사용량 증가는 RHEL 커널의 kmem_cache로 인한 것일 수 있습니다. RHEL 커널은 각 cgroup에 kmem_cache를 생성합니다. 성능 향상을 위해 kmem_cache에는 cpu_cache와 모든 NUMA 노드에 대한 노드 캐시가 포함됩니다. 이러한 캐시는 모두 커널 메모리를 사용합니다.

이러한 캐시에 저장된 메모리 양은 시스템에서 사용하는 CPU 수에 비례합니다. 결과적으로 CPU 수가 많을수록 이러한 캐시에 더 많은 양의 커널 메모리가 저장됩니다. 이러한 캐시의 커널 메모리 양이 늘어나면 OpenShift Container Platform 컨테이너가 구성된 메모리 제한을 초과하여 컨테이너가 종료될 수 있습니다.

커널 메모리 문제로 인한 컨테이너 손실을 방지하려면 컨테이너에서 메모리를 충분히 요청해야 합니다. 다음 공식을 사용하여 kmem_cache 에서 사용하는 메모리의 양을 추정할 수 있습니다. 여기서 nprocnproc 명령에서 보고하는 처리 단위의 수입니다. 컨테이너 요청의 하한은 이 값에 컨테이너 메모리 요구 사항을 더한 값이어야 합니다.

$(nproc) X 1/2 MiB

7.1.2. 컨테이너 엔진 및 컨테이너 런타임 정보

컨테이너 엔진 은 명령줄 옵션 및 이미지 가져오기를 포함하여 사용자 요청을 처리하는 소프트웨어입니다. 컨테이너 엔진은 하위 수준 컨테이너 런타임 라고도 하는 컨테이너 런타임을 사용하여 컨테이너 배포 및 운영에 필요한 구성 요소를 실행하고 관리합니다. 컨테이너 엔진 또는 컨테이너 런타임과 상호 작용할 필요가 없습니다.

참고

OpenShift Container Platform 문서에서는 컨테이너 런타임 이라는 용어를 사용하여 하위 수준 컨테이너 런타임을 참조합니다. 기타 문서는 컨테이너 엔진을 컨테이너 런타임으로 참조할 수 있습니다.

OpenShift Container Platform은 컨테이너 엔진으로 CRI-O를 사용하고 컨테이너 런타임으로 runC 또는 crun을 사용합니다. 기본 컨테이너 런타임은 runC입니다. 두 컨테이너 런타임 모두 OCI(Open Container Initiative) 런타임 사양을 준수합니다.

CRI-O는 운영 체제와 긴밀하게 통합되어 효율적이고 최적화된 Kubernetes 환경을 제공하는 Kubernetes 네이티브 컨테이너 엔진 구현입니다. CRI-O 컨테이너 엔진은 각 OpenShift Container Platform 클러스터 노드에서 systemd 서비스로 실행됩니다.

Docker에서 개발했으며 Open Container Project에서 유지 관리하는 runc는 Go로 작성된 경량의 이식 가능한 컨테이너 런타임입니다. Red Hat에서 개발한 crun은 C. OpenShift Container Platform 4.12에서 완전히 작성된 빠르고 낮은 메모리 컨테이너 런타임입니다. OpenShift Container Platform 4.12에서는 둘 중 하나를 선택할 수 있습니다.

중요

crun 컨테이너 런타임 지원은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.

crun에는 다음과 같은 runC에 대한 몇 가지 개선 사항이 있습니다.

  • 작은 바이너리
  • 더 빠른 처리
  • 메모리 공간 감소

runc는 crun에 비해 다음과 같은 몇 가지 이점이 있습니다.

  • 가장 많이 사용되는 OCI 컨테이너 런타임.
  • 프로덕션에서 더 긴 용량입니다.
  • CRI-O의 기본 컨테이너 런타임.

필요에 따라 두 컨테이너 런타임 간에 이동할 수 있습니다.

사용할 컨테이너 런타임 설정에 대한 자세한 내용은 CRI-O 매개변수를 편집하기 위해 ContainerRuntimeConfig CR 생성 을 참조하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.