Cụm Kubernetes lai với PowerStore CSI

Trong thế giới ngày nay và trong bối cảnh của Kubernetes (K8s), hybrid có thể có nhiều nghĩa. Đối với blog này, tôi sẽ sử dụng hybrid để chỉ việc chạy cả nút vật lý và ảo trong cụm K8s. Thông thường, khi chúng ta nghĩ đến cụm K8s gồm nhiều máy chủ, chúng ta thường cho rằng chúng phải có cùng loại và kích thước. Mặc dù điều đó đơn giản hóa kiến ​​trúc, nhưng không phải lúc nào cũng thực tế hoặc khả thi. Hãy cùng xem một ví dụ về việc sử dụng cả máy chủ vật lý và ảo trong cụm K8s.

Sự cần thiết là mẹ của sáng chế

Khi bạn cần hoàn thành công việc, thường thì bạn sẽ tìm ra cách để thực hiện. Điều này đã xảy ra trong một dự án gần đây tại Dell Technologies, nơi tôi cần thực hiện một số thử nghiệm lưu trữ với Dell PowerStore trên K8, nhưng tôi không có đủ máy chủ vật lý trong môi trường của mình cho mặt phẳng điều khiển và khối lượng công việc. Tôi biết rằng tôi muốn chạy khối lượng công việc hiệu suất của mình trên các máy chủ vật lý và biết rằng khối lượng công việc của mặt phẳng điều khiển sẽ nhẹ, tôi đã chọn chạy chúng trên các máy ảo (VM). Một điểm khác biệt nữa là tôi cũng muốn có thêm các nút công nhân, nhưng tôi không có đủ máy chủ vật lý cho mọi thứ. Mục tiêu là chạy khối lượng công việc hiệu suất của mình trên các máy chủ vật lý và cho phép mọi thứ khác chạy trên VM.

Dell PowerStore CSI sẽ cứu cánh!

Khối lượng công việc hiệu suất mà tôi đang chạy trên các máy chủ vật lý cũng sử dụng lưu trữ Fibre Channel. Điều này thêm một chút thay đổi cho khối lượng công việc chạy trên máy ảo nếu tôi trình bày lưu trữ thống nhất cho tất cả các máy chủ. Tuy nhiên, khi sử dụng các tính năng của Dell PowerStore CSI và Kubernetes, tôi không cần phải làm điều đó. Tôi chỉ cần trình bày lưu trữ Dell PowerStore với Fibre Channel cho các máy chủ vật lý của mình và chạy khối lượng công việc của mình ở đó.

Sau đây là sơ đồ cơ sở hạ tầng và các thành phần chính của tôi. Có một máy chủ vật lý chạy VMware ESXi lưu trữ một số VM được sử dụng cho các nút K8s và ba máy chủ vật lý khác chạy như các nút vật lý trong cụm.

Đây là cái mớ hỗn độn gì thế này?!?

Với tư cách là người đọc, có lẽ bạn đang nghĩ… đây là cơn ác mộng bảo trì hỗn tạp kiểu gì vậy? Tôi có các nút K8 không giống nhau và sau đó là một số giải pháp hack để làm cho nó hoạt động?!? Vâng, nó không hề lộn xộn chút nào, hãy để tôi giải thích cách nó khá đơn giản và thanh lịch.

Đối với những người mới sử dụng K8s, việc triển khai thứ gì đó như thế này có vẻ rất phức tạp và khó quản lý. Sau cùng, khối lượng công việc chỉ nên chạy trên các nút K8s vật lý được kết nối thông qua Kênh sợi quang. Ngoài K8s, Dell CSI và các tính năng mà chúng cung cấp, có thể sẽ là một mớ hỗn độn về việc viết kịch bản và kiểm tra phụ thuộc.

Một giải pháp tuyệt vời!

Trong giải pháp này, tôi đã tận dụng các tính năng nhãn và lập lịch của K8s với các tính năng PowerStore CSI để triển khai một giải pháp đơn giản nhằm thực hiện điều này. Việc triển khai này rất sạch sẽ và dễ bảo trì mà không cần các tập lệnh hoặc cấu hình phức tạp để duy trì.

Bước 1 – Cấu hình trình điều khiển PowerStore CSI

Là một phần của cấu hình trình điều khiển PowerStore CSI, một trong những tính năng được hỗ trợ (lựa chọn nút) là khả năng chọn các nút mà các pod K8s (trong trường hợp này là trình điều khiển CSI) sẽ chạy, bằng cách sử dụng nhãn K8s. Trong hình sau, trong cấu hình trình điều khiển, tôi chỉ định rằng trình điều khiển PowerStore CSI chỉ nên chạy trên các nút có chứa nhãn “fc=true”. Bản thân nhãn có thể chứa bất kỳ giá trị nào; điều quan trọng là giá trị này phải khớp với tìm kiếm.

Sau đây là một đoạn trích từ tệp cấu hình Dell PowerStore CSI cho thấy cách thực hiện việc này.

Đây là thiết lập cấu hình một lần được thực hiện trong quá trình triển khai trình điều khiển Dell CSI.

Bước 2 – Gắn nhãn các nút vật lý

Bước tiếp theo là áp dụng nhãn “fc=true” cho các nút chứa cấu hình Fibre Channel mà chúng ta muốn nút chạy trên đó. Đơn giản như chạy lệnh “ kubectl label nodes <your-node-name> fc=true ”. Khi nhãn này được đặt, các pod trình điều khiển CSI sẽ chỉ chạy trên các nút K8s chứa giá trị nhãn này.

Nhãn này chỉ cần được áp dụng khi thêm các nút mới vào cụm hoặc nếu bạn muốn thay đổi vai trò của nút này và xóa nó khỏi khối lượng công việc này.

Bước 3 – Để Kubernetes thực hiện phép thuật của nó

Bây giờ, tôi tận dụng chức năng cơ bản của K8s. Lập lịch tài nguyên Kubernetes đánh giá các yêu cầu về tài nguyên cho một pod và sẽ chỉ lập lịch trên các nút đáp ứng các yêu cầu đó. Các khối lưu trữ do trình điều khiển Dell PowerStore CSI cung cấp là một phần phụ thuộc cho các pod khối lượng công việc của tôi và do đó, khối lượng công việc của tôi sẽ chỉ được lập lịch trên các nút K8s có thể đáp ứng được phần phụ thuộc này. Vì tôi đã bật ràng buộc lựa chọn nút cho trình điều khiển CSI chỉ trên các nút vật lý, nên chúng là các nút duy nhất có thể lấp đầy phần phụ thuộc lưu trữ PowerStore CSI.

Kết quả của cấu hình này là ba nút vật lý mà tôi đã gắn nhãn là những nút duy nhất có thể chấp nhận khối lượng công việc hiệu suất của tôi. Đây là giải pháp rất đơn giản, không yêu cầu cấu hình hoặc tập lệnh phức tạp.

Sau đây là sơ đồ kiến ​​trúc tương tự hiển thị các nút được gắn nhãn cho khối lượng công việc.

Kubernetes mang đến nhiều khả năng mới thú vị có thể cung cấp các giải pháp tinh tế cho những thách thức phức tạp. Sự hợp tác mới nhất của chúng tôi với Microsoft đã sử dụng kiến ​​trúc này. Để biết thông tin chi tiết đầy đủ, hãy xem sách trắng chung mới nhất của chúng tôi: Dell PowerStore với Azure Arc-enabled Data Services , trong đó nêu bật hiệu suất và quy mô.