DevOps/Kubernetes

[ 쿠버네티스 입문: 90가지 예제로 배우는 컨테이너 관리 자동화 표준 ] 4. 쿠버네티스 아키텍처

noahkim_ 2021. 7. 21. 10:25

4.1 쿠버네티스 클러스터의 전체 구조

 

4.2 쿠버네티스의 주요 컴포넌트

  1. 마스터용 컴포넌트
  • Etcd
    /etc/kubernetes/manifests/etcd.yaml : 설정파일
  • Kube-apiserver
    클러스터로 온 요청이 유효한지 검증함. (요청을 실행할 권한이 있는지 검사한 후 응답해줌)

    쿠버네티스는 MSA이므로 서로 분리된 컴포넌트 여러 개로 구성되어 있음.
    쿠버네티스에 보내는 모든 요청은 kube-apiserver를 이용해서 다른 컴포넌트로 전달함

    /etc/kubernetes/manifests/kube-apiserver.yaml : 설정파일

  • Kube-scheduler
    파드가 할당 될 노드를 결정함

  • Kube-controller-manager

 

2. 노드용 컴포넌트

 

  • Kubelet
    클러스터 안 모든 노드에서 실행되는 에이전트. 파드 컨테이너들의 실행을 직접 관리함.
    컨테이너가 정상적으로 실행되는지 헬스 체크를 진행함.
  • Kube-proxy
    클러스터 안 가상 네트워크의 동작을 관리하는 컴포넌트

3. 애드온 


      클러스터 안에서 필요한 기능을 실행하는 파드.
      (네임스페이스) kube-system

 

  • 네트워크 애드온(CNI)
    kube-proxy외에 네트워크 플러그인을 사용하여 가상 네트워크를 구성함
  • DNS 애드온
    클러스터 안에서 동작하는 DNS서버
    쿠버네티스 안에 실행된 컨테이너들은 자동으로 DNS 서버에 등록됨
    kube-dns, CoreDNS 등이 있음
  • 대시보드 애드온
    웹 UI로 현황을 볼 수 있음.
  • 컨테이너 자원 모니터링
    클러스터 안에서 실행 중인 컨테이너의 상태를 모니터링하는 애드온
    CPU나 메모리 같은 데이터들을 볼 수 있음.
    cAdvisor : 컨테이너 모니터링 도구. 메트릭 서버를 모니터링에 이용함.

  • 클러스터 로깅

클러스터 개별 컨테이너의 로그와 쿠버네티스 구성 요소의 로그들을 중앙화한 로그 수집 시그템에 모아서 보는 애드온

 

4.3 오브젝트와 컨트롤러

 

사용자는 쿠버네티스에 자원의 ’바라는 상태’를 정의하고 일치하도록 오브젝트를 생성/삭제함

  • 오브젝트
    파드,서비스, 볼륨, 네임스페이스..
  • 컨트롤러
    레플리카셋, 디플로이먼트, 스테이트풀셋, 데몬셋, 잡..

  1. 네임스페이스

    쿠버네티스 클러스터 하나를 여러 개 논리적인 단위로 나눠서 사용
    클러스터 하나를 여러 개 팀이나 사용자가 함께 공유할 수 있음.

    default : 기본 네임스페이스
    kube-system : 쿠버네티스 시스템에서 관리하는 네임스페이스. 관리용 파드나 설정이 있음
    kube-public : 클러스터 안 모든 사용자가 읽을 수 있는 네임스페이스
    kube-node-lease : 각 노드의 임대 오브젝트들을 관리하는 네임스페이스

    ‘ kubectl create namespace “네임스페이스” ‘ : 네임스페이스 생성
    ‘kubectl config current-context’ : 현재 네임스페이스 확인
    ‘kubectl config get-contexts ____’ : 해당 컨텍스트 정보 확인하기
    ‘kubectl config set-context _____ —namespace= _____’ : 네임스페이스 변경

  2. 템플릿

        오브젝트나 컨트롤러가 어떤 상태여아 하는지 적용할 때 YAML 형식의 템플릿을 사용함.