Kubernetes, Container và HPC

Software Container và Kubernetes là các công cụ quan trọng để xây dựng, triển khai, chạy và quản lý các ứng dụng doanh nghiệp hiện đại ở quy mô lớn và cho phép khả năng vận hành nhanh hơn và đáng tin cậy hơn cho người dùng cuối, trong khi sử dụng tài nguyên hiệu quả hơn và giảm chi phí.

Gần đây, điện toán hiệu năng cao (HPC) đang tiến gần hơn đến doanh nghiệp và do đó có thể hưởng lợi từ các nền tảng container cho HPC cùng với hệ sinh thái Kubernetes, với các yêu cầu mới để nhanh chóng phân bổ và thu hồi tài nguyên điện toán cho các HPC workload. Năng lực xử lý, cho workload của doanh nghiệp hoặc HPC, không còn cần thiết phải được lên kế hoạch trước nhiều năm.

Nhận tài nguyên theo yêu cầu từ nhóm tài nguyên điện toán dùng chung chưa bao giờ dễ dàng hơn khi các nhà cung cấp dịch vụ đám mây và nhà cung cấp phần mềm liên tục đầu tư và cải thiện dịch vụ của họ. Trong điện toán doanh nghiệp, phần mềm đóng gói trong container image và việc chạy trên container đã trở thành tiêu chuẩn. Kubernetes đã trở thành nền tảng container và công cụ điều phối tài nguyên được sử dụng rộng rãi nhất trong các công ty Fortune 500. Cộng đồng HPC, dẫn đầu bởi những nỗ lực trong cộng đồng AI, đang chọn khái niệm này và áp dụng nó vào các công việc hàng loạt và các ứng dụng tương tác.

Container và HPC: Tại sao chúng ta nên quan tâm?

Lãnh đạo HPC có một thời gian khó khăn. Có rất nhiều thay đổi và cách suy nghĩ mới trong công nghệ phần mềm và hoạt động CNTT. Containerization đã trở nên phổ biến; phối hợp container với Kubernetes là tiêu chuẩn mới. Khối lượng công việc học tập sâu liên tục tăng dấu chân của họ và Kỹ thuật Độ tin cậy Trang web (SRE) đã được áp dụng trên nhiều trang web. Mỗi công nghệ mới rất khó để đánh giá mức độ hữu dụng của chúng đối với loại khối lượng công việc HPC.

Giới thiệu về Kubernetes

Nếu các kỹ sư hoặc nhà khai thác của bạn đang chạy một container trên máy tính xách tay của họ, họ có thể sử dụng Docker để làm điều đó. Nhưng khi có nhiều container có khả năng trên hàng chục hoặc hàng trăm máy, việc bảo trì chúng trở nên khó khăn. Kubernetes đơn giản hóa việc điều phối container bằng cách cung cấp lịch trình, quản lý vòng đời của container, các chức năng mạng và nhiều hơn nữa trong một nền tảng có thể mở rộng và mở rộng.

Các thành phần chính của Kubernetes là bậc thầy Kubernetes chứa máy chủ API, trình lập lịch biểu và trình quản lý bộ điều khiển. Bộ điều khiển là một khái niệm chính: họ coi chừng tình trạng tài nguyên hiện tại và so sánh chúng với trạng thái dự kiến. Nếu chúng khác nhau, chúng thực hiện các hành động để chuyển sang trạng thái dự kiến. Về phía thực thi, chúng ta có kubelet tiếp xúc với chủ cũng như proxy mạng. Kubelet quản lý các container bằng cách sử dụng giao diện thời gian chạy của container (CRI) để tương tác với các thời gian chạy như Docker, containerd hoặc CRI-O.

Vận hành Kubernetes, HPC Scheduler?

Kubernetes đang thực hiện khối lượng công việc và quản lý tài nguyên. Âm thanh quen thuộc? Có, theo nhiều cách, nó chia sẻ rất nhiều chức năng với các trình quản lý khối lượng công việc HPC truyền thống. Sự khác biệt chính là các loại khối lượng công việc họ tập trung vào. Trong khi các trình quản lý khối lượng công việc HPC tập trung vào việc chạy các công việc bộ nhớ phân tán và hỗ trợ các kịch bản thông lượng cao, Kubernetes chủ yếu được xây dựng để phối hợp các ứng dụng microservice được chứa.

Các HPC workload manager như Univa Grid Engine đã thêm một số lượng lớn các tính năng trong những thập kỷ qua. Một số chức năng đáng chú ý là:

– Hỗ trợ cho các công việc được chia sẻ và bộ nhớ phân phối (như dựa trên MPI)

– Đặt trước để phân bổ và chặn tài nguyên trước

– Chia sẻ công bằng để tùy chỉnh các mẫu sử dụng tài nguyên trên người dùng, dự án và phòng ban

– Bảo lưu tài nguyên để thu thập tài nguyên cho các công việc lớn

– Ưu tiên dừng các công việc trước thấp có lợi cho việc điều hành các công việc trước cao

– Lập lịch nhận biết NUMA để tự động phân bổ lõi và ổ cắm

– Tuân thủ các tiêu chuẩn để nộp và quản lý công việc (như DRMAA và DRMAAv2)

Các nhà quản lý khối lượng công việc HPC được điều chỉnh về tốc độ, thông lượng và khả năng mở rộng, có khả năng chạy hàng triệu công việc hàng ngày và hỗ trợ cơ sở hạ tầng của các siêu máy tính lớn nhất thế giới. Những gì các nhà quản lý khối lượng công việc HPC truyền thống thiếu là phương tiện để hỗ trợ các kiến ​​trúc microservice, khả năng quản lý container tích hợp sâu, quản lý mạng và quản lý vòng đời ứng dụng. Chúng chủ yếu được xây dựng để chạy các công việc hàng loạt trong các tình huống khác nhau như thông lượng cao, công việc MPI trải rộng qua hàng trăm hoặc hàng nghìn nút, công việc chạy hàng tuần hoặc công việc sử dụng các loại tài nguyên đặc biệt (GPU, GPU, giấy phép, v.v.).

Mặt khác, Kubernetes được xây dựng cho các ứng dụng microservice được đóng gói từ dưới lên. Một số tính năng đáng chú ý là:

– Quản lý các bộ vỏ. Pods bao gồm một hoặc nhiều container cùng vị trí.

– Chức năng kết nối mạng thông qua mạng lớp phủ có thể cắm

– Tự phục hồi thông qua khái niệm bộ điều khiển so sánh dự kiến ​​với trạng thái hiện tại

– Cấu hình kiểu khai báo

– Chức năng cân bằng tải

– Cập nhật các phiên bản khác nhau của khối lượng công việc

– Tích hợp trong nhiều giải pháp giám sát và ghi nhật ký

– Móc để tích hợp lưu trữ liên tục bên ngoài trong nhóm

– Khám phá dịch vụ và định tuyến

Những gì Kubernetes thiếu tại thời điểm này là một hệ thống xếp hàng công việc hàng loạt thông lượng cao thích hợp với hệ thống quy tắc tinh vi để quản lý phân bổ tài nguyên. Nhưng một trong những nhược điểm chính mà chúng ta thấy là các ứng dụng kỹ thuật HPC truyền thống chưa được xây dựng để tương tác với Kubernetes. Nhưng điều này sẽ thay đổi trong tương lai. Mặt khác, khối lượng công việc AI mới đang hỗ trợ Kubernetes rất tốt – trên thực tế, nhiều gói trong số này được nhắm mục tiêu đến Kubernetes.

Khối lượng công việc HPC có thể được quản lý bởi Kubernetes?

Chúng ta nên kết hợp cả hai hệ thống quản lý khối lượng công việc Kubernetes và HPC để đáp ứng đầy đủ các yêu cầu của HPC. Kubernetes sẽ được sử dụng để quản lý các thùng chứa HPC cùng với tất cả các dịch vụ cần thiết. Bên trong các thùng chứa, không chỉ có thể chạy ứng dụng kỹ thuật mà còn có khả năng cắm vào cụm HPC hiện có hoặc chạy toàn bộ cài đặt trình quản lý tài nguyên HPC (như SLURM hoặc Univa Grid Engine). Theo cách đó, chúng tôi có thể cung cấp khả năng tương thích với các ứng dụng kỹ thuật và có thể khai thác các khả năng lập lịch hàng loạt mở rộng. Đồng thời, toàn bộ việc triển khai của chúng tôi có thể được vận hành trong tất cả các môi trường được kích hoạt Kubernetes với những lợi thế của việc điều phối container được tiêu chuẩn hóa.

Dễ quản trị

Môi trường HPC bao gồm một bộ container lớn. Sự trừu tượng hóa cao hơn của việc điều phối container so với các công cụ thời gian chạy container tự quản lý cung cấp sự linh hoạt cần thiết mà chúng ta cần để đáp ứng các yêu cầu khác nhau của khách hàng. Các hoạt động quản lý như nhân rộng việc triển khai đơn giản hơn nhiều để thực hiện và thực hiện.

Thời gian chạy cho lai và nhiều đám mây cung cấp tính di động thực sự

Tính di động là một giá trị quan trọng của container. Kubernetes cung cấp cho chúng tôi tính di động này cho các đội container. Chúng tôi có thể có cùng trải nghiệm tại chỗ cũng như trên các cơ sở hạ tầng đám mây khác nhau. Các kỹ sư có thể chuyển đổi cơ sở hạ tầng liền mạch mà không có bất kỳ thay đổi nào cho các kỹ sư. Theo cách đó chúng ta có thể chọn cơ sở hạ tầng theo các tiêu chí như giá cả, hiệu suất và khả năng. Khi chạy trên cơ sở, chúng tôi có thể bắt đầu cung cấp trải nghiệm đám mây lai thực sự bằng cách cung cấp cơ sở hạ tầng phù hợp với cùng trải nghiệm ứng dụng và HPC và sử dụng liền mạch tài nguyên đám mây theo yêu cầu khi được yêu cầu.

Điều gì tiếp theo?

Khai thác Kubernetes cho các yêu cầu cụ thể của HPC và khối lượng công việc kỹ thuật thật sự không đơn giản. Nhưng do sự thành công của Kubernetes và kiến ​​trúc mở và có thể mở rộng của nó, hệ sinh thái đang mở ra cho các ứng dụng HPC chủ yếu được thúc đẩy bởi nhu cầu về khối lượng công việc AI mới và các HPC container.

Liên hệ tác giả