Tôi đang thử nghiệm ứng dụng của mình trên cụm Kubernetes kim loại thô (phiên bản 1.22.1) và gặp sự cố khi khởi chạy ứng dụng của tôi dưới dạng Công việc.
Cụm của tôi có hai nút (chính và công nhân) nhưng công nhân được nối dây. Trên nút chính, có sẵn 21GB bộ nhớ cho ứng dụng.
Tôi đã cố khởi chạy ứng dụng của mình dưới dạng ba Công việc khác nhau cùng một lúc. Vì tôi đã đặt 16GB bộ nhớ làm cả yêu cầu tài nguyên và giới hạn nên chỉ một Công việc duy nhất được bắt đầu và hai Công việc còn lại ở trạng thái Đang chờ xử lý. Tôi đã đặt backoffLimit: 0 cho Công việc.
TÊN TÌNH TRẠNG SẴN SÀNG KHỞI ĐỘNG LẠI TUỔI
app1--1-8pp6l 0/1 Đang chờ 0 42 giây
app2--1-42ssl 0/1 Đang chờ xử lý 0 45 giây
app3--1-gxgwr 0/1 Đang chạy 0 46 giây
Sau khi Nhóm đầu tiên hoàn thành, chỉ một trong hai Nhóm ở trạng thái Đang chờ xử lý mới được bắt đầu. Tuy nhiên, một cái đã được bắt đầu và cái còn lại ở trạng thái OutOfMemory mặc dù không có vùng chứa nào được khởi động trong Pod.
TÊN TÌNH TRẠNG SẴN SÀNG KHỞI ĐỘNG LẠI TUỔI
app1--1-8pp6l 0/1 Chạy 0 thập niên 90
app2--1-42ssl 0/1 Hết bộ nhớ 0 93 giây
app3--1-gxgwr 0/1 Đã hoàn thành 0 94 giây
Các sự kiện của OutOfMemory Pod như sau:
Sự kiện:
Nhập Lý do Tuổi từ Tin nhắn
---- ------ ---- ---- -------
Cảnh báo FailedScheduling Trình lập lịch trình mặc định 3m41s (x2 trên 5m2s) Có sẵn 0/2 nút: 1 Không đủ bộ nhớ, 1 nút không thể lập lịch trình.
Bình thường Trình lập lịch mặc định 3m38s đã lên lịch Đã gán thành công test/app2--1-42ssl cho master
Cảnh báo Nút kubelet OutOfmemory 3m38s không có đủ tài nguyên: bộ nhớ, đã yêu cầu: 16000000000, đã sử dụng: 31946743808, dung lượng: 37634150400
Có vẻ như Pod đã được gán cho nút mặc dù không có đủ dung lượng cho nó vì Pod khác mới được khởi động.
Tôi đoán đây không phải là hành vi mong đợi của Kubernetes, có ai biết nguyên nhân của vấn đề này không?