Điểm:1

Kubernetes Pod không thành công với trạng thái OutOfMemory ngay sau khi được lên lịch

lá cờ ao

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?

Mikolaj S. avatar
lá cờ cn
Bạn nói đúng, hành vi này không được mong đợi - như tôi đã thử nghiệm cục bộ (cấu hình giống như cấu hình của bạn - 3 công việc có giới hạn và yêu cầu được đặt) - mỗi công việc đã hoàn thành khi công việc trước đó kết thúc. Tôi thấy rằng bạn có hai nút - bạn có muốn chạy một công việc trên nút cụ thể không? Tại sao một trong các nút có `node.kubernetes.io/unreachable:` taint? Bạn thử đợi `app1--1-8pp6l ` kết thúc rồi kiểm tra xem? Bạn đang sử dụng chính xác giải pháp Kubernetes nào cho bare-metal? Lỗi có thể liên quan đến giải pháp cụ thể.
Daigo avatar
lá cờ ao
Tôi đính kèm tin nhắn sai, xin lỗi. Tôi thực sự có hai nút và công nhân được nối dây. (Tôi cũng đã chỉnh sửa bài đăng của mình). Sau khi hoàn tất `app1`, `app2` vẫn ở trạng thái OutOfMemory. Tôi đang sử dụng kubeadm để xây dựng cụm k8s của mình.
Điểm:1
lá cờ cn

Đó là vấn đề đã biết đối với 1.22.x phiên bản - bạn có thể tìm thấy nhiều chủ đề GitHub và Stackoverflow về điều này, ví dụ:

Bản sửa lỗi được bao gồm trong phiên bản 1.23:

  • Khắc phục hồi quy trong đó Kubelet không thể loại trừ các nhóm đã hoàn thành khỏi các tính toán về số lượng tài nguyên mà nó hiện đang sử dụng khi quyết định có cho phép thêm nhóm hay không. (#104577, @smarterclayton)

Vì vậy, vui lòng chỉ nâng cấp cụm Kubernetes của bạn lên phiên bản ổn định mới nhất.

Tôi hy vọng nó sẽ giúp bạn, nhưng hãy ghi nhớ một vấn đề tương tự khác đang xảy ra trên Github ngay cả khi đã áp dụng bản sửa lỗi (đề cập đây khoảng 10 ngày trước - trạng thái cho ngày 13 tháng 1 năm 2022):

Liên kết ở đây để hoàn thiện - một triệu chứng tương tự có thể bị lộ sau khi sửa lỗi này như được mô tả trong #106884. Kubelet xem xét các tài nguyên để kết thúc các nhóm đang được sử dụng (chúng đúng như vậy!), nhưng bộ lập lịch bỏ qua các nhóm kết thúc và lên lịch cho các nhóm mới. Bởi vì kubelet hiện xem xét các nhóm kết thúc, nên nó từ chối các nhóm được lên lịch lại nhanh chóng đó.

Sau đó, có lẽ giải pháp duy nhất là hạ cấp xuống phiên bản 1.21.

Điểm:0
lá cờ us

Bạn có thể vui lòng đăng yaml của nhóm không?

Tôi đã gặp một lỗi tương tự ở một trong những khách hàng của mình khi họ mắc lỗi đánh máy ở giới hạn bộ nhớ (860m thay vì 860Mi) đáng xem

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.