Kubernetes 주요 컴포넌트

OneDayDev·2023년 1월 20일
0

K8s

목록 보기
2/12
post-thumbnail

K8s Components

이 문서는 공식 문서를 참고해서 만들어졌다.

쿠버네티스의 컴포넌트는 다음 세 가지로 구분할 수 있다.

  • Control Plane Components
  • Node Components
  • Addons

Control Plane Components

Control Plane Components는 실제 클러스터 전체를 관리한다.
다음 요소로 구성되어있다.

  • etcd
  • kube-apiserver
  • kube-scheduler
  • kube-proxy
  • kube-controller-manager
  • cloud-controller-manager

참고 - Creating Highly Available Clusters with kubeadm
위 참고 내용을 보면 인프라의 규모의 따라 적합하게 구성하는 과정을 소개한다. 과정은 두가지로 나뉘며 etcd를 컨트롤 플래인과 같은 위치에 두는 경우와 외부에 etcd 분리시켜 클러스터를 구성하는 과정이다.
이미지로 쉽게 이해하기 위해 여기를 참고하자.

etcd

  • key-value 저장소
  • Consensus 알고리즘 중 하나인 raft 알고리즘을 구현한 것
  • 쿠버네티스에서 필요한 모든 데이터를 저장하는 DB 역할
  • etcd 자체로도 꽤 안정적이지만 주기적인 백업을 권함. Backup 참고

kube-apiserver

  • 클러스터로 온 요청이 유효한지 검증한다.
  • 쿠버네티스에 보내는 모든 요청은 kube-apiserver를 이용해서 다른 컴포넌트로 전달한다.
  • 수평적으로 확장할 수 있도록 설계되었고 여러 서버에 여러 개의 kube-apiserver를 실행해 사용할 수 있다. 여러 apiserver를 사용하기에 traffic을 고르게 사용한다.

kube-scheduler

  • 새롭게 만든 파드를 자원 할당 가능한 노드에 실행한다.
  • resouce 요구사항이나 affinity, anti-affinity 만족 여부 등을 조건이 있는 경우 scheduler가 조건에 맞는 노드를 찾아서 실행합니다.

kube-controller-manager

  • Controller를 각각 실행하는 컴포넌트
  • 논리적으로 각각의 컨트롤러는 분리된 프로세스이지만 복잡성을 줄이기 위해서 하나로 컴파일되어 하나의 프로세스로 진행된다.
  • 몇 가지 컨트롤러 종류 : Node controller, Job controller, EndpointSlice controller, ServiceAccount controller ...

cloud-controller-manager

  • 클라우드 서비스와 연결해 관리하는 컴포넌트
  • 다음 컨트롤러가 클라우드에 종속성을 가진다
    Node controller, Route controller, Service controller, Volume Controller ...

Node Components

쿠버네티스의 실행 환경을 관리한다.
다음 요소로 구성되어있다.

  • kubelet, kube-proxy, container runtime

kubelet

  • 클러스터 안 모든 노드에서 실행되는 에이전트
  • 다양한 매커니즘으로부터 제공된 PodSpecs을 받아 컨테이너 실행, 헬스 체크를 진행한다.
  • 단, 쿠버네티스에 의해 만들어지지 않은 컨테이너는 관리하지 않는다.

kube-proxy

  • 노드의 네트워크 정책을 유지 관리한다.
  • kube-proxy uses the operating system packet filtering layer if there is one and it's available. Otherwise, kube-proxy forwards the traffic itself.

Container Runtime

  • 실제로 컨테이너를 실행시킵니다.
  • 쿠버네티스에서 지원하는 컨테이너 런타임은 containerd, CRI-I 등이 있다.CRI 문서

Addons

참고

DNS

  • 쿠버네티스 안에 실행된 컨테이너들은 DNS 서버에 자동으로 등록됩니다
  • 1.13부터 CoreDNS가 기본 DNS 애드온이 되었다.

Web UI (Dashboard)

  • 차후에 dashboard 관련 글을 작성할 예정

Container Resource Monitoring

  • kubelet 안에 포함된 cAdvisor라는 컨테이너 모니터링 도구를 사용
  • 메트릭 서버를 손쉽게 모니터링에 이용한다
  • Full metrics pipeline을 위해 CNCF의 두 번째 졸업 프로젝트인 Prometheus를 참고할 것
  • 참고하세용

Cluster-level Logging

  • 로그들을 중앙 로그 저장소에 수집, 저장, 탐색 등을 할 수 있게 해주는 애드온.
  • EFK(ElasticSearch + Fluentd + Kibana), ELK(ElasticSearch + Logstash + Kibana) 등

마치며

쿠버네티스를 더 깊히 이해하며 검토하기 위해 글을 작성할 것이고 공부 내용을 계속 공유하겠다.

profile
안녕하세요.

0개의 댓글