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.

일반적으로 노드가 자기 자신을 클러스터에 등록하는 패턴을 추천