IT/Cloud

[K8S] 마스터 노드 구성

김 정 환 2023. 7. 30. 16:13
반응형
반응형

 

마스터 노드의 구성 요소들을 구체적으로 알아보겠습니다.

 

 

ETCD

 

ETCD는 분산 key-value 저장소 입니다. 대게 간단하고 빠릅니다. ETCD는 클러스터의 노드, 파드, 컨피그, 시크릿 등에 따라 데이터를 저장합니다.

 

Key-value는 어떤 모습을 하고 있을까요? 일반적인 관계형 데이터베이스와 비교가 필요할 것 같습니다. 아래 예시에 일반적인 관계형 데이터베이스를 준비했습니다. Sara의 연봉 정보가 없다면 빈칸 또는 null로 나타낼 수 있습니다.

이름 나이 장소 연봉
John 45 서울 6000
Dave 35 부산 5000
Sara 25 대구  

또 다른 상황입니다. '차량 개수'이라는 컬럼이 추가될 경우, 모든 영역에 영향을 미칠 수 있습니다. 물론 null 등을 고려해야 합니다.

 

이제 key-value로 되어 있는 데이터베이스를 보겠습니다.

여기에서 새로운 컬럼인 '차량 개수'를 추가해보겠습니다. 관심 대상에게만 정보 입력이 가능합니다. Dave는 차량이 없어서 '차량 개수' key를 추가하지 않았습니다.

 

ETCD 설치 방법

[예정]

 

 

 


Kube API Server

 

 

 

 

Kube API Server는 클러스터 내부의 모든 요소들이 통신할 수 있도록 해줍니다.

유저 인증과 Request 검증을 합니다. 클러스터 요소들로부터 데이터를 가져오고 응답을 보내줍니다.

 

 

 

 

조금 더 확장된 예시를 보겠습니다.

1. Kube API Server는 파드 객체를 생성합니다. 아직 노드에 할당하지 않았습니다.

2. 파드 객체 정보를 ETCD 서버에 업데이트 합니다. 그리고 사용자에게 파드가 생성되었다고 메시지를 띄웁니다. "Pod created!"라고 뜹니다.

3. Scheduler는 Kube API Server를 계속 모니터링하고 있습니다. 그리고 새로운 파드가 생성되었는데 할당되지 않은 것을 알게 됩니다.

4. 파드를 생성할 노드를 정해줍니다. 그리고 Kube API Server에게 전달합니다.

 

5. ETCD 서버에 파드가 생성될 노드 정보를 업데이트 합니다.

6. Kube API Server는 파드 정보를 해당 노드의 Kubelet에게 전달합니다.

7. Kubelet은 전달 받은 정보를 이용해서 파드를 생성합니다. 그리고 container runtime engine에게 애플리케이션 이미지를 배포하도록 지시합니다.

8. Kubelet은 파드 생성 완료 정보를 Kube API Server에게 보내고 다시 ETCD 서버에 보내서 정보를 업데이트 합니다.

 

이렇게 동작하는 과정에 Kube API Server는 여러가지 역할을 수행합니다.

1. 유저 인증

2. Request 검증

3. 데이터 전송

4. ETCD 업데이트

5. 스케줄러와 통신

6. Kubelet과 통신

 

 

Kube API Server 설치 방법

[예정]

 

 

 


Kube Controller Manager

컨트롤러는 시스템 내의 다양한 요소들을 지속적으로 모니터링 합니다. 그리고 상황을 정리합니다. 이는 마치 뇌와 비슷한 역할입니다.

 

Node Controller

노트 컨트롤러는 노드의 상태를 모니터링하여 애플리케이션이 정상적으로 운영될 수 있도록 합니다. 

 

몇 개의 옵션을 소개하겠습니다.

node monitor period : 모니터링 주기

node monitor grace period : 헬스체크가 안되면 설정된 시간(초)를 기다립니다. 시간을 초과하면 해당 노드는 unreachable로 표시됩니다.

pod eviction timeout : unreachable 이후 설정한 시간 동안 파드가 제정신을 차릴 때까지 기다립니다. 설정한 시간이 지나면 파드를 제거하고 새로운 노드에 새로운 파드를 생성합니다.

 

 

Replication Controller

레플리케이션 컨트롤러는 레플리카셋의 상태를 모니터링하고 설정한 파드 개수가 항상 유지되도록 보장합니다.

 

Other Controllers

그 외 많은 컨트롤러가 일을 하고 있습니다.

 

Controller 설치 방법

[예정]

 

 


Kube Scheduler

노드에 있는 파드의 스케줄링을 담당합니다. 어느 노드에 파드를 생성할지 결정합니다. 실제로 파드를 생성한다는 의미는 아닙니다. 실제 파드 생성은 kubelet이 담당합니다.

 

어떻게 파드를 생성할 노드를 찾을까요? 필터링하고 우선 순위를 매겨서 결정합니다. 예를 들어, 최소 10gb가 필요한 노드를 필터링하고 그중에서 가장 여유가 있느 노드를 선정합니다.

 

 

Kube Scheduler 설치 방법

[예정]

 

 

 

 

반응형

'IT > Cloud' 카테고리의 다른 글

[k8s] ReplicaSet  (0) 2023.07.30
[k8s] 파드(pod)  (0) 2023.07.30
[K8S] 워커 노드 구성  (0) 2023.07.30
[K8S] 클러스터 구성 개요  (0) 2023.07.30