Cluster Architecture
Node
하나의 노드는 Kubernetes에서 하나의 워커 머신이다. (이전에는 minion
으로 불림)
- 노드는 클러스터에 따라 VM 또는 물리 머신이 될 수 있음
Node status
노드의 상태는 주소, 컨디션, 용량과 할당가능, 정보 등을 포함한다.
kubectl escribe node <node_name>
주소
제공 사업자 또는 구성에 따라 다양한 용법이 쓰임
- HostName: 노드 커널에 알려진 호스트명.
--hostname-override
로 override 가능 - ExternalIP: 클러스터 외부로 라우트 가능
- InternalIP: 클러스터 내부에서만 라우트 가능
컨디션
모든 Running
중인 노드의 상태를 기술. Node condition에는 다음 종류 등이 있음
Ready
: 상태가 양호하고 pod 수용 준비가 되어있으면True
MemoryPress
:True
/False
PIDPress
:True
/False
DiskPressure
:True
/False
NetworkUnavailable
:True
/False
1.5 이전의 Kubernetes 버전에서는 노드 컨트롤러가 apiserver로부터 접근 불가한 파드를 강제 삭제시킨다. 1.5 이상에서는 Terminating
혹은 Unknow
상태로 있어서 직접 삭제해야 할 수도 있음
용량과 할당 가능
노드 상에서 사용 가능한 리소스. (CPU, Memory, 스케쥴 가능한 최대 pod 수)
정보
커널 버전, Kubernetes version (kubelet, kube-proxy), Docker version, OS name 등
관리
pod나 service와 달리 노드는 보통 Kubernetes에 의해 생성되지 않는다. Cloud 제공 사업자(google compute engine 등)에 의해 생성되거나 물리/가상 머신의 풀에서 존재한다.
그래서 Kubernetes에서 노드를 생성하면 노드를 가리키는 object를 생성한다. 이후 이 노드의 유효성 여부를 검사한다.
{
"kind": "Node",
"apiVersion": "v1",
"metadata": {
"name": "10.240.79.157",
"labels": {
"name": "my-first-k8s-node"
}
}
}
위의 내용으로 노드를 생성한다고 가정해보자.
- kubernetes는 내부적으로 이를 node object를 생성
metadata.name
필드를 통해 상태 체크를 하여 노드의 유효성을 확인
노드 컨트롤러
현재 kubernetes node interface와 상호작용하는 컴포넌트는 3개가 있다: Node controller, kubelet, kubectl
Node controller의 역할
- 등록 시점에 CIDR 할당을 사용하게 설정된 경우 노드에 CIDR 블럭을 할당
- 노드 컨트롤러의 내부 노드 리스트를 최신상태로 유지 (cloud 제공사업자의 머신 리스트 정보를 근거로)
- 노드의 동작 상태를 모니터링
'backend > kubernetes docs' 카테고리의 다른 글
kubernetes docs - Container (0) | 2020.05.22 |
---|---|
kubernetes docs: 클러스터 아키텍쳐 - 컨트롤러 (controller) (0) | 2020.05.18 |
Kubernetes object - 쿠버네티스 오브젝트 (0) | 2020.05.16 |
쿠버네티스 기본 개념 (kubernetes conecpt) (0) | 2020.05.14 |
k8s 문서 - 튜토리얼; 쿠버네티스 기초 학습 (0) | 2020.05.13 |