Node

Nodeλž€?

  • KubernetesλŠ” containerλ₯Ό pod 내에 λ°°μΉ˜ν•˜κ³ , nodeμ—μ„œ μ‹€ν–‰ν•¨μœΌλ‘œμ¨ workloadλ₯Ό κ΅¬λ™ν•œλ‹€

  • nodeλŠ” cluster에 따라 가상 or 물리적 머신일 수 μžˆλ‹€

  • 각 nodeλŠ” control plane 에 μ˜ν•΄ κ΄€λ¦¬λ˜λ©° podλ₯Ό μ‹€ν–‰ν•˜λŠ” 데 ν•„μš”ν•œ μ„œλΉ„μŠ€λ₯Ό ν¬ν•¨ν•œλ‹€

  • node의 μ»΄ν¬λ„ŒνŠΈμ—λŠ” kubelet, kube-proxy , μ»¨ν…Œμ΄λ„ˆ λŸ°νƒ€μž„ 이 μžˆλ‹€

    β†’ Cluster μ°Έκ³ !

Node의 관리

Kubernetes API μ„œλ²„μ— nodeλ₯Ό μΆ”κ°€ν•˜λŠ” 방법은 크게 두가지가 μžˆλ‹€

  1. Node의 kubelet으둜 control plane에 자체 등둝

  2. μ‚¬μš©μž (or λ‹€λ₯Έ μ‚¬μš©μž)κ°€ node objectλ₯Ό μˆ˜λ™μœΌλ‘œ μΆ”κ°€

Kubelet or node object둜 λ“±λ‘ν•œ ν›„ control plane은 μƒμ„±λœ node objectκ°€ μœ νš¨ν•œμ§€ ν™•μΈν•œλ‹€

ex)

{
  "kind": "Node",
  "apiVersion": "v1",
  "metadata": {
    "name": "10.240.79.157",
    "labels": {
      "name": "my-first-k8s-node"
    }
  }
}

Flow

  • KubernetesλŠ” λ‚΄λΆ€μ μœΌλ‘œ node objectλ₯Ό μƒμ„±ν•œλ‹€

  • KubernetesλŠ” kubelet 이 node의 metadata.name ν•„λ“œμ™€ μΌμΉ˜ν•˜λŠ” API μ„œλ²„μ— λ“±λ‘λ˜μ–΄ μžˆλŠ”μ§€ ν™•μΈν•œλ‹€

    • nodeκ°€ 정상이면,

      • podλ₯Ό μ‹€ν–‰ν•  수 있게 λœλ‹€

    • 정상이 μ•„λ‹ˆλ©΄,

      • ν•΄λ‹Ή nodeλŠ” 정상이 될 λ•ŒκΉŒμ§€ λͺ¨λ“  cluster ν™œλ™μ— λŒ€ν•΄ λ¬΄μ‹œλœλ‹€

πŸ’‘ KubernetesλŠ” μœ νš¨ν•˜μ§€ μ•Šμ€ `node object` λ₯Ό `μœ μ§€` ν•˜κ³ , nodeκ°€ `정상인지 확인` ν•œλ‹€

β†’ μƒνƒœ 확인을 μ€‘μ§€ν•˜λ €λ©΄ μ‚¬μš©μž or μ»¨νŠΈλ‘€λŸ¬μ—μ„œ node objectλ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ‚­μ œν•΄μ•Ό ν•œλ‹€

Node μ΄λ¦„μ˜ κ³ μœ μ„±

  • 두 nodeλŠ” λ™μ‹œμ— 같은 이름을 κ°€μ§ˆ 수 μ—†λ‹€

    • kubernetesλŠ” 같은 μ΄λ¦„μ˜ λ¦¬μ†ŒμŠ€κ°€ λ™μΌν•œ 객체라고 κ°€μ •ν•œλ‹€!

  • Node의 경우, λ™μΌν•œ 이름을 μ‚¬μš©ν•˜λŠ” μΈμŠ€ν„΄μŠ€κ°€ λ™μΌν•œ μƒνƒœ (ex. λ„€νŠΈμ›Œν¬ μ„€μ •, root disk contents)와 node labelκ³Ό 같은 λ™μΌν•œ 속성 을 κ°–λŠ”λ‹€κ³  μ•”μ‹œμ μœΌλ‘œ κ°€μ •ν•œλ‹€

    • λ§Œμ•½ μΈμŠ€ν„΄μŠ€κ°€ 이름을 λ³€κ²½ν•˜μ§€ μ•Šκ³  μˆ˜μ •λœ 경우, 이둜 인해 λΆˆμΌμΉ˜κ°€ λ°œμƒν•  수 μžˆλ‹€!

    • λ•Œλ¬Έμ— λ…Έλ“œλ₯Ό κ΅μ²΄ν•˜κ±°λ‚˜ μ—…λ°μ΄νŠΈν•΄μ•Ό ν•˜λŠ” 경우, κΈ°μ‘΄ node objectλ₯Ό λ¨Όμ € API μ„œλ²„μ—μ„œ 제거 ν•˜κ³  μ—…λ°μ΄νŠΈ ν›„ λ‹€μ‹œ μΆ”κ°€ν•΄μ•Ό ν•œλ‹€!

Node의 μƒνƒœ

Node의 μƒνƒœλŠ” μ•„λž˜μ˜ 정보λ₯Ό ν¬ν•¨ν•œλ‹€

  1. μ£Όμ†Œ

  2. μ»¨λ””μ…˜

  3. μš©λŸ‰κ³Ό ν• λ‹Ή κ°€λŠ₯μ—¬λΆ€

  4. 정보

Kubectl을 μ΄μš©ν•˜μ—¬ node μƒνƒœμ™€ μ„ΈλΆ€ 사항 ν™•μΈν•˜κΈ°

kubectl describe node <NODE_NAME>

μœ„μ˜ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ 좜λ ₯λ˜λŠ” μ •λ³΄λŠ” μ•„λž˜κ³Ό 같이 μ£Όμ†Œ, μ»¨λ””μ…˜, μš©λŸ‰κ³Ό ν• λ‹Ή κ°€λŠ₯μ—¬λΆ€, 정보이닀.

μ£Όμ†Œ

addresses ν•„λ“œλŠ” cloud provider or bare metal 섀정에 따라 λ‹€λ₯΄κ²Œ λ‚˜νƒ€λ‚œλ‹€

  • HostName

    • λ…Έλ“œμ˜ 컀널에 μ˜ν•΄ μ•Œλ €μ§„ 호슀트λͺ…이닀

    • -hostname-override parameterλ₯Ό 톡해 μΉ˜ν™˜λ  수 μžˆλ‹€

  • ExternalIP

    • 일반적으둜 λ…Έλ“œμ˜ IP μ£Όμ†ŒλŠ” μ™ΈλΆ€λ‘œ 라우트 κ°€λŠ₯ν•˜λ‹€

    • 즉, ν΄λŸ¬μŠ€ν„° μ™ΈλΆ€μ—μ„œ 이용 κ°€λŠ₯ν•˜λ‹€

  • InternalIP

    • 일반적으둜 λ…Έλ“œμ˜ IP μ£Όμ†ŒλŠ” ν΄λŸ¬μŠ€ν„° λ‚΄μ—μ„œλ§Œ 라우트 κ°€λŠ₯ν•˜λ‹€

μ»¨λ””μ…˜

conditions fieldλŠ” λͺ¨λ“  Running μƒνƒœμ˜ nodeλ₯Ό κΈ°μˆ ν•œλ‹€

λ…Έλ“œ μ»¨λ””μ…˜
μ„€λͺ…

Ready

λ…Έλ“œκ°€ μƒνƒœ μ–‘ν˜Έν•˜λ©° νŒŒλ“œλ₯Ό μˆ˜μš©ν•  μ€€λΉ„κ°€ λ˜μ–΄ μžˆλŠ” 경우 True, λ…Έλ“œμ˜ μƒνƒœκ°€ λΆˆλŸ‰ν•˜μ—¬ νŒŒλ“œλ₯Ό μˆ˜μš©ν•˜μ§€ λͺ»ν•  경우 False, λ…Έλ“œ μ»¨νŠΈλ‘€λŸ¬κ°€ λ§ˆμ§€λ§‰ node-monitor-grace-period (κΈ°λ³Έκ°’ 40 κΈ°κ°„ λ™μ•ˆ λ…Έλ“œλ‘œλΆ€ν„° 응닡을 받지 λͺ»ν•œ 경우) Unknown

DiskPressure

λ””μŠ€ν¬ μ‚¬μ΄μ¦ˆ 상에 압박이 μžˆλŠ” 경우, 즉 λ””μŠ€ν¬ μš©λŸ‰μ΄ λ„‰λ„‰μΉ˜ μ•Šμ€ 경우 True, λ°˜λŒ€μ˜ 경우 False

MemoryPressure

λ…Έλ“œ λ©”λͺ¨λ¦¬ 상에 압박이 μžˆλŠ” 경우, 즉 λ…Έλ“œ λ©”λͺ¨λ¦¬κ°€ λ„‰λ„‰μΉ˜ μ•Šμ€ 경우 True, λ°˜λŒ€μ˜ 경우 False

PIDPressure

ν”„λ‘œμ„ΈμŠ€ 상에 압박이 μžˆλŠ” 경우, 즉 λ…Έλ“œ 상에 λ§Žμ€ ν”„λ‘œμ„ΈμŠ€λ“€μ΄ μ‘΄μž¬ν•˜λŠ” 경우 True, λ°˜λŒ€μ˜ 경우 False

NetworkUnavailable

λ…Έλ“œμ— λŒ€ν•΄ λ„€νŠΈμ›Œν¬κ°€ μ˜¬λ°”λ₯΄κ²Œ κ΅¬μ„±λ˜μ§€ μ•Šμ€ 경우 True, λ°˜λŒ€μ˜ 경우 False

μš©λŸ‰κ³Ό ν• λ‹Ή κ°€λŠ₯ μ—¬λΆ€

  • node 상에 μ‚¬μš© κ°€λŠ₯ν•œ λ¦¬μ†ŒμŠ€λ₯Ό λ‚˜νƒ€λ‚Έλ‹€

    • λ¦¬μ†ŒμŠ€μ—λŠ” CPU, λ©”λͺ¨λ¦¬ 그리고 node μƒμœΌλ‘œ μŠ€μΌ€μ€„ λ˜μ–΄μ§ˆ 수 μžˆλŠ” μ΅œλŒ€ pod μˆ˜κ°€ μžˆλ‹€

  • μš©λŸ‰ λΈ”λ‘μ˜ ν•„λ“œλŠ” node에 μžˆλŠ” λ¦¬μ†ŒμŠ€μ˜ μ΄λŸ‰μ„ λ‚˜νƒ€λ‚Έλ‹€

    • ν• λ‹Ήκ°€λŠ₯ 블둝은 일반 podμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” node의 λ¦¬μ†ŒμŠ€ 양을 λ‚˜νƒ€λ‚Έλ‹€

정보

  • 컀널 버전, μΏ λ²„λ„€ν‹°μŠ€ 버전 (kubeletκ³Ό kube-proxy 버전), μ»¨ν…Œμ΄λ„ˆ λŸ°νƒ€μž„ 상세 정보 및 λ…Έλ“œκ°€ μ‚¬μš©ν•˜λŠ” 운영 μ²΄μ œκ°€ 무엇인지와 같은 λ…Έλ“œμ— λŒ€ν•œ 일반적인 정보가 κΈ°μˆ λœλ‹€

    • 이 μ •λ³΄λŠ” kubelet이 nodeμ—μ„œ μˆ˜μ§‘ν•˜μ—¬ kubernetes API둜 μ „μ†‘ν•œλ‹€

Last updated