본문 바로가기

Cloud/K8S

[K8S-Study-2-1] K8S 기본 이론 정리 (구성, 통신)

목표

  • K8S 기본 구성 정리
  • 통신 구조 정리

쿠버네티스 기본 구성 요소

  • Master 노드 - 컨트롤 배 (Control-Plane)
    • Etcd
      • 어떤 컨테이너가 어느 Worker노드에 있는지에 대한 기본 정보를 저장 (DB)
    • 스케줄러
      • 노드 용량, 테인트 등 규칙을 통해 어떠한 Worker노드에 컨테이너를 올릴지만 결정
    • kube-apiserver
      • etcd, 스케줄러, 컨트롤러 등에 대해 워커노드와 통신을 할 수 있게 하는 구성 요소
      • kubelet과 지속적으로 통신을 함
  • Worker 노드 - 컨테이너가 적재되는 배
    • Container Runtime Engine
      • 어플리케이션 등이 컨테이너로 구성되고, 컨테이너로 동작하기 때문에 필요
    • kubelet
      • 클러스터의 각 노드에서 실행되는 에이전트
    • kubeproxy
      • 클러스터 내부의 서비스 간 통신을 가능하게 만듬

통신 구조

[그림 출처 : CNCF Financial Services User Group의 Kubernetes 데이터 흐름 다이어그램 ]

  • Deployment 적용
  • API 서버에서 체크를 하고 ETCD에 기입
  • Controller는 각각의 상태를 API 서버를 통해 확인하고, 적용 → API서버는 ETCD에 기입
  • 스케줄러가 새로운 파드 정보를 가져와서 파드를 노드에 스케줄링 함 → API서버는 ETCD에 기입
  • 컨트롤플레이언에서 ETCD에 기입이 완료되면, 각 워커 노드에 있는 Kubelet은 새로운 파드정보를 Poll 해옴
  • 이후 kubelet이 containerd or docker를 통해서 이미지 가져오고 실행
  • Service나 Endpoint는 Kube-proxy에서 처리함

추후 목표

  • Kube-Controller-manager에 대해 코드 레벨로 정리한다. (1개)
  • Kube-Scheduler의 Node 할당 방식을 정리한다 (1개)

https://kubernetes.io/ko/docs/concepts/overview/components/

https://kubernetes.io/ko/docs/concepts/architecture/controller/

https://kubernetes.io/ko/docs/concepts/extend-kubernetes/#익스텐션-패턴

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/

https://kubernetes.io/ko/docs/concepts/overview/kubernetes-api/

https://developers.redhat.com/articles/2021/06/11/kubernetes-operators-101-part-1-overview-and-key-features

https://medium.com/@nuwanwe/understanding-the-kubernetes-controller-manager-b34db5b92dd4

https://www.uffizzi.com/kubernetes-multi-tenancy/kubernetes-controllers

https://www.trendmicro.com/vinfo/us/security/news/security-technology/a-deep-dive-into-kubernetes-threat-modeling

728x90
반응형