운영체제/K8s

Core concept #1 - Master node (= Control Plane )

moonee 2022. 8. 8. 18:45

K8s Cluster는 Master node ( = Control Plane ) 와 Worker Node로 나뉨

그 중 오늘은 Master Node에 대해 알아봄

 

Master Node 구성요소

 

 1. kube-controller-manager

    - 파드가 죽거나 손상되었을 때 새로 생성하거나 재시작. 

    - 컨트롤러 각각은 개별 프로세스지만, 복잡도를 줄이기 위해 바이너리 하나로 컴파일하여 단일 프로세스로 실행됨. 

      > 복잡하니까 하나로 묶어 실행한다   ex) node controller + replication controller

 

 2. kube-scheduler

   -  어떤 워커 노드에 파드를 할당할 것인지 정하는 녀석.

   -  하드웨어 리소스를 고려, 한 노드에서 함께 실행되어야 하는 파드들에 대해 어피니티 룰이나 그 반대인 안티 어피니티 룰 등을 확인하여 파드를 할당한다.

 

3. kube-apiserver

 - 요청이 오면 해당 요청에 대한 권한을 검증후, 권한이 있으면 요청에 대한 처리를 한다.

 - 6443 포트 사용, 죽으면 노답

    ex)  kubectl -n moon get deployment 

    > 이 요청에 사용된 토큰이 moon 네임스페이스와 자원 조회에 대한 권한이 있는지 확인

    >  있다면 디플로이먼트 목록 조회하여 리턴.  

 

4. etcd

 - 키-값 형태의 K8s DB로, K8s에서 필요한 모든 데이터를 저장 

   > Nodes, Pods, Configs, Secrets, Accounts, Roles, Bindings, Others

 - raft 알고리즘 ( 노드 간 상태 공유 알고리즘이라고 한다 )

 - 서버 하나당 프로세스 1개만 사용.

 - kubeadm을 사용하여 etcd를 배포할 경우 pod로 배포

 - 고가용성을 보장하기 위해 여러 마스터 노드에 etcd 인스턴스 분산하여 배포함

 - 2739 포트 사용