Dự án

Tổng quan

Hồ sơ

Task #1081

Cập nhật bởi Tùng Nguyễn cách đây 3 tháng

Mục tiêu: xây dựng giải pháp lưu trữ trên môi trường k8s, phù hợp cho các service có tính năng replica mức app như (MongoDB, Elasticsearch ...) 
 Phương án: Sử dụng local static persistenc volume  
 https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner/tree/master/docs 

 Mô hình: https://app.diagrams.net/#G17w3CX-PqybY296zzIbChAMFhfhoe9JYI#%7B%22pageId%22%3A%22Z6QLZEgZqsh7oY3-1fRi%22%7D 

 ===== 
 Thực hiện test với 2 VM cài microk8s 
 B1: Thực hiện tạo folder /mnt/fast-disks trên các node 
 B2: Format và mount local disk vào folder 
 ``` c 
 mkdir -p /mnt/fast-disks 
 mkfs.ext4 /dev/sdb 
 DISK_UUID=$(sudo blkid -s UUID -o value /dev/sdb) 
 mkdir /mnt/fast-disks/$DISK_UUID 
 --- Auto mount when boot --- 
 nano /etc/fstab 
 /dev/disk/by-uuid/<UUID> /mnt/fast-disks/<UUID> ext4 defaults 0 1 

 ``` 
 B3: Cài đặt local-provisioning 

 ``` c 
 --- Install Helm --- 
 curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 
 chmod 700 get_helm.sh 
 ./get_helm.sh 

 --- Install --- 
 git clone https://github.com/kubernetes-sigs/sig-storage-local-static-provisioner.git 
 helm repo add sig-storage-local-static-provisioner https://kubernetes-sigs.github.io/sig-storage-local-static-provisioner 
 cp sig-storage-local-static-provisioner/helm/provisioner/values.yaml /root/values.yaml 

 --- Tạo storage class --- 
 nano local-provisioner.yaml 
 # Only create this for K8s 1.9+ 
 apiVersion: storage.k8s.io/v1 
 kind: StorageClass 
 metadata: 
   name: fast-disks 
 provisioner: kubernetes.io/no-provisioner 
 volumeBindingMode: WaitForFirstConsumer 
 # Supported policies: Delete, Retain 
 reclaimPolicy: Delete 

 --- Create Provisioner --- 
 helm install -f values.yaml -n kube-system local-provisioner ./sig-storage-local-static-provisioner/helm/provisioner/ 

 ``` 
 Sau khi tạo provisioner, nếu có bất kì folder nào trong folder /mnt/fast-disks thì provisoner sẽ tạo pv 
 ![](clipboard-202408190950-sq2id.png) 

 === 
 Thử tạo service mongodb với repica=2 
 ![](clipboard-202408190950-7f9zy.png) 

 === 
 Sau khi reboot lại node K8s thì pod trên node tự start lại 

 === 
 Nhược điểm: khi 1 pvc được tạo, mặc dù cho manual size của pvc nhỏ hơn capacity của pv nhưng pvc vẫn chiếm toàn bộ capacity của pv đó.

Quay lại