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 사용량, 상태 및 수명과 같은 노드에 대한 정보를 가져옵니다.
- 노드에서 실행 중인 포드를 나열합니다.
관리 작업
관리자는 여러 작업을 통해 OpenShift Container Platform 클러스터의 노드를 쉽게 관리할 수 있습니다.
-
노드 레이블 추가 또는 업데이트. 레이블은
Node
오브젝트에 적용되는 키-값 쌍입니다. 라벨을 사용하여 Pod 예약을 제어할 수 있습니다. -
CRD(사용자 정의 리소스 정의) 또는
kubeletConfig
오브젝트를 사용하여 노드 구성을 변경합니다. -
Pod 예약을 허용하거나 허용하지 않도록 노드를 구성합니다. 상태가
Ready
인 정상 작업자 노드는 기본적으로 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를 관리하는 데 권장되는 몇 가지 방법에 대한 자세한 내용은 네트워크 에지에서 원격 작업자 노드 사용을 참조하십시오.