개발/Infra

[k8s] Component

devriver 2021. 8. 7. 10:32
대세는 쿠버네티스 [초급~중급] 강의를 보고 정리한 글입니다.
[중급 편] 아키텍쳐

Master의 Control plane Component는 k8s 관리를 담당. Worker Node의 Worker Component는 각 컨테이너를 관리함.

Components (pod creation)

  • master 노드의 /etc/kubernetes/manifests 에는 kube-apiserver.yaml, etcd.yaml, kube-scheduler.yaml 이 있다. k8s 구동 시 이 파일을 읽어서 각 컴포넌트를 pod 형태로 띄운다.
  • worker 노드에는 k8s 설치될 때 같은 설치되는 kublet과 Container Runtime인 docker가 구동된 상태이며 /etc/kubernetes/manifests/kube-proxy.yaml 을 이용하여 각 노드에 kube-proxy도 띄운다.

Pod 생성 과정

  1. 사용자가 kubectl로 pod 생성을 요청한다.
  2. kube-apiserver가 이 명령을 Etcd로 보내 Pod의 정보들을 저장시킨다. (etcd는 DB역할)
  3. kube-scheduler는 수시로 각 워크 노드의 자원을 체크하고 apiserver에 pod 생성 요청이 들어왔는지 확인한다. (Watch)
    1. kube-apiserver에 들어온 생성 요청을 발견한다.
    2. 각 노드 중 적당한 노드를 선택한다.
    3. etcd에 저장된 pod에 Node 정보를 추가한다.
  4. 각 워커 노드의 kubelet은 수시로 kube-apiserver를 확인하여 자신의 이름이 붙은 pod가 있는 지 체크한다. (Watch)
    1. etcd에 자신의 이름이 붙은 pod를 발견한다.
    2. 이 정보를 kubelet으로 가져오고 pod를 만들기 시작한다.
  5. kubelet은 도커에서 컨테이너 생성을 요청한다
  6. kubelet은 kube-proxy에 네트워크 생성을 요청하여 새로 생긴 컨테이너와 통신할 수 있도록 한다.