Tools/K8S

Kubernetes Core concept

칼쵸쵸 2023. 3. 18. 21:04

https://geekflare.com/kubernetes-architecture

1. etcd

(자세한 설명 : https://tech.kakao.com/2021/12/20/kubernetes-etcd/)

쿠버네티스는 Key-Value형태로 데이터 저장

고가용성 Key-Value 자료구조

ETCD control client로 cli를 통해 서버에 대한 정보를 키-밸류 값으로 가져올 수 있음

쿠버네티스가 ETCD를 활용하여  클러스터에 관한 정보를 저장함

(노트,포드,시크릿)

클러스터에서 어떤 정보를 수정 변경할 때마다 etcd에 저장됨

kube -system 조회를 통해 etcd-master를 확인할 수 있음

마스터 노드에서 확인 가능

다중 마스터 클러스터에서는 각 etcd 서버가 서로를 연결하도록 구성

 

2. kube-api-server

kubectl 명령어로 입력하면 kube-api-server가 요청을 받게 되어있음

kubectl 없애 api를 Post요청과 같은 형태로 직접 호출할 수 있음

다른 K8S의 ETCD서버 등 모든 개별 구성요소는 API-server를 통해 데이터를 생성, 확인, 수정하도록 되어있음

 

3. kube-controller-manager

다양한 구성요소의 상태를 확인하고 원하는 상태로 만들게 하는 컨트롤러

kube api 서버를 사용해서 계속해서 모든 오브젝트들을 모니터링함

노드 컨트롤러, pod 컨트롤러, repliaction cotroller 등 다양한 컨트롤러 가 있음

 

4. kube scheduler

스케줄러는 파드가 어떤 노드에 생성될 것인지 결정함

실제로 넣는 것은 kublet이 실행하고 스케줄러는 노드 위치만 결정함

컨테이너의 전송 위치, 컨테이너의 적당한 크기등을 고려해 어떤 노드에 저장할 것인지 결정

CPU와 메모리를 확인하고 

1. filtering : 해당노드에 가능 여부 확인

2. ranking : 여유공간확인 후 최우선 노드에 저장

 

5. kublet

실제로 팟을 생성, 삭제하는 역할을 함

도커와 같은 이미지를 통해서 워커노드에 파드를 생성함

 

6. kubeProxy

파드와 파드간의 네트워크를 생성하여 통신할 수 있도록 함

파드의 ip는 유동적으로 변할 수밖에 없기 때문에 클러스터 전부에게 데이터베이스 ip를 공유 할 필요가 있음

따라서 내부 네트워크용 프록시를 구성하고 접근하게 함

* 서비스는 쿠버네티스 메모리에 있는 가상의 구성요소 이기 때문에 파드에 직접 접근할 수 없음

 쿠버네티스의 각 노드에서 생성하고 사용하여야 하고 iptable 같은 형태로 해당 노드 안에 있는 서비스들의 접근 경로를 관리함

 

'Tools > K8S' 카테고리의 다른 글

Kubernetes ReplicaSet  (0) 2023.07.01
Kubernetes Config  (1) 2023.06.17
Kubernetes Scheduling  (0) 2023.03.20
Kubernetes namespace  (0) 2023.03.19
Kubernetes Services  (0) 2023.03.19