2장. 노드 작업
2.1. Pod 사용 링크 복사링크가 클립보드에 복사되었습니다!
Pod는 하나의 호스트에 함께 배포되는 하나 이상의 컨테이너이자 정의, 배포, 관리할 수 있는 최소 컴퓨팅 단위입니다.
2.1.1. Pod 이해 링크 복사링크가 클립보드에 복사되었습니다!
Pod는 컨테이너에 대한 머신 인스턴스(실제 또는 가상)와 대략적으로 동일합니다. 각 Pod에는 자체 내부 IP 주소가 할당되므로 해당 Pod가 전체 포트 공간을 소유하고 Pod 내의 컨테이너는 로컬 스토리지와 네트워킹을 공유할 수 있습니다.
Pod에는 라이프사이클이 정의되어 있으며 노드에서 실행되도록 할당된 다음 컨테이너가 종료되거나 기타 이유로 제거될 때까지 실행됩니다. Pod는 정책 및 종료 코드에 따라 종료 후 제거되거나 컨테이너 로그에 대한 액세스를 활성화하기 위해 유지될 수 있습니다.
OpenShift Container Platform에서는 대체로 Pod를 변경할 수 없는 것으로 취급합니다. 실행 중에는 Pod 정의를 변경할 수 없습니다. OpenShift Container Platform은 기존 Pod를 종료한 후 수정된 구성이나 기본 이미지 또는 둘 다 사용하여 Pod를 다시 생성하는 방식으로 변경 사항을 구현합니다. Pod를 다시 생성하면 확장 가능한 것으로 취급되고 상태가 유지되지 않습니다. 따라서 일반적으로 Pod는 사용자가 직접 관리하는 대신 상위 수준의 컨트롤러에서 관리해야 합니다.
OpenShift Container Platform 노드 호스트당 최대 Pod 수는 클러스터 제한을 참조하십시오.
복제 컨트롤러에서 관리하지 않는 베어 Pod는 노드 중단 시 다시 예약되지 않습니다.
2.1.2. Pod 구성의 예 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Container Platform에서는 하나의 호스트에 함께 배포되는 하나 이상의 컨테이너이자 정의, 배포, 관리할 수 있는 최소 컴퓨팅 단위인 Pod의 Kubernetes 개념을 활용합니다.
다음은 Pod 정의의 예입니다. 이 예제에서는 Pod의 다양한 기능을 보여줍니다. 대부분 다른 주제에서 설명하므로 여기에서는 간단히 언급합니다.
Pod
오브젝트 정의(YAML)
- 1
- Pod는 단일 작업에서 Pod 그룹을 선택하고 관리하는 데 사용할 수 있는 라벨을 하나 이상 사용하여 "태그를 지정"할 수 있습니다. 라벨은
metadata
해시의 키/값 형식으로 저장됩니다. - 2
- Pod는 가능한 값
Always
,OnFailure
,Never
를 사용하여 정책을 재시작합니다. 기본값은Always
입니다. - 3
- OpenShift Container Platform은 컨테이너에 대한 보안 컨텍스트를 정의합니다. 보안 컨텍스트는 권한 있는 컨테이너로 실행하거나 선택한 사용자로 실행할 수 있는지의 여부 등을 지정합니다. 기본 컨텍스트는 매우 제한적이지만 필요에 따라 관리자가 수정할 수 있습니다.
- 4
containers
는 하나 이상의 컨테이너 정의로 이루어진 배열을 지정합니다.- 5
- 이 컨테이너는 컨테이너 내에서 외부 스토리지 볼륨이 마운트되는 위치를 지정합니다.
- 6
- Pod에 제공할 볼륨을 지정합니다. 지정된 경로에 볼륨을 마운트합니다. 컨테이너 루트,
/
또는 호스트와 컨테이너에서 동일한 경로에 마운트하지 마십시오. 컨테이너가 호스트/dev/pts
파일과 같이 충분한 권한이 있는 경우 호스트 시스템이 손상될 수 있습니다./host
를 사용하여 호스트를 마운트하는 것이 안전합니다. - 7
- Pod의 각 컨테이너는 자체 컨테이너 이미지에서 인스턴스화됩니다.
- 8
- Pod는 사용할 컨테이너에서 사용할 수 있는 스토리지 볼륨을 정의합니다.
파일 수가 많은 영구 볼륨을 Pod에 연결하면 해당 Pod가 실패하거나 시작하는 데 시간이 오래 걸릴 수 있습니다. 자세한 내용은 OpenShift에서 파일 수가 많은 영구 볼륨을 사용하는 경우 Pod를 시작하지 못하거나 "Ready" 상태를 달성하는 데 과도한 시간이 걸리는 이유를 참조하십시오.
이 Pod 정의에는 Pod가 생성되고 해당 라이프사이클이 시작된 후 OpenShift Container Platform에 의해 자동으로 채워지는 특성은 포함되지 않습니다. Kubernetes Pod 설명서에는 Pod의 기능 및 용도에 대한 세부 정보가 있습니다.
2.1.3. 리소스 요청 및 제한 이해 링크 복사링크가 클립보드에 복사되었습니다!
"Pod 구성 예"와 같이 Pod 사양을 사용하거나 Pod 제어 오브젝트에 대한 사양을 사용하여 Pod에 대한 CPU 및 메모리 요청 및 제한을 지정할 수 있습니다.
CPU 및 메모리 요청 은 Pod에서 실행해야 하는 최소한의 리소스를 지정하여 OpenShift Container Platform에서 충분한 리소스가 있는 노드에서 Pod를 예약할 수 있도록 지원합니다.
CPU 및 메모리 제한은 Pod에서 사용할 수 있는 최대 리소스 양을 정의하여 Pod에서 과도한 리소스를 소비하지 않고 동일한 노드의 다른 Pod에 영향을 미칠 수 있습니다.
CPU 및 메모리 요청 및 제한은 다음 원칙을 사용하여 처리됩니다.
CPU 제한은 CPU 제한을 사용하여 적용됩니다. 컨테이너가 CPU 제한에 도달하면 커널은 컨테이너 제한으로 지정된 CPU에 대한 액세스를 제한합니다. 따라서 CPU 제한은 커널이 적용하는 하드 제한입니다. OpenShift Container Platform을 사용하면 컨테이너가 장기간에 걸쳐 CPU 제한을 초과할 수 있습니다. 그러나 컨테이너 런타임은 과도한 CPU 사용을 위해 Pod 또는 컨테이너를 종료하지 않습니다.
CPU 제한 및 요청은 CPU 단위로 측정됩니다. 하나의 CPU 단위는 노드가 물리적 호스트인지 아니면 물리적 시스템 내에서 실행되는 가상 시스템인지에 따라 하나의 물리적 CPU 코어 또는 1개의 가상 코어와 동일합니다. 소수 요청은 허용됩니다. 예를 들어 CPU 요청이
0.5
인 컨테이너를 정의할 때1.0
CPU를 요청한 경우보다 절반의 CPU 시간을 요청합니다. CPU 단위의 경우0.1
은100m
에 해당하며 100밀리코어 또는 100밀리코어로 읽을 수 있습니다. CPU 리소스는 항상 절대 리소스이며 상대 양이 아닙니다.참고기본적으로 Pod에 할당할 수 있는 최소 CPU 양은 10 mCPU입니다. Pod 사양에서 10mCPU 미만의 리소스 제한을 요청할 수 있습니다. 그러나 Pod에는 여전히 10 mCPU가 할당됩니다.
메모리 제한은 OOM(메모리 부족) 종료를 사용하여 커널에 의해 적용됩니다. 컨테이너에서 메모리 제한을 초과하는 경우 커널은 해당 컨테이너를 종료할 수 있습니다. 그러나 종료는 커널이 메모리 부족을 감지할 때만 발생합니다. 따라서 메모리를 과도하게 할당하는 컨테이너는 즉시 종료되지 않을 수 있습니다. 즉, 메모리 제한이 반응적으로 적용됩니다. 컨테이너는 메모리 제한보다 많은 메모리를 사용할 수 있습니다. 이 경우 컨테이너가 종료될 수 있습니다.
메모리를 일반 정수로 표현하거나 이러한 수량 접미사 중 하나를 사용하여 고정 소수점 숫자로 표현할 수 있습니다.
E
,P
,T
,G
,M
또는k
.Ei
,Pi
,Ti
,Gi
,Mi
또는Ki
와 같은 2 개의 전원을 사용할 수도 있습니다.
Pod가 실행 중인 노드에 사용 가능한 리소스가 충분한 경우 컨테이너에서 요청한 것보다 더 많은 CPU 또는 메모리 리소스를 사용할 수 있습니다. 그러나 컨테이너는 해당 제한을 초과할 수 없습니다. 예를 들어 컨테이너 메모리 요청을 256MiB
로 설정하고 해당 컨테이너가 8GiB
메모리가 있는 노드에 예약되고 다른 Pod가 없는 Pod에 있는 경우 컨테이너에서 요청된 256MiB
보다 많은 메모리를 사용하려고 시도할 수 있습니다.
이 동작은 CPU 및 메모리 제한에는 적용되지 않습니다. 이러한 제한은 kubelet 및 컨테이너 런타임에 의해 적용되며 커널에 의해 적용됩니다. Linux 노드에서 커널은 cgroup을 사용하여 제한을 적용합니다.
Linux 워크로드의 경우 대규모 페이지 리소스를 지정할 수 있습니다. 대규모 페이지는 노드 커널이 기본 페이지 크기보다 훨씬 큰 메모리 블록을 할당하는 Linux별 기능입니다. 예를 들어 기본 페이지 크기가 4KiB인 시스템에서 더 높은 제한을 지정할 수 있습니다. Huge Page에 대한 자세한 내용은 "Huge Page"를 참조하십시오.