Node
k8s 클러스터의 기본 구성 요소.
- VM 또는 물리 머신이다.
- 팟을 뛰우는 역활을 한다.
- 마스터 노드의 요청에 따라 팟을 실행 해야 함으로 여러 서비스가 탑재 된다.
- 컨테이너 런타임 서비스
- kubelet
- kube-proxy
Node 상태
노드는 크게 4개의 상태를 가진다. - Addresses - Condition - Capacity - Info
Addreses
- HostName: 노드 이름
- ExternalIP: 클러스터 외부에서 접근 가능하도록 노드에 할당된 IP
- InternalIP: 클러스터 내부에서의 IP
Conditions
실행 중인 노드의 상태를 의미
상태 | 설명 |
---|---|
OutofDisk | 새로운 팟을 위해 할당할 수 있는 디스크 여유 공간이 없으면 True |
Ready | Ture: 건강함, False: 문제 있음, Unknown: 정보를 받지 못함 (기본 40초 간격 체크) |
MemoryPressure | True: 노드 메모리 부족 |
PIDPressure | True: 노트에 프로시스가 너무 많으면. |
DiskPressure | Ture: 노드의 디스크 사이즈 부족시. |
NetworkUnavailable | True: 노드의 네트워크가 비정상 설정일떄. |
네트워크 파티셔닝이 일어나면 마스터는 5분후에 기존 팟을 지우고 새로운 팟을 뛰우라고 스케쥴링함 단 파티셔닝된 노드는 지우는 명령을 받지 못해 양쪽에 같은 팟이 뜰 수 있음.
1.5 버전 이후에 Terminating, Unknown을 강제로 지울수 없음 node 가 살아나던가 아예 노드를 클러스터에서 삭제하고 손으로 해당 팟들을 제거 해야함.
1.12 버전 이후로 컨디션이 아리나 taints를 사용하는 컨디션 변종을 사용 할 수 있음(기본은 컨디션)
Capacity
노드에 할당된 자원 정. CPU, memory, max number of pods
Info
일반정인 정보들, kernal version, k8s versions(kubelet, kube-proxy), docker version, os name.
Managment
node의 경우 k8s 에 의해 만들어지지 않고 외부에서 주어진다. k8s에서 노드 생성은메타 데이터를 만들어 노드에 맵핑 시키는 작업을 한다.
Node Controller
k8s 마스터의 구성요소 중 하나이며 노드를 관리하는 역활을 한다. - CIDR 블럭을 노드에 할당 - 클라우드에서 제공해주는 노드 목록을 가지고 있다. 노드가 이상하면 프로바이더에게 질의해서 사용 불가능 하면 목록에서 제거한다. - 노드 건강 체크.
Self-Registration of Nodes.
일반적으로 노드가 자기 자신을 클러스터에 등록하는 패턴을 추천