본문 바로가기
Programming/Kubernetes

Kubernetes Components

by guru_k 2021. 10. 7.
728x90
반응형

기본적으로 Kubernetes cluster는 node 라고 불리는 일련의 워커 머신들로 이루어져있다. 그 노드 안에서 containerized 된 어플리케이션들이 실행된다.

Kubernetes Cluster

Kubernetes Components 는 크게 두가지로 볼 수 있다.

Control Plane Components 와 Node Components 이며 Control Plane은 클러스터에서 Pod 과 Worker Node들을 관리하는데 Production 환경에서 Control Plane은 fault-tolerance 와 high availability를 위해 여러 머신에 걸쳐 구동 되어진다.

 

Control Plane Components

Control Plane 들은 클러스터 내에서 발생하는 다양한 이벤트들을 결정하는 역할을 수행한다. 예로 새로운 Pod이 생성이 될 경우 어떤 Node에 뜨도록 할것인지에 대한 것을 결정하기도 한다.Control Plane 들은 아무 Node에서나 구동이 될 수 있지만 모든 Components들은 같은 머신에 구동되어지도록 설정하는 것이 좋다. 그리고 대게 Master Node에 구동이 되어지며 User Container들을 Control Plane들이 구동되어지는 Node에 구동하지 않도록 하자.

kube-apiserver

kube-apiserver는 kubernetes API를 노출하고 있는 Component이며 kubernetes control plane의 front end로 볼 수 있다.kube-apiserver의 주요 역할은 kubernetes API를 사용할 수 있도록 하는것이며 kube-apiserver는 수평적 확장이 가능한 구조로 디자인되어있어 여러 인스턴스를 구동하여 트래픽을 조절할 수 있다.

etcd

모든 클러스터의 Kubernetes' backing store 를 저장하는 용도로 사용하는 고가용성 Key Value store로 사용되어 진다.

kube-scheduler

kube-scheduler component 는 지정된 Node가 없는 새로운 Pod이 구동 될 경우 어떤 Node에서 해당 Pod이 구동될것인지에 대한 선택을 하게 된다.

kube-controller-manager

 kube-controller는 아래와 같이 네가지의 분리된 controller process로 구성되어있으나 복잡성을 줄이기 위해 하나의 바이너리로 구동되어진다.

  • Node controller: 노드가 다운되었을 때 대응을 담당
  • Job controller: Job object들을 감지하면서 해당 Job들이 완료될 수 있도록 Pod들을 생성
  • Endpoints controller: Endpoints object 들을 담당. Service와 Pod을 조인
  • Service Account & Token controllers: 새로운 네임스페이스들을 위한 기본 account들과 API access token들을 생성

Node Components

Node Component 들은 모든 Node에서 동작하며, Pod의 구동을 유지하며 kubernetes runtime environment를 제공한다.

kubelet

각 Cluster의 각 Node에서 실행되는 Agent이다. Container들이 Pod안에서 확실히 실행될 수 있도록 관리한다

다양한 메카니즘을 통해 제공된 PodSpecs들을 제공 받아서 PodSpecs에서 서술된 Container들의 running과 healthy를 확실하게 관리한다.

그러나 kubernetes에 의해 만들어지지 않은 container들은 관리하지 않는다.

kube-proxy

kube-proxy는 각 노드에서 kubernetes service concept로 실행되는 network proxy 이다.

kube-proxy는 각 노드에서 네트워크 룰들을 관리하고, 이러한 네트워크 룰들은 클러스터 내외부의 네트워크 세션으로부터 발생하는 커뮤니케이션이 허용되도록 한다.

kube-proxy는 OS Layer의 Packet filtering이 존재하면 그것을 사용하며 없을 경우 트래픽 자체를 포워드 한다.

Container runtime

container runtime은 container들을 실행을 담당하는 소프트웨어이다.

kubernetes는 몇몇의 container runtime들을 지원하며. Docker, containerd, CRI-O 그리고 Kubernetes CRI를 구현한 소프트웨어들이 해당한다.

728x90
반응형

댓글