Kubernetes Components

woo94·2023년 7월 5일
0

원글 의 내용을 요약 및 번역하였습니다.

개인적으로는 입문의 단계에서는, Node component에 kubelet과 container runtime이 있다는 것과 그 둘이 어떤 역할을 하는지 정도만 체크하고 넘어가면 될 것 같습니다! 🙋

우리가 Kubernetes를 배포하면, cluster를 갖게 된다.

Kubernetes cluster는 containerized application들을 실행하는 node라고 불리는 worker machine들의 집합으로 이루어져 있다.

Worker node는 application workload의 component가 되는 Pod를 host한다. Control plane은 cluster 내의 worker node들과 Pod들을 관리한다. Production 환경에서, control plane은 주로 다수의 computer 에서 실행되고, cluster는 주로 다수의 node를 실행하고 있어 fault-tolerance와 high availability를 제공해준다.

Control Plane Components

Control plane의 component들은 cluster에 대한 global decision을 만들고(예를들어 scheduling), cluster event(예를들어 deployment의 replicas field가 만족되지 않았을 때 새로운 pod를 시작)를 detecting 하며 responding도 한다.

Control plane component들은 cluster 안의 어떠한 machine 위에서도 실행이 가능하다. 하지만 단순함을 위해서 set up script는 주로 모든 control plane component들을 같은 machine에서 시작하고 이 machine에서는 다른 user container들을 실행하지 않는다.

kube-apiserver

API server는 Kubernetes control plane의 component로, Kubernetes API를 노출시켜준다. 이 API server는 Kubernetes control plane의 front end 이다.

Kubernetes API server의 main implementation은 kube-apiserver 이다. kube-apiserver는 수평확장을 하도록 설계되었다 - 더 많은 instance를 deploy 함으로써 scale 된다. kube-apiserver를 실행하는 instance 몇개를 더 실행하여 이들간의 traffic을 balance 할 수 있다.

etcd

Consistent하며 highly-available 한 key value store로 Kubernetes의 모든 cluster data에 대한 backing store 이다.

kube-scheduler

새롭게 생성되었지만 node가 할당되지 않은 Pod들을 watch 하고 이를 실행하기 위한 node를 선택하는 control plane component이다.

kube-controller-manager

Controller process를 실행하는 control plane component이다.

Controller란 apiserver를 통해서 cluster의 shared state를 watch 하며 current state에서 desired state로 이동하는 control loop이다.

Control loop은 robotics나 automation에 사용되는 용어인데, system의 state를 통제하는 non-terminating loop이다

이런 종류의 controller들에는:

  • Node controller: Node가 꺼지면 이것을 알리고 이것에 반응한다
  • Job controller: 일회성으로 실행되는 일들에 대한 job object들을 관찰한다. 이러한 task를 완료하기 위해서 Pod를 생성한다.
  • EndpointSlice controller: Service들과 Pod들에게 link를 제공해주기 위해서 EndpointSlice object를 생성한다.

cloud-controller-manager

cloud-specific control logic을 내장하고 있는 control plane component이다. Cloud controller manager는 cluster를 cloud provider의 API에 연결할 수 있게 해준다. 그리고 cloud platform과 상호작용하는 component를 cluster와 상호작용하는 component와 분리시킨다.

cloud-controller-manager는 오직 cloud provider의 controller 만을 실행한다. 만약 kubernetes를 on-premise, PC안에서의 learning environment에서는 cluster가 cloud controller manager를 가지지 않는다.

Node Components

Node components는 모든 node에서 실행되며 실행중인 pod를 유지관리하고, Kubernetes runtime 환경을 제공해준다.

kubelet

cluster 내의 모든 node에서 실행되는 agent이다. 이것은 container들이 Pod 안에서 실행되고 있는 것을 보장해준다.

Kubelet은 다양한 메커니즘들에 따라 PodSpecs의 집합을 받아들이고 PodSpecs에 서술된 container들이 실행중이며 healthy 한 것을 보장한다. Kubelet은 Kubernetes에 의해 생성되지 않은 container들은 관리하지 않는다.

kube-proxy

Cluster 내의 모든 node에서 실행되는 network proxy로 Kubernetes Service concept을 이행한다.

kube-proxy는 node들의 network rule을 유지한다. 이 network rule은 cluster의 내부 혹은 외부의 network session으로부터 Pod들과의 network communication을 허용해준다.

Container runtime

Container를 실행하는데 책임을 지는 software이다.

containerd, CRI-O 등 Kubernetes CRI의 규격을 이행하는 어느 다른 runtime도 가능하다.

profile
SwiftUI, node.js와 지독하게 엮인 사이입니다.

0개의 댓글

관련 채용 정보