[Cloud] 쿠버네티스(Kubernetes, k8s) 구성 요소
본문 바로가기
IT/Cloud

[Cloud] 쿠버네티스(Kubernetes, k8s) 구성 요소

by 로진김 2021. 6. 24.

 쿠버네티스의 구성 요소에는 전반적인 결정을 수행하고, 이벤트 감지와 반응을 하는 'Control Plane Component'과 동작 중인 Pod를 유지하고, 런타임 환경을 제공하는 'Node Component', 그리고 k8s의 자원을 활용하여 클러스터 기능을 구현하는 'Add-On Component'가 있습니다. 이들에 대해서 각각 세세하게 알아보겠습니다.

 

쿠버네티스 컴포넌트


1. Control Plane Component(Master Node Component)

  • kube-apiserver : Control Plane Component와 Node Component 간의 요청을 처리하며, 클러스터로 요청이 왔을 때 그 요청이 유효한지 검증합니다. 그리고 쿠버네티스로의 모든 요청은 apiserver를 통해 다른 곳으로 전달될 수 있으며 수평 확장 설계가 되어 있어서 여러 대의 apiserver를 두고 처리할 수 있는 HA 구성이 가능합니다.
  • kube-scheduler : node가 배정되지 않은 새로 생성된 pod를 감지 즉, 실행할 node를 선택합니다. scheduler가 스케줄링할 때, 리소스 요구사항, 워크로드 간 간섭(pod 설치 시 간섭 여부), 제약사항, 데드라인 등을 고려합니다.

      스케줄링 단계

      1) filtering : pod가 요구하는 리소스 가용 자원이 남아 있는 node 집합을 선정하여 pod를 스케줄링하기 적합한               node를 선정합니다.

      2) Scoring : filtering 후에 남은 node에 점수를 부여하여 가장 높은 node를 선택합니다. 

  • kube-controller-manager : 컨트롤러를 구성하는 master 상의 component로, Node, Replication, Endpoint, Service Account & Token Controller가 있습니다.

     1) Node Controller : node에 장애가 발생하면 통지하고 대응합니다.

     2) Replication Controller : 모든 Replication Object에 설정한 pod 개수를 유지합니다.

     3) Endpoint Controller : Pod와 Service를 연결하는 매개체입니다.

     4) Service Account & Token Controller : 쿠버네티스에서 관리하는 Namespace에 대한 계정이고, API 접근 토큰을            만듭니다.

  • ETCD : 모든 클러스터 데이터를 저장하는 쿠버네티스의 저장소로 (Key-Value) 방식으로 저장합니다. 모든 데이터는 apiserver를 통해 ETCD로 저장됩니다.

2. Node Component

  • kubelet : Pod 내에서 컨테이너가 동작하도록 Pod의 생성, 관리, 삭제를 담당합니다. 각 노드의 Docker의 상태를 체크하여 관리합니다. 그러나 k8s를 통해 생성하지 않은 컨테이너는 관리하지 않습니다.
  • kube-proxy : node의 네트워크 규칙을 유지하는 역할을 하며, node에 들어온 네트워크 규칙을 Pod까지 전달하는 역할을 합니다. 이를 실현하기 위해, CNI와 네트워크 인터페이스 서드파티가 필요합니다. 기본적으로 적용하지 않고, Calico와 같은 CNI를 사용합니다.
  • Container Runtime : k8s에서 Docker, Containerd, CRI-O, gVisitor 등의 런타임 엔진을 지원합니다.

3. Add-On Component

Add-On Component도 Control Plane Component와 Node Component처럼 kube-system namespace에 해당합니다.

  • Network : ACI, Calico, Canal, Flannel, Cilium,......
  • DNS : 구성 환경 내 다른 DNS 서버와 k8s 서비스를 위해 DNS 레코드를 제공합니다.
  • Web UI : k8s에서 web UI를 제공하지 않아 add-on 할 수 있습니다.
  • Container Resource Monitoring : 모니터링을 제대로 하기 위한 add-on이 있습니다. 기본적으로 제공하는 모니터링이 없고, 불편합니다.
  • Cluster Logging : k8s에서는 최소한의 기능만 제공하고, 검색/열람 인터페이스와 함께 로그 저장소에 컨테이너의 로그를 저장합니다. 주로 ELK(ElasticSearch, Logstash, Kibana)를 사용합니다.

 

 이상으로 쿠버네티스 컴포넌트에 대해 정리를 해보았습니다. 제가 공부한 내용을 바탕으로 정리한 내용이라 틀린 정보가 있을 수도 있습니다. 잘못된 내용은 댓글 부탁드립니다.

반응형