쿠버네티스에는 2종류의 node가 있다.
Master Node 와 Worker Node(또는 그냥 Node)
각각의 노드들은 하는 일이 다른데 간략하게 알아보도록 하자.
마스터 노드가 하는 일은 Worker Node 를 관리하는 일을 한다.
이 마스터 노드의 구성요소는 다음과 같다.
- Distirbute Database (etcd)
- API Server(kube-apiserver)
- Scheduler
- Controller Manager
가장 중요한 부분은 etcd(분산 데이터 베이스)이고 이것은 우리가 실행하는 모든 구성 변경 사항, 생성하는 모든 Deployment, 모든 확장 작업 등 모든 세부 정보가 여기에 저장된다.
즉 Deployment, Service 등 우리가 만든 모든 구성들이 여기에 저장된다는 것이다.
API Server 는 kubectl 이나 구글 클라우드 콘솔로 작업을 하려고 할 때 변화를 감지해서 처리를 시작한다.
노드에 포드를 스케줄링하는 역할을 한다.
쿠버네티스 클러스터에는 여러 개의 노드가 있고 우리가 새로운 포드를 만들 때 어떤 노드가 포드에 스케줄 될 지를 결정해야 하는데 스케줄러가 여러 요소를 고려해서 포드를 적당한 노드에 스케줄 시킨다.
클러스터의 전반적인 상태를 관리한다.
쿠버네티스의 실제 상태를 원하는 상태와 일치시키는 역할을 한다.
우리가 실행하고자 하는 애플리케이션은 이 워커노드 안에 있다.
워커 노드의 구성요소는 다음과 같다.
- Node Agent(kubelet)
- Networking Component(kube-proxy)
- Container Runtime
- PODS
노드 안의 상황을 지켜보고 그 상황을 마스터 노드에 보고하는 일을 한다.
Deployment 를 만들고 service 를 노출하는 기능을 한다.
포드 안의 컨테이너를 실행시키려고 할 때 필요한 것이 바로 이 container runtime 이다.
제일 많이 사용되는 것은 도커이고 다른 모든 OCI도 사용할 수 있다.
우리의 서비스, 즉 애플리케이션이 담겨져 있는 곳이다.