본문 바로가기
Kubernaetes

k8s- Control Plane(컨트롤 플레인)

by 앵남(Andy) 2022. 12. 15.

 

현재 쿠버네티스(K8s)를 공부하면서 사내에 적용을 하려고 있는데 용어도 용어인데 너무 많은 개념들이 존재하는거 같아서 하나씩 제대로 정리해보려고 한다.

 

Control Plane

쿠버네티스에서 Control Plane 뺄 수 가 없는 존재이다. 이 부분을 이해하는게 가장 중요하다. 쿠버네티스 공식문서에는 Control Plane이 어떤식으로 설명 되어있는지 확인해보자. 

 

The control plane's components make global decisions about the cluster (for example, scheduling), as well as detecting and responding to cluster events (for example, starting up a new pod when a deployment's replicas field is unsatisfied).

 

Control plane components can be run on any machine in the cluster. However, for simplicity, set up scripts typically start all control plane components on the same machine, and do not run user containers on this machine. See Creating Highly Available clusters with kubeadm for an example control plane setup that runs across multiple machines.

 

 

Control Plane Components는  클러스터 내 상태를 체크하고 조정 해주는 컴포넌트라고 생각하면 된다. 그래서 어떤 상태를 체크하고 조정을 하는거지?? 예를들어, 현재 Pod가 제대로 replicas에 맞게 배포가 되어있는지 확인을 한다는 것이다.

 

 이것을 조금 더 풀어보자면 deployment yaml 파일 내에 replicas를 정의하고 pod를 배포한다. 그러면 이렇게 작성했다는건 cluster내 노드에 내가 원하는 만큼 파드를 배포하고 유지했으면 한다는거고 쿠버네티스는 배포한 것을 유지할 수 있게 도와준다는 것이다. 

 

이러한 작업을 해주는게 controller-manager다. 즉, 노드 상태를 관리를 해주고 파드가 제대로 생성되어 있는지 확인하고 namespace별로 접근할 수 있는 token도 관리해주는게 controller-manager다.

 

 

그러면 내가 작성한 yaml 파일을 kubectl cli를 통해 클러스터 내에 배포를 하는데 이런걸 관리해주는 친구는 kube-api-server다. kube-api-server역시 중요하다. 쿠버네티스의 frontend 기능을 담당한다. 내가 작성한 yaml파일을 kubectl 명령을 전달하면 kubeconfig 파일을 보고 api 서버를 통해 요청하고 처리한다. 

 

 

또 생각해보면, 어떤 노드에 어떤 파드가 있고 파드 상태는 어떤지 이러한 정보는 어디에서 가져오는지 생각해보면 etcd에서 가져온다고 생각하면된다. etcd는 쿠버네티스에 저장소라고 생각하면된다. 클러스터의 상태와 관련된 정보가 이곳에 저장되어 있다. 진짜 심각하게 이야기 해보자면 클러스터 내에 etcd가 없다면 클러스터 내에서 발생한 리소스는 바다에 버리는것과 마찬가지이다.

 

한번 클러스터내에 kube-api-server, controller, etcd, scheduler가 있는지 확인해보자. 

 

 

kubens 명령어를 입력해 kube-system에 들어와서 kubectl get pods를 입력하면 etcd, controller, scheduler, api-server가 존재하는걸 확인할 수 있다. 

 

 

쿠버네티스는 분명히 좋은 오픈소스이다.  구글은 이렇게 좋은 기술을 CNCF(Cloud Native Computing Foundation)에 기증을 했다는게 너무 대단하고 놀랍다. 솔직히 쿠버네티스를 통해 더 많은 돈을 벌 수 있을텐데 그렇게 하지 않는게 대단하다. 

 

 

 

댓글