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:
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.
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: