Hiện tại của k8s của mình có tổng cộng 6 node: 3 node HDD và 3 node SDD
giờ mình thực hiện đánh label cho các node HDD
kubectl label nodes k8s-worker-01 node=storage-hdd
Mình cũng đã hướng dẫn cái đặt longhorn:
Hồi trước thì ý tưởng của mình là tạo cụm là worker storage k8s chạy ssd và khi mà mình persistem volume thì mình sẽ chạy trên những con ssd đó.
Sau khi nâng cập HDD khá là ngon dành riêng các cho k8s và 3 con worker storage chạy nvme.
mình nảy ra ý định mình sẽ tạo nhiều storage class để chỉ định hdd và ssd.
Giờ bạn lấy value của longhorn he. Chỉ bạn tận rang luôn
helm repo add longhorn https://charts.longhorn.io
helm search repo longhorn
WARNING: Kubernetes configuration file is group-readable. This is insecure. Location: /root/.kube/config
WARNING: Kubernetes configuration file is world-readable. This is insecure. Location: /root/.kube/config
NAME CHART VERSION APP VERSION DESCRIPTION
longhorn/longhorn 1.2.2 v1.2.2 Longhorn is a distributed block storage system ...
helm show values longhorn/longhorn > longhorn.yaml
>>>tạo namespace.
kubectl create ns longhorn-system
Mục đích lấy value để sem họ cho chúng ta khai báo nodeAffinity trong helm charn hông?
và cuối cùng là ko thấy config liên quan đến nodeAffinity
Không quan tâm đến nodeAffinity, Mình change lại value.yaml deploy longhorn như sau.
longhornDriver và longhornDriver thì mình chỉ muốn cài lên HDD cho tiết kiệm.
longhornManager mình gắn thêm tolerations để deploy lên tất cả các node worker trong cum.
longhornManager:
tolerations:
- key: "node"
operator: "Equal"
value: "storage-ssd"
effect: "NoSchedule"
longhornDriver:
nodeSelector:
node: "storage-hdd"
longhornUI:
nodeSelector:
node: "storage-hdd"
sau khi sync trên argocd thì được như sau
https://www.gushiciku.cn/pl/gnQe/zh-tw
theo bài việt của anh trung của.
Mình sẽ tạo 2 phần vùng storage class là hdd và ssd.
Giờ mình tạo 1 storage class dành riêng cho ổ hdd
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: longhorn-normal
provisioner: driver.longhorn.io
parameters:
numberOfReplicas: "3"
staleReplicaTimeout: "480"
diskSelector: "hdd"
nodeSelector: "normal"
Giờ tạo thử 1 pvc sem thế nào
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
labels:
name: pvc-hdd
name: pvc-hdd
spec:
storageClassName: longhorn-normal
accessModes:
- "ReadWriteOnce"
resources:
requests:
storage: "8Gi"
Nếu bạn muốn longhorn có create volume trên các node có Taint Toleration thì sem thêm bài bên dưới
có cách nào để tách traffic replicate disk đi ra một card mạng riêng không nhỉ. chứ giờ nó đi theo pod thì dễ bị nghẽn quá.
Theo cá nhân mình thì quan miệm này có từ thời mà các anh hosting chạy ảo hoá. Đương nhiên nó sẽ vẫn đúng trong 1 số trường hợp đặc thù.
Muốn làm được việc mà bạn nói thì sẽ cần tìm hiểu khá sâu về network của k8s và mình nghĩ là bạn sẽ có thể không chọn longhorn
GIờ nhìn theo khía cạnh khác. Bạn đi trên đường có khi nào bạn thấy đường xe máy chật cứng và đường ô tô thì rộng thêng thang chưa?
Thay vì bạn làm cho hệ thống k8s trở nên quá phức tạm và vẫn muốn sài longhorn để pv và pvc cho nó đơn giản
Bạn mua con 1 server 4 port 10Gigabit xong bạn Bonding lại. Thì bw lí tưởng 40Gigabit, hotswap network card,…
Rồi bạn có hệ thống monitor traffic và alert ngon lành thì mình nghĩ đó không còn là vấn đề