k8s - 3

문성하·2023년 11월 24일
0

k8s

목록 보기
4/6

이전까지는 쿠버네티스 공부를 시작하기 전에
쿠버네티스가 어떻게 동작하고, 어떻게 실행시키는지에 대한 개요를 알아보았습니다.

이번 글부터는 쿠버네티스의 구조를 시작으로 컴포넌트들에 대해 자세히 알아보겠습니다.

쿠버네티스 클러스터 구성

쿠버네티스의 클러스터는 크게 두 가지로 분류 됩니다.
클러스터 자체를 관리하는 마스터 노드, 실제 컨테이너(파드)들을 실행시키는 워커 노드

마스터 노드에는
kube-apiserver
etcd
kube-schedular
kube-controller-manager
kubelet
kube-proxy
docker 등의 컴포넌트가 존재합니다.

클러스터를 구성할 때 보통 3대의 마스터 노드를 사용합니다.
1대의 마스터 노드가 주된 마스터 노드의 역할을 하고, 나머지 두 대의 마스터 노드가 대기하는 형태로 있으며,
리더 마스터에 오류가 생겼을 때, 나머지 마스터 노드 중 한대가 리더 역할을 이어받게 됩니다.
서버의 안정성을 고려해 5대의 마스터 노드로 클러스터를 구성하는 방법도 존재합니다.

워커 노드에는
kubelet
kube-proxy
docker 등의 컴포넌트가 존재합니다.

개요

쿠버네티스 동작 원리를 자세히 보면서 각각의 컴포넌트가 어떤 역할을 하게 되는지 알아보겠습니다.

쿠버네티스의 모든 통신은 kube-apiserver를 통해 정보 혹은 명령이 전달됩니다.
마스터 노드에 여러 컴포넌트 들이 있는데, etcd와 kubelet을 제외한 컴포넌트들은 docker에 의해 관리됩니다.
이는 해당 컴포넌트들이 컨테이너로 실행됨을 의미합니다.
초기에는 컴포넌트가 서버 프로세스로 동작되기도 했습니다.

etcd는 별도의 프로세스로 설정되어있으며, key-value값으로 노드의 상태 등이 저장되어 있습니다.

워커노드는 kubelet으로 도커를 관리합니다. kubelet이 kube-apiserver와 통신하며,
파드의 생성,관리,삭제를 담당합니다.
워커 노드에 속한 kube-proxy는 마스터 노드의 kube-proxy와 다르게 컨테이너가 아니라 서버 프로세스를 실행 가능합니다.

컴포넌트 알아보기

컴포넌트도 용도에 맞게 세 가지로 분류됩니다.
마스터용 컴포넌트, 노드용 컴포넌트, 애드온용 컴폰넌트

마스터용 컴포넌트 : 마스터용 컴포넌트들은 실제 클러스터 전체를 관리하는 역할을 맡습니다.

  • etcd : key-value 값을 저장하는 저장소입니다.
  • kube-apiserver :
    쿠버네티스 클러스터의 API를 사용할 수 있도록 도와줍니다.
    클러스터에 온 요청이 유효한지 검사합니다.
    - 클러스터에 온 요청을 실행할 권한이 존재하는지 체크
    하나의 클러스터에 여러 api-server가 존재할 수 있습니다.
  • kube-schedular :
    etcd를 확인하여 자원 할당을 노드를 선택해줍니다.
    -kube-controller-manager:
    파드들을 관리하는 컨트롤러 각각을 실행하는 컴포넌트입니다.
  • cloud-controller-manager:
    클라우드 플랫폼(KakaoCloud, AWS 등)와 연결 관리하는 컴포넌트입니다.
    각 클라우드 서비스에서 관리해줍니다.

노드용 컴포넌트 : 쿠버네티스 실행 환경을 관리합니다.
-kubelet:
파드 컨테이너의 실행을 직접 관리합니다.
-kube-proxy:
클러스터 내부에 가상 네트워크를 구성하고 관리합니다.
-container runtime:
실제 컨테이너를 실행하는 컴포넌트로, 보통 Docker를 사용합니다.

애드온:
클러스터 안에서 필요한 기능을 실행하는 파드입니다.
애드온에는 여러 종류가 있습니다.

  • 네트워킹 애드온 : 가상 네트워크를 구성해 사용할 때 kube-proxy 이오ㅔ에 네트워킹 에드온을 사용합니다.
    쿠버네티스 지원 클라우드 플랫폼을 이를 구성해줍니다.
    사용자가 직접 구성할 시 많은 어려움이있습니다.
  • DNS 애드온:
    클러스터 내부에서 동작하는 DNS 서버로 보통 CoreDNS가 사용됩니다.
  • 대시보드 애드온 :
    콘솔 UI를 통해 쿠버네티스를 관리할 때 사용합니다.

컨테이너자원 모니터링

Kubelet내부에 있는 cAdvisor라는 컨테이너 모니터링 도구가 좋습니다.

			 

0개의 댓글