1장. 노드 개요
1.1. 노드 정보
노드는 Kubernetes 클러스터의 가상 또는 베어 메탈 머신입니다. 작업자 노드는 포드로 그룹화된 애플리케이션 컨테이너를 호스팅합니다. 컨트롤 플레인 노드는 Kubernetes 클러스터를 제어하는 데 필요한 서비스를 실행합니다. OpenShift Container Platform에서 컨트롤 플레인 노드에는 OpenShift Container Platform 클러스터를 관리하기 위한 Kubernetes 서비스 이상이 포함되어 있습니다.
클러스터에서 안정적이고 정상적인 노드를 보유하는 것은 호스팅된 애플리케이션의 원활한 작동을 위한 필수 요소입니다. OpenShift Container Platform에서는 노드를 나타내는 Node
오브젝트를 통해 노드에 액세스, 관리 및 모니터링할 수 있습니다. OpenShift CLI(oc
) 또는 웹 콘솔을 사용하여 노드에서 다음 작업을 수행할 수 있습니다.
노드의 다음 구성 요소는 Pod의 실행을 유지 관리하고 Kubernetes 런타임 환경을 제공합니다.
- 컨테이너 런타임
- 컨테이너 런타임은 컨테이너 실행을 담당합니다. Kubernetes는 containerd, cri-o, rktlet 및 Docker와 같은 여러 런타임을 제공합니다.
- kubelet
- kubelet은 노드에서 실행되며 컨테이너 매니페스트를 읽습니다. 이렇게 하면 정의된 컨테이너가 시작되어 실행 중인지 확인합니다. kubelet 프로세스는 작업 상태와 노드 서버를 유지 관리합니다. kubelet은 네트워크 규칙 및 포트 전달을 관리합니다. kubelet은 Kubernetes에서만 생성된 컨테이너를 관리합니다.
- kube-proxy
- kube-proxy는 클러스터의 모든 노드에서 실행되며 Kubernetes 리소스 간의 네트워크 트래픽을 유지합니다. Kube-proxy를 사용하면 네트워킹 환경이 분리되어 액세스할 수 있습니다.
- DNS
- 클러스터 DNS는 Kubernetes 서비스에 대한 DNS 레코드를 제공하는 DNS 서버입니다. Kubernetes로 시작한 컨테이너는 DNS 검색에 이 DNS 서버를 자동으로 포함합니다.
읽기 작업
읽기 작업을 사용하면 관리자 또는 개발자가 OpenShift Container Platform 클러스터의 노드에 대한 정보를 가져올 수 있습니다.
- 클러스터의 모든 노드를 나열합니다.
- 메모리 및 CPU 사용량, 상태, 기간과 같은 노드에 대한 정보를 가져옵니다.
- 노드에서 실행 중인 Pod를 나열합니다.
관리 작업
관리자는 여러 작업을 통해 OpenShift Container Platform 클러스터에서 노드를 쉽게 관리할 수 있습니다.
-
노드 레이블을 추가하거나 업데이트합니다. 레이블은
Node
오브젝트에 적용되는 키-값 쌍입니다. 라벨을 사용하여 Pod 예약을 제어할 수 있습니다. -
CRD(사용자 정의 리소스 정의) 또는
kubeletConfig
오브젝트를 사용하여 노드 구성을 변경합니다. -
Pod 예약을 허용하거나 허용하지 않도록 노드를 구성합니다. 정상 상태의 작업자 노드는 컨트롤 플레인 노드가 없는 동안 기본적으로 Pod 배치를 허용합니다. 작업자 노드를 예약할 수 없고 컨트롤 플레인 노드를 예약할 수 없도록 구성하여 이 기본 동작을 변경할 수 있습니다.
-
system-reserved
설정을 사용하여 노드에 리소스를 할당합니다. OpenShift Container Platform에서 노드에 대한 최적의system-reserved
CPU 및 메모리 리소스를 자동으로 결정하도록 허용하거나 노드에 가장 적합한 리소스를 수동으로 결정하고 설정할 수 있습니다. - 노드의 프로세서 코어 수, 하드 제한 또는 둘 다에 따라 노드에서 실행할 수 있는 Pod 수를 구성합니다.
- Pod 유사성 방지를 사용하여 노드를 정상적으로 재부팅합니다.
- 컴퓨팅 머신 세트를 사용하여 클러스터를 축소하여 클러스터에서 노드를 삭제합니다. 베어 메탈 클러스터에서 노드를 삭제하려면 먼저 노드의 모든 Pod를 드레이닝한 다음 수동으로 노드를 삭제해야 합니다.
기능 개선 작업
OpenShift Container Platform을 사용하면 노드에만 액세스하고 관리할 수 있습니다. 관리자는 노드에서 다음 작업을 수행하여 클러스터를 보다 효율적이고 애플리케이션 친화적인 상태로 만들고 개발자에게 더 나은 환경을 제공할 수 있습니다.
- Node Tuning Operator를 사용하여 일정 수준의 커널 튜닝이 필요한 고성능 애플리케이션에 대한 노드 수준 튜닝을 관리합니다.
- 노드에서 TLS 보안 프로필을 활성화하여 kubelet과 Kubernetes API 서버 간의 통신을 보호합니다.
- 데몬 세트를 사용하여 노드에서 백그라운드 작업을 자동으로 실행합니다. 데몬 세트를 생성하고 사용하여 공유 스토리지를 생성하거나, 모든 노드에서 로깅 Pod를 실행하거나, 모든 노드에 모니터링 에이전트를 배포할 수 있습니다.
- 가비지 컬렉션을 사용하여 노드 리소스를 확보합니다. 종료된 컨테이너와 실행 중인 Pod에서 참조하지 않는 이미지를 제거하여 노드가 효율적으로 실행되고 있는지 확인할 수 있습니다.
- 노드 집합에 커널 인수를 추가합니다.
- 네트워크 엣지(원격 작업자 노드)에 작업자 노드를 갖도록 OpenShift Container Platform 클러스터를 구성합니다. OpenShift Container Platform 클러스터의 원격 작업자 노드 및 원격 작업자 노드에서 Pod를 관리하는 데 권장되는 몇 가지 접근 방식에 대한 자세한 내용은 네트워크 에지에서 원격 작업자 노드 사용을 참조하십시오.