Helpex - Trao đổi & giúp đỡ Đăng nhập

Lưu trữ Gluster cho Kubernetes Với Heketi

một điểm quan trọng khi chạy vùng chứa bằng kubernetes là quản lý các ứng dụng trạng thái, chẳng hạn như cơ sở dữ liệu. chúng tôi sẽ sử dụng gluster cùng với kubernetes trong bài đăng này để chứng minh cách bạn có thể chạy các ứng dụng trạng thái trên kubernetes

glusterfs và heketi

glusterfs là một hệ thống tệp mạng có thể mở rộng mã nguồn mở có thể được tạo bằng cách sử dụng phần cứng bên ngoài. gluster cho phép tạo ra nhiều loại khối lượng khác nhau như phân phối, sao chép, sọc, phân tán và nhiều kết hợp của chúng như được mô tả chi tiết ở đây .

heketi là một trình quản lý khối lượng gluster cung cấp một giao diện đẹp mắt để tạo / quản lý khối lượng gluster. heketi giúp các dịch vụ đám mây như kubernetes, openshift và openstack manila dễ dàng tương tác với các cụm gluster và khối lượng cung cấp cũng như quản lý bố cục gạch.

trường hợp sử dụng

mục đích của bài đăng này là để trình bày cách tạo một cụm glusterfs, quản lý cụm này bằng cách sử dụng heketi để cung cấp khối lượng và sau đó cài đặt một ứng dụng demo để sử dụng khối lượng gluster.

chúng ta sẽ tạo một cụm kubernetes 4 nút với hai đĩa chưa được định dạng trên mỗi nút. sau đó chúng ta sẽ cài đặt glusterfs dưới dạng daemonset và heketi như một dịch vụ để tạo các khối lượng gluster, sẽ được cơ sở dữ liệu postgres sử dụng statefulset sử dụng. chúng tôi sẽ có một ứng dụng khác bổ sung 1 mục nhập mỗi giây vào db postgres và một ứng dụng bình cho phép chúng tôi xem nội dung của cơ sở dữ liệu. chúng tôi cũng sẽ di chuyển db postgres từ nút này sang nút khác và vẫn có thể truy cập dữ liệu của chúng tôi.

các bước thực hiện

điều kiện tiên quyết

  • tài khoản nền tảng đám mây của google với đặc quyền quản trị viên.
  • api phải được bật trên tài khoản gcp.

tạo và khởi động cụm kubernetes

  • đăng nhập vào bảng điều khiển đám mây của google và mở google cloud shell Lưu trữ Gluster cho Kubernetes Với Heketi
  • tạo một thư mục có tên là “gluster-heketi” và cd gluster-heketi
  • sao chép git repo bằng lệnh sau:
git clone https://github.com/infracloudio/gluster-heketi-k8s.git .
  • chỉnh sửa “cluster_and_disks.sh” và thay đổi biến project_id thành dự án gcp của bạn.
  • các biến cluster_name, zone và node_count có thể được thay đổi nếu cần.
  • thực thi tập lệnh “cluster_and_disks.sh”

điều này sẽ tạo ra một cụm gke 4 nút và mỗi nút sẽ có 2 đĩa chưa định dạng được gắn vào nó. tập lệnh này cũng sẽ tạo một tệp cấu trúc liên kết, tệp này sẽ được sử dụng như một sơ đồ cấu hình kubernetes. cấu trúc liên kết chứa các chi tiết của các nút kubernetes trong cụm và các đĩa được gắn của chúng.

note: following these steps will create resources which are chargeable by gcp. ensure to follow cleanup steps mentioned below to delete all resources once done with the demo.

thiết lập gluster, heketi và lớp lưu trữ

  • trong cấu hình mạng, hãy tạo một quy tắc tường lửa được gọi là “allow-heketi” và mở các cổng như hình dưới đây: Lưu trữ Gluster cho Kubernetes Với Heketi
  • chạy lệnh sau để nhập sơ đồ cấu hình trong kubernetes
    kubectl create -f heketi-turnkey-config.yaml
  • chạy lệnh sau để bắt đầu một bộ daemon gluster và cài đặt dịch vụ heketi. điều này tạo ra một nhóm tạm thời dựa trên một vùng chứa được tạo bởi janos lenart .
kubectl create -f heketi-turnkey.yaml
  • Nhật ký quy trình của nhóm này có thể được xem bằng lệnh:
kubectl logs heketi-turnkey -f
  • tệp yaml ở trên sẽ tạo một daemonset với cài đặt gluster, sẽ kiểm soát tất cả các nút và thiết bị được đề cập trong tệp cấu trúc liên kết. nó cũng sẽ cài đặt heketi dưới dạng pod và hiển thị api heketi thông qua một dịch vụ. Lưu trữ Gluster cho Kubernetes Với Heketi
  • bước tiếp theo là tạo lớp lưu trữ của chúng tôi , qua đó chúng tôi sẽ cho phép tạo động các khối lượng lấp lánh bằng cách gọi dịch vụ heketi. cần thực hiện các bước sau để thiết lập chính xác lớp lưu trữ:
    • lưu ý cổng nút của dịch vụ heketi như hình dưới đây: Lưu trữ Gluster cho Kubernetes Với Heketi
  • mở tường lửa cho cổng này trong quy tắc tường lửa allow-heketi của bạn như được hiển thị bên dưới: Lưu trữ Gluster cho Kubernetes Với Heketi
  • lưu ý ip công khai của một trong các nút kubernetes và cập nhật khóa url còn lại trong “storage_class.yaml” với ip công khai của một nút và cổng nút từ phía trên. (trong triển khai thế giới thực, bạn có thể có tên miền cho điểm cuối cụm kubernetes). ví dụ: Lưu trữ Gluster cho Kubernetes Với Heketi
  • bây giờ hãy chạy “kubectl create -f storage_class.yaml” để kubernetes có thể nói chuyện với heketi để tạo khối lượng khi cần thiết.
  • tiếp theo, chạy “kubectl create -f postgres-srv-ss.yaml” để tạo một nhóm postgres trong một tập hợp trạng thái. tập hợp này được hỗ trợ bởi một khối lượng lấp lánh. cấu hình để đạt được điều này được hiển thị bên dưới: statefulset này được hiển thị bởi một tên dịch vụ được gọi là “postgres”. Lưu trữ Gluster cho Kubernetes Với Heketi
  • chạy “kubectl get pvc” để kiểm tra xem khối lượng đã được tạo và liên kết với nhóm như mong đợi hay chưa. kết quả sẽ giống như dưới đây: Lưu trữ Gluster cho Kubernetes Với Heketi
  • chạy “kubectl create -f pgwriter-deploy.yaml”. điều này sẽ tạo một triển khai cho một nhóm sẽ ghi 1 mục nhập mỗi giây vào db postgres đã tạo ở trên.
  • chạy “frontend.yaml”. điều này sẽ tạo ra một triển khai giao diện người dùng dựa trên bình, cho phép truy vấn db postgres. một bộ cân bằng tải bên ngoài (được gọi là bộ cân bằng tải) cũng được tạo ra trước dịch vụ.
  • nhập ip của loadbalancer vào trình duyệt để truy cập giao diện người dùng. nhập (ở định dạng hh: mm) phút trước (giờ hệ thống) và nhấp vào gửi. một danh sách các mục nhập có dấu thời gian và giá trị bộ đếm được hiển thị. Lưu trữ Gluster cho Kubernetes Với Heketi
  • chạy “kubectl description pod postgres-ss-0” và ghi lại nút mà pod đang chạy. Lưu trữ Gluster cho Kubernetes Với Heketi
  • bây giờ chúng ta sẽ xóa statefulset (hiệu quả là db) và tạo lại nó. chạy các lệnh sau:
    • kubectl delete -f postgres-srv-ss.yaml
    • kubectl create -f postgres-srv-ss.yaml
  • chạy “kubectl description pod postgres-ss-0” và quan sát rằng pod được gán cho một nút mới. Lưu trữ Gluster cho Kubernetes Với Heketi
  • quay trở lại giao diện người dùng và đặt hh: mm như trước. dữ liệu có thể được quan sát là nguyên vẹn bất chấp sự di chuyển của máy chủ cơ sở dữ liệu.

dọn dẹp

  • chạy lệnh sau để xóa bộ cân bằng tải:
kubectl delete -f frontend.yaml
  • xóa cụm gke: Lưu trữ Gluster cho Kubernetes Với Heketi
  • khi cụm gke bị xóa, hãy xóa các đĩa: Lưu trữ Gluster cho Kubernetes Với Heketi

phần kết luận

heketi là một cách đơn giản và thuận tiện để tạo và quản lý khối lượng gluster. nó kết hợp rất tốt với các lớp lưu trữ kubernetes để cung cấp khả năng tạo khối lượng theo yêu cầu, có thể được sử dụng với các tính năng lấp lánh khác như sao chép, phân dải, v.v. để xử lý nhiều trường hợp sử dụng lưu trữ phức tạp.

21 hữu ích 0 bình luận 14k xem chia sẻ

Có thể bạn quan tâm

loading