관리 메뉴

생각해보기

쿠버네티스 입문 본문

쿠버네티스

쿠버네티스 입문

정한_s 2023. 3. 14. 23:24

쿠버네티스는 쿠버네티스 마스터(Control Plane)와 쿠버네티스 노드로 구성되어 있습니다.

쿠버네티스 마스터는 클러스터를 관리를 담당하는 노드 입니다. 그 외에 쿠버네티스 노드는 실제로 컨테이너를 실행하는 노드 입니다.

쿠버네티스 클러스터를 관리하려면 kubectl 명령어, yaml 형식이나 json 형식으로 작성된 매니페스트 파일을 이용하여 쿠버네티스 마스터가 가진 API를 통해 마스터에 '리소스'를 등록합니다.

마스터 컴포넌트

etcd : 고가용성을 제공하는 키-벨류 저장소 입니다. 쿠버네티스에서 필요한 모든 데이터를 저장하는 실질적인 데이터베이스입니다. etcd가 장애가 날 경우 etcd에 쓰기를 할 수 없으므로, 쿠버네티스의 설정을 바꿀 수 없습니다. 따라서 마스터를 여러개 두어 fail-over 하거나, ectd를 주기적으로 백업해야 합니다. 

kube-apiserver : kubectl 같은 cli 외에도 api 요청을 통해 자원을 관리할 수 있게 해주는 api 서버 입니다.

kube-sheduler : pod가 생성되었을 때 적절한 노드를 선택해서 pod를 띄우는 역할을 합니다. 스케줄링은 '필터링'과정과 '스코어링'과정이 있습니다. 필터링은 파드를 스케줄링하는 데 충분한 리소스가 있는지, 또는 필수 조건(어피니티,안티어피니티)으로 지정한 레이블을 가진 노드인지를 체크합니다. 스코어링은 필터링된 노드 중에 순위를 매겨 가장 적합한 노드를 계산합니다. 필터링과 스코어링은 아무것도 지정하지 않아도 쿠버네티스에서 계산되어 스케줄링에 사용됩니다.

kube-controller-manager : 컨트롤러 프로세스를 실행하고 클러스터의 실제 상태를 원하는 바로 조정하는 역할을 합니다. 다운된 노드가 없는지, 파드가 의도한 복제 숫자를 유지하는지, 서비스와 파드가 정상적으로 연결되어있는지, 서비스어카운트가 적절한지 관리합니다.

cloud-controller-manger : 클라우드 공급자(aws,azure,gcp..)가 있을 경우 클러스터를 클라우드의 공급자의 api에 연결합니다. 

 

노드 컴포넌트

kubelet : 각 노드에서 파드를 생성하고 정상적으로 동작하는지 관리하는 역할을 담당합니다. 실제로 우리가 쿠버네티스의 워크로드를 관리하기 위해 내려지는 명령은 kubelet을 통해 수행된다고 볼 수 있습니다. 우리가 쿠버네티스 파드를 관리하기 위해 작성하는 YAML을 쿠버네티스 클러스터에 적용하기 위해 kubectl 명령어를 사용할 때, 이 YAML이 kube-apiserver로 전송된 후 kubelet으로 전달됩니다. kubelet은 이 YAML을 통해 전달된 파드를 생성 혹은 변경하고, 이후 이 YAML에 명시된 컨테이너가 정상적으로 실행되고 있는지 확인합니다.

container runtime : 파드에 포함된 컨테이너 실행을 담당하는 애플리케이션 입니다. 

kube-proxy : kube-proxy는 쿠버네티스 클러스터 내부에서 네트워크 요청을 전달하는 역할을 합니다

 

https://devocean.sk.com/blog/techBoardDetail.do?ID=163909

https://kubernetes.io/ko/docs/concepts/overview/components/

https://www.samsungsds.com/kr/insights/kubernetes-3.html

'쿠버네티스' 카테고리의 다른 글

쿠버네티스 입문 -2-  (0) 2023.04.12
Comments