Kiến trúc cluster

Phân bổ tài nguyên worker node

Trong một worker node, ngoài container workload (các ứng dụng được triển khai lên cluster), các thành phần của Bizfly Kubernetes Engine và các thành phần của Kubernetes (vd: kubelet) cần (reserve) một lượng tài nguyên (cpu/memory) nhất định để thực hiện các tác vụ của chúng.

Do vậy, bạn sẽ thấy sự chênh lệch tài nguyên giữa Capacity (cấu hình thực tế của worker node) và Allocatable (lượng tài nguyên khả dụng trong Kubernetes Engine cluster). Worker node cấu hình càng cao thì thường chạy nhiều workload hơn, và sẽ yêu cầu nhiều tài nguyên hơn cho các thành phần của Kubernetes.

Để kiểm tra lượng tài nguyên có thể sử dụng cho một worker node hãy thực hiện lệnh sau, thay thế NODE_NAME bằng tên node bạn muốn kiểm tra:

kubectl describe node NODE_NAME | grep Allocatable -B 7 -A 6

Kết quả cho thấy lượng tài nguyên thực tế của worker node Capacity và lượng tài nguyên có thể sử dụng Allocatable

Ví dụ worker node có cấu hình 2 vCPUs và 2 GiB Memory

Capacity:
  cpu:                2
  ephemeral-storage:  51558604Ki
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             2041040Ki
  pods:               110
Allocatable:
  cpu:                1930m
  ephemeral-storage:  47516409368
  hugepages-1Gi:      0
  hugepages-2Mi:      0
  memory:             1428688Ki
  pods:               110
Eviction threshold

Kubelet dựa vào ngưỡng Eviction threshold để quyết định khi nào thì node được coi là đang quá tải và thực hiện terminate các pods để giảm tải cho worker node.

Eviction threshold đối với Memory ở mức mặc định là 100MiB

Allocatable resources được tính toán theo công thức sau:

ALLOCATABLE = CAPACITY - RESERVED - EVICTION-THRESHOLD

RESERVED CPU được tính theo công thức sau:

  • 6% của core đầu tiên

  • 1% của core tiếp theo (tối đa 2 cores)

  • 0.5% của 2 core tiếp theo (tối đa 4 cores)

  • 0.25% của phần core còn lại ngoài 4 cores trên

RESERVED Memory được tính theo công thức sau:

  • 255 MiB với node có ít hơn 1 GB Memory

  • 25% của 4 GiB memory đầu tiên

  • 20% của 4 GiB memory tiếp theo (tối đa 8 GiB)

  • 10% của 8 GiB memory tiếp theo (tối đa 16 GiB)

  • 6% của 112 GiB memory tiếp theo (tối đa 128 GiB)

  • 2% của phần memory còn lại ngoài 128 GiB trên