Kubernetes Readiness & Liveliness Probes - Thực tiễn tốt nhất

Người nhìn vào bức tranh

Trong Kubernetes, pod là đơn vị tính toán có thể triển khai nhỏ nhất có thể được tạo và quản lý. Một nhóm là một nhóm gồm một hoặc nhiều container (Docker, tên lửa, v.v.), với lưu trữ / mạng được chia sẻ và thông số kỹ thuật về cách chạy các container.

Sự sẵn sàng và sự sống động Các cuộc thăm dò có thể được gọi một cách khái quát trong Kiểm tra sức khỏe bối cảnh Kubernetes. Đầu dò container là các quá trình nhỏ chạy định kỳ. Kết quả của các thăm dò này (Thành công, Thất bại hoặc Không xác định) xác định phối cảnh Kubernetes của trạng thái Container container. Dựa trên chúng, Kubernetes quyết định cách xử lý từng container để duy trì khả năng phục hồi, tính sẵn sàng cao và thời gian hoạt động cao hơn.

Kiểm tra sức khỏe là một yêu cầu cho bất kỳ hệ thống phân phối!

Kiểm tra sức khỏe Kubernetes:

Kubernetes cung cấp hai loại kiểm tra sức khỏe: sẵn sàng và sống sót, và cả hai đều có mục đích riêng. Trong bối cảnh của bài viết này sẽ chọn:

  • /.well- Unknown / live - cho HTTP thăm dò trực tiếp
  • /.well- Unknown / yet - cho thăm dò sẵn sàng HTTP

Trong một vài từ, thăm dò HTTP có nghĩa là Kubernetes thực hiện tại các khoảng thời gian cụ thể HTTP Nhận yêu cầu trên /.well- Unknown / live và /.well- Unknown / yet. Mã trạng thái của phản hồi được sử dụng để quyết định những gì cần được thực hiện với nhóm. Nếu mã trạng thái nằm trong khoảng [200, 300) thì mọi thứ đều ổn. Nếu không thì:

  • nếu mã trạng thái cho đầu dò trực tiếp là 4xx hoặc 5xx, nhóm được khởi động lại
  • nếu mã trạng thái cho đầu dò sẵn sàng là 4xx hoặc 5xx thì pod được đánh dấu là không lành mạnh và lưu lượng HTTP sẽ không còn được chuyển hướng đến nó để tăng độ tin cậy và thời gian hoạt động.
Nếu các container độc lập với bất kỳ dịch vụ sao lưu nào, các container có thể có các kiểm tra mức độ sẵn sàng và khả năng sẵn sàng tiếp xúc trên cùng một bộ xử lý và những gì sau đây không áp dụng.

Cùng với các đồng đội từ Metro Systems Romania - Nhóm Độ tin cậy Trang web, chúng tôi đã xác định một danh sách các thực hành tốt nhất cho Kiểm tra Sức khỏe và đã khuyên các nhà phát triển ứng dụng tuân theo chúng. Những thực hành tốt nhất như vậy là:

  1. Trình xử lý Live & Ready cần có chức năng độc lập!

Như đã đề cập trước đó, đối với mỗi sản phẩm được triển khai trong ngữ cảnh Kubernetes, nên thực hiện 2 trình xử lý trả lời các cuộc gọi HTTP cho các cuộc gọi trực tiếp và các chế độ sẵn sàng. Thực hành tốt nhất đầu tiên liên quan đến các thăm dò này là mỗi trình xử lý cần phải có chức năng riêng được thực hiện.

2. Không tách rời logic cho các ứng dụng trực tiếp trên phạm vi trực tuyến

Điều này được áp dụng cho các ứng dụng xử lý công việc. Đối với Kubernetes, điều quan trọng là phải biết ứng dụng xử lý có chạy hay không. Nếu logic cho trực tiếp / sẵn sàng được tách rời trong một quy trình mới, kết quả không phải là kết luận.

3. Không thực hiện bất kỳ logic nào trên bộ xử lý trực tiếp trên mạng. Nó cần trả về trạng thái 200 nếu luồng chính đang chạy và 5xx nếu không.

Thăm dò này cho Kubernetes biết ứng dụng còn sống hay đã chết. Quyết định được đưa ra bằng cách kiểm tra mã trạng thái cho /.well- Unknown / live và nếu ứng dụng được tuyên bố là đã chết, Kubernetes sẽ khởi động lại nhóm. Từ quan điểm độ tin cậy, phản hồi cho thăm dò trực tiếp cần phải đúng nếu luồng chính của ứng dụng đang hoạt động và sai và ngược lại.

Trong bối cảnh này, logic logic, có nghĩa là triển khai một số loại kiểm tra đối với các dịch vụ được kết nối với nhau.

4. Triển khai logic trong trình xử lý sẵn sàng trên mạng để cung cấp câu trả lời đầy đủ về sự sẵn sàng của ứng dụng.

Sẵn sàng thăm dò cho Kubernetes biết nếu pod đã sẵn sàng để nhận lưu lượng HTTP. Là một nhà phát triển, điều quan trọng là phải thực hiện ở đây một số logic để kiểm tra tính khả dụng của tất cả các phụ thuộc phụ trợ của bạn cho ứng dụng. Khi trình xử lý sẵn sàng, được thực hiện, điều rất quan trọng là phải biết rõ ý nghĩa thực sự sẵn sàng cho ứng dụng của bạn. Nói cách khác, trên trình xử lý sẵn sàng, điều quan trọng là phải chạy tất cả các bước xác định rằng ứng dụng đã sẵn sàng để nhận và xử lý các yêu cầu https. Ví dụ: nếu ứng dụng cần thiết lập kết nối tới cơ sở dữ liệu để sẵn sàng xử lý các yêu cầu HTTP, thì trên đầu dò sẵn sàng là điều cần thiết để kiểm tra xem kết nối tới cơ sở dữ liệu đã được thiết lập và sẵn sàng sử dụng chưa.

Hãy xem xét một trường hợp cụ thể: ứng dụng bị kẹt khi thực hiện một số xử lý trên một luồng riêng biệt nhưng luồng chính đang hoạt động tốt. Là một nhà phát triển, bạn biết rằng một pod restart sẽ giải quyết vấn đề và bạn có thể thuyết phục Kubernetes tự động thực hiện nó cho bạn. Tất cả những gì bạn cần làm là đảm bảo ứng dụng phản hồi với 5xx trên đầu dò sẵn sàng và buộc đầu dò trực tiếp trả về số lượng tối thiểu 5xx phản hồi cho các cuộc gọi Kubernetes. Trong trường hợp này, Kubernetes sẽ khởi động lại nhóm vì nó được coi là đã chết.

5. Không cố gắng thiết lập lại trạng thái sẵn sàng của ứng dụng trên trình xử lý sẵn sàng. Điều này được thực hiện chỉ để kiểm tra là ứng dụng đã sẵn sàng, không làm cho nó sẵn sàng.

Nó khuyên rằng không có logic nào được thực hiện mà cố gắng thiết lập lại trạng thái sẵn sàng. Có logic như vậy có thể gây nguy hiểm cho một số thành phần của hệ thống.

Kết luận:

Các đầu dò trực tiếp và sẵn sàng là trái tim và linh hồn của các ứng dụng được triển khai trong Kubernetes. Chúng là những cách tiêu chuẩn để liên lạc với nhà ảo thuật và nói về tình trạng cũng như vấn đề của họ. Các đầu dò trực tiếp và sẵn sàng là những vũ khí mạnh mẽ mà nhà phát triển và ứng dụng cần có để đảm bảo rằng ứng dụng đó đáng tin cậy và có khả năng phục hồi.

Đặc biệt cảm ơn I Muff Ilie. Một phần của tài liệu này là kết quả của nghiên cứu và trí tuệ của ông.