DevOps/K8S

[k8s] 클러스터의 주요 구성 요소와 문제 발생 시 영향

kyoulho 2024. 8. 29. 20:35

Kubernetes 클러스터는 제어 평면(Control Plane)과 워커 노드(Worker Node)로 구성되어 있으며, 각 노드는 클러스터의 안정적 운영을 위해 중요한 역할을 수행한다. 클러스터의 주요 구성 요소로는 Kubelet, ContainerD, 스케줄러(Scheduler), 그리고 제어 평면의 각 요소가 있다. 다음은 시스템 서비스로 실행되며 systemctl로 관리되기 때문에 문제 발생 시 영향을 미칠 수 있는 요소들이다

 

제어 평면(Control Plane)


제어 평면은 마스터 노드에서 실행되며 클러스터의 상태를 관리하고 조정하는 역할을 한다. 제어 평면의 주요 구성 요소는 다음과 같다.

API 서버 (kube-apiserver)

  • 역할: 클러스터의 모든 요청을 처리하고, 클러스터 상태를 저장하는 etcd와 통신한다. 클러스터 상태를 조회하고, 새로운 작업을 제출한다.
  • 문제 발생 시 영향:
    • 클러스터의 상태 변경 요청이 처리되지 않아, 서비스 업데이트, 배포, 삭제 등이 이루어지지 않을 수 있다.
    • 클러스터 상태의 불일치로 인해, 원활한 상태 조정 및 자동 복구가 어려워질 수 있다.

스케줄러 (kube-scheduler)

  • 역할: 생성된 파드를 적절한 워커 노드에 할당하고 자원 상태를 고려하여 파드를 배치한다.
  • 문제 발생 시 영향:
    • 새로운 파드가 적절한 노드에 배치되지 않아, 서비스가 중단되거나 응답 속도가 느려질 수 있다.
    • 리소스가 균등하게 분배되지 않아 클러스터 효율성이 저하될 수 있다.

컨트롤러 매니저 (kube-controller-manager)

  • 역할: 클러스터의 상태를 원하는 상태로 유지하기 위해 다양한 컨트롤러를 실행한다.
  • 문제 발생 시 영향:
    • 파드의 상태가 원래 설정한 대로 유지되지 않으며, 복제본 수나 상태가 불일치할 수 있다.

etcd

  • 역할: 클러스터의 모든 상태 정보를 저장하는 분산 키-값 저장소이다.
  • 문제 발생 시 영향:
    • 클러스터의 상태 정보가 손실되거나 접근할 수 없게 되어, 클러스터의 상태 조정 및 복구가 어려워질 수 있다.

 

워커 노드


Kubelet

  • 역할: 워커 노드에서 실행되는 에이전트로, 노드의 모든 Pod를 모니터링하고 관리한다. API 서버와 상호작용하여 노드 상태를 보고하고 파드를 실행한다.
  • 문제 발생 시 영향:
    • 파드 상태 관리 불가: Kubelet이 중지되면, 파드의 상태를 모니터링하거나 재시작할 수 없다.
    • 노드 상태 보고 실패: Kubelet의 보고가 중단되면 노드가 "NotReady" 상태로 표시되고, 자원 부족 문제로 이어질 수 있다.

ContainerD

  • 역할: 컨테이너 이미지 관리, 컨테이너 라이프 사이클 관리, 컨테이너 런타임 인터페이스 제공, 리소스 관리, 로그 및 상태 관리 등을 수행한다.
  • 문제 발생 시 영향:
    • 새로운 파드 실행 불가: ContainerD가 중지되면 새로운 파드를 생성하거나 기존 파드를 재시작할 수 없다.
    • 이미 실행 중인 파드의 불안정성: 실행 중인 파드는 계속 동작할 수 있으나, 리소스 관리나 로그 수집에서 문제가 발생할 수 있다.
    • 노드 리소스 관리 문제: ContainerD가 중지되면 노드의 리소스 사용이 비효율적으로 되어 서비스 장애로 이어질 수 있다.

 

마스터 노드


ContainerD

  • 역할: 마스터 노드에서 실행 중인 API 서버, 스케줄러, 컨트롤러 매니저 등과 관련된 컨테이너를 관리하고, 제어 평면의 안정성을 유지한다.
  • 문제 발생 시 영향:
    • 이미 실행 중인 컨트롤 플레인 구성 요소: ContainerD가 중지되더라도 기존 구성 요소는 계속 동작할 수 있지만, 새로운 구성 요소나 파드의 시작은 실패할 수 있다.
    • 장기적인 안정성 저하: API 서버와 같은 중요한 구성 요소의 재시작이나 새로운 노드 추가 시 문제가 발생할 수 있다.
    • 디버깅 및 문제 해결의 어려움: ContainerD 중지 상태에서 로그 수집 등이 제한되어 문제 해결이 어려울 수 있다.

'DevOps > K8S' 카테고리의 다른 글

[k8s] DNS  (1) 2024.09.02
[k8s] Volume  (0) 2024.09.02
[k8s] Deployment  (0) 2024.08.29
[k8s] Pod  (0) 2024.08.29
[k8s] NodePort  (0) 2024.08.29