Việc đặt các yêu cầu và giới hạn Kubernetes một cách hiệu quả có tác động lớn đến hiệu suất, tính ổn định và chi phí của ứng dụng. Tuy nhiên, làm việc với nhiều nhóm trong năm qua đã cho chúng tôi thấy rằng việc xác định giá trị phù hợp cho các thông số này là rất khó. Vì lý do này, chúng tôi đã tạo hướng dẫn ngắn này và sắp ra mắt một sản phẩm mới để giúp các nhóm thiết lập chính xác hơn các yêu cầu và giới hạn Kubernetes cho ứng dụng của họ.
Những thứ cơ bản
Yêu cầu và giới hạn tài nguyên là các tham số tùy chọn được chỉ định ở cấp vùng chứa. Kubernetes tính toán yêu cầu và giới hạn của Pod dưới dạng tổng các yêu cầu và giới hạn trên tất cả các vùng chứa của Pod. Kubernetes sau đó sử dụng các tham số này để lập kế hoạch và đưa ra quyết định phân bổ tài nguyên.
Yêu cầu
Pod sẽ nhận được dung lượng bộ nhớ mà chúng yêu cầu. Nếu chúng vượt quá yêu cầu bộ nhớ, chúng có thể bị giết nếu một nhóm khác cần bộ nhớ này. Các nhóm chỉ bị hủy khi sử dụng ít bộ nhớ hơn mức yêu cầu nếu hệ thống quan trọng hoặc khối lượng công việc có mức độ ưu tiên cao cần bộ nhớ.
Tương tự, mỗi vùng chứa trong Pod được phân bổ lượng CPU mà nó yêu cầu, nếu có. Nó có thể được phân bổ các chu kỳ CPU bổ sung nếu các Pod/Job đang chạy khác không cần đến tài nguyên sẵn có.
Lưu ý: nếu tổng số yêu cầu của Pod không có sẵn trên một nút thì Pod sẽ vẫn ở trạng thái Đang chờ xử lý (tức là không chạy) cho đến khi các tài nguyên này có sẵn.
Hạn mức
Giới hạn tài nguyên giúp bộ lập lịch Kubernetes xử lý tranh chấp tài nguyên tốt hơn. Khi một Pod sử dụng nhiều bộ nhớ hơn giới hạn của nó, các tiến trình của nó sẽ bị kernel hủy bỏ để bảo vệ các ứng dụng khác trong cụm. Các nhóm sẽ bị điều chỉnh CPU khi chúng vượt quá giới hạn CPU.
Nếu không có giới hạn nào được đặt thì nhóm có thể sử dụng bộ nhớ và CPU dư thừa khi khả dụng.
Sự đánh đổi
Việc xác định mức độ phù hợp cho các yêu cầu và giới hạn chính là quản lý sự đánh đổi, như được trình bày trong các bảng sau. Khi thiết lập yêu cầu, vốn có sự cân bằng giữa chi phí chạy ứng dụng và rủi ro về hiệu suất/ngưng hoạt động của ứng dụng này. Việc cân bằng những rủi ro này phụ thuộc vào chi phí tương đối của CPU/RAM bổ sung so với chi phí dự kiến của việc điều tiết ứng dụng hoặc sự cố ngừng hoạt động. Ví dụ: nếu việc phân bổ thêm 1 Gb RAM (chi phí 5 USD) giúp giảm 1% nguy cơ xảy ra sự cố ngừng ứng dụng (chi phí 10.000 USD) thì chi phí bổ sung cho các tài nguyên điện toán này sẽ xứng đáng.
Khi đặt ra giới hạn, sự đánh đổi là tương tự nhưng không hoàn toàn giống nhau. Sự cân bằng ở đây là hiệu suất tương đối của từng ứng dụng trên cơ sở hạ tầng dùng chung của bạn so với tổng chi phí chạy các ứng dụng này. Ví dụ: việc đặt tổng số giới hạn CPU cao hơn số lượng CPU được phân bổ sẽ khiến ứng dụng có nguy cơ bị hạn chế điều tiết. Cung cấp thêm CPU (tức là tăng chi tiêu) là một giải pháp tiềm năng trong khi giảm giới hạn CPU cho một số ứng dụng nhất định (tức là tăng rủi ro điều chỉnh) là một giải pháp khác.
Nội dung có sự tham khảo từ Bizfly Cloud và các nguồn khác.
Bizfly Cloud – Cung cấp dịch vụ điện toán đám mây tốt nhất tại Việt Nam
Vận hành bởi VCcorp
Địa chỉ: Số 1 Nguyễn Huy Tưởng, P. Thanh Xuân Trung, Q. Thanh Xuân, TP Hà Nội.
Tham khảo: https://bizflycloud.vn