Resource Requirement trong Kubernetes

Trong bài viết, hãy cùng mình tìm hiểu về cách Kubernetes quản lý và phân bổ tài nguyên (CPU và bộ nhớ) cho các pod. 

Xem thêm:

Taints và Tolerations trong Kuberbetes

Labels and Selectors trong Kubernetes

1. Resource requirement

Resource requirement là lượng CPU và bộ nhớ tối thiểu mà một pod cần để hoạt động.

Khi đặt resource requirement, Kubernetes đảm bảo pod sẽ luôn có ít nhất lượng tài nguyên cần thiết để pod hoạt động ổn định.

2. Giới hạn tài nguyên (Resource Limits):

Resource Limits là lượng CPU và bộ nhớ tối đa mà một pod trong kubernetes được phép sử dụng.

Resource Limits giúp tránh tình trạng một pod chiếm quá nhiều tài nguyên gây ảnh hưởng đến các pod khác, đảm bảo sự cân bằng và ổn định cho toàn bộ cụm. Nếu như một Pod cố gắng vượt qua giới hạn tài nguyên thì nó sẽ bị Out Of Memory

apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: elephant
  name: elephant
spec:
  containers:
  - image: polinux/stress
    name: elephant
    resources:
      limits:
        memory: 20Mi
      requests:
        memory: 5Mi
  dnsPolicy: ClusterFirst
  restartPolicy: Always
status: {}

4. Các trường hợp sử dụng

No Requests, No Limits: Pod có thể sử dụng bất kỳ lượng tài nguyên nào, tiềm ẩn nguy cơ thiếu hụt tài nguyên cho các pod khác.

No Request, Limits: Kubernetes sẽ tự động đặt resource request bằng với giới hạn.

Request và Limits: Pod được đảm bảo lượng tài nguyên yêu cầu và có thể sử dụng tối đa giới hạn đã đặt. Có vẻ đây là trường hợp lý tưởng Nhưng khi một Pod cần thêm CPU và một Pod không tiêu tốn hết CPU. Thì tại sao mình lại không nhường cái CPU đó cho Pod đang thiếu. Vì vậy trường hợp tiếp theo nó là lý tưởng nhất

Request, No Limits: Pod được đảm bảo lượng tài nguyên cần thiết và có thể sử dụng thêm tài nguyên nếu có sẵn.

Resource Requirement

5. Limit Ranges

Limit Ranges cho phép bạn đặt giá trị mặc định cho yêu cầu và giới hạn tài nguyên cho các pod được tạo mới trong một namespace.

Cách sử dụng: Tạo một file định nghĩa Limit Range với các giá trị mặc định, tối đa và tối thiểu cho CPU và bộ nhớ.

6. Resource Quotas

Resource Quotas cho phép bạn đặt giới hạn cứng về lượng tài nguyên (CPU và bộ nhớ) có thể được sử dụng bởi tất cả các pod trong một namespace. Giúp quản lý và kiểm soát lượng tài nguyên được sử dụng trong một namespace, tránh tình trạng quá tải tài nguyên.

Trên đây là một số kiến thức cơ bản về cách Kubernetes quản lý tài nguyên cho các pod. Cảm ơn bạn đã tham khảo kubernetes cơ bản trên ttnguyen.net.

Bài viết liên quan:

Manual Scheduling trong K8s

Kubenetes Deployments là gì ?

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em