[k8s] 3. 쿠버네티스 아키텍처

siyeon kim·2024년 2월 7일

k8s

목록 보기
3/3

3. 쿠버네티스 아키텍처

동작 과정

STEP 1. 각 기능별 컨테이너 생성

  • ex) login, mainUI, pay

STEP 2. hub에 컨테이너 저장

STEP 3. 쿠버네티스에게 컨테이너 실행 요청

  • yaml or CLI

STEP 4. master node = control - plane

  • rest api server 존재 → api가 요청 수락
  • api가 여러 컨테이너에 스케줄러에게 배치 요청

STEP 5. 스케줄러는 노드의 상태 확인후 api에게 응답

STEP 6. api는 kubelet에게 요청

STEP 7. kubelet이 도커명령어로 바꿔서 컨테이너 실행요청

STEP 8. 도커 데몬은 정의되어있는 docker hub에게 검색후 받아와서 실행

  • 이를 pod라 부르고 관리

쿠버네티스 컴포넌트

마스터 컴포넌트

  • etcd
    • key-value 타입의 저장소
    • worker node들의 대한 상태 정보
    • 도커 상태 정보
  • kube-api server
    • k8s API를 사용하도록 요청받고 요청이 유효한지 검사
  • kube-scheduler
    • 파드를 실행할 노드 선택
  • kuber-controller-manager
    • 파드를 관찰하며 개수를 보장

워커 노드 컴포넌트

  • kubelet
    • 모든 노드에서 실행된는 k8s 에이전트
    • 데몬 형태로 동작
    • cAdvisor 포함(컨테이너 모니터링 툴) 이를 통해 상태 정보 수집
  • kube-proxy
    • k8s의 네트워크 동작 관리
  • 컨테이너 런타임
    • 컨테이너를 실행하는 엔진
    • docker, containered, runc

ADD one

  • 네트워크
    • CNI(컨테이너 네트워크 인터페이스) -weave, calico…
  • DNS
    • coreDNS →base로 설치
  • 대시보드
  • 컨테이너 자원 모니터링
    • cAdvisor
  • 클러스터 로깅
    • 컨테이너 로그 , k8s 운영 로그들을 수집해서 중앙화
    • ELK, EFK, DataDog

K8s namespace

  • namespace
    • k8s API 종류 중 하나
    • 클러스터 하나를 여러개의 논리적인 단위로 쪼개서 사용
  • 쿠버네스트 클러스터 하나를 여러 팀이나 사용자가 함께 공유
  • 용도에 따라 실행하는 앱을 구분할때 사용
  • 생성 방법
    • CLI

      kubectl create namespace blue
      kubectl get namespaces
    • yaml

      kubectl create namespace green —dry-run -o yaml > green-ns.yaml
      vim green-ns.yaml
      kubectl create -f green-ns.yaml
  • namespace 관리
    kubectl get namespace
    kubectl delete namespace

yaml 템플릿

  • 사람이 쉽게 읽을 수 있는 데이터 직렬화 양식
  • 기본문법
    • 띄어쓰기 중요
    • Scalar 문법, 배열 문법

API version

  • alpha → beta → stable
  • pod의 api version check
    kubectl explain pod
profile
소프트웨어 엔지니어

0개의 댓글