- Công cụ runtime được phát triển để giảm lãng phí tài nguyên của các container không hoạt động trong môi trường Kubernetes
- Nếu không có kết nối TCP trong một khoảng thời gian nhất định, container sẽ tự động lưu checkpoint xuống đĩa
- Hoạt động dưới dạng containerd shim; lưu trạng thái bộ nhớ của container rồi tắt nó, sau đó khôi phục trong vài mili giây khi có kết nối đầu tiên
- Khi khôi phục, toàn bộ trạng thái của ứng dụng được phục hồi nguyên vẹn, nên từ góc nhìn người dùng hầu như không có độ trễ
- Sử dụng chuyển hướng dựa trên eBPF để đưa các gói TCP tới proxy, rồi chuyển sang kết nối trực tiếp sau khi hoàn tất khôi phục
- Thực hiện checkpoint và khôi phục bằng CRIU - Checkpoint and Restore in Userspace
- Cung cấp luồng tự động khôi phục ở yêu cầu đầu tiên thông qua activation sequence
- Bao gồm logic chờ thông minh, theo dõi hoạt động TCP gần đây để tránh việc dừng và khôi phục quá thường xuyên
- Trên Kubernetes, container vẫn được nhận diện như đang tiếp tục chạy nên ngăn việc runtime khởi động lại
- Khi dùng lệnh
kubectl exec, container sẽ tự động được khôi phục để có thể truy cập như container thông thường
- Mỗi tiến trình shim thu thập metric, và zeropod-manager ở cấp node sẽ tổng hợp chúng rồi công bố qua HTTP endpoint
- Cung cấp tính năng in-place scaling để điều chỉnh tài nguyên yêu cầu một cách động nếu cluster hỗ trợ
- Khi drain node, có thể di chuyển Pod đã scale down sang node khác
- Cũng hỗ trợ live migration như một tính năng thử nghiệm
- Phù hợp cho dịch vụ lưu lượng thấp, môi trường phát triển·staging, tier giá rẻ của nền tảng kiểu Heroku, cấu hình backend cho site tĩnh
- Hầu hết chương trình đều chạy được mà không cần chỉnh sửa riêng, và có thể phân tích lỗi CRIU qua log của containerd
4 bình luận
Tái phát minh
inetd? (đùa thôi)Elastic Machine Pool của Platform 9 mà tôi thấy ở AWS re:Invent năm ngoái lúc đó hơi ngại thử vì chỉ dành cho B2B, nhưng cái này cài đặt đơn giản và cách hoạt động cũng trực quan nên khá ổn. Tôi muốn phân bổ tài nguyên một cách mạnh tay trong môi trường phát triển mà không làm ảnh hưởng đến trải nghiệm người dùng, nên nếu PoC thấy ổn thì có vẻ đáng để áp dụng.
Tôi cứ tưởng nó khác KNative ở điểm nào, hóa ra có lẽ 2 câu dưới đây mới là cốt lõi.
lambda. . .. ?