
저는 이기종 구성을 사용하여 RPi4에서 k3s 클러스터를 실행하고 있습니다(한 노드에는 용량은 많지만 HDD는 느리고, 다른 노드에는 SSD 드라이브가 있고, 세 번째 노드에는 SD 카드만 있음).
내 필요에 따라 노드 및 포드에 연결된 "로컬 경로" 종류의 영구 볼륨 및 클레임이 있습니다.
SSD 디스크가 있는 노드에 저장된 데이터를 처리하기 위해 디스크가 없는 노드에서 포드를 예약해야 하는 상황에 직면했습니다(ffmpeg를 사용하여 일부 비디오 파일을 mp4로 다시 인코딩하는데 이는 비용이 많이 드는 프로세스이기 때문에 SSD를 실행하는 노드의 속도를 늦추지 않고 유휴 노드에서 이 작업을 수행하고 싶습니다.
다른 노드에서 PV를 투명하게 마운트할 수 있습니까? 일부 nfs를 사용해야 합니까? 내가 원하는 작업을 수행하기 위해 베어 메탈 RPi4에서 사용할 수 있는 좀 더 발전된 유형의 볼륨이 있습니까?
문서를 보는 것은 별로 도움이 되지 않았습니다(설명된 사용 사례가 많지 않고 다양한 영구 볼륨 유형이 있습니다).
감사해요
답변1
내 생각엔 당신이 관심을 가질 것 같아요프로젝트 롱혼.
이는 모든 Kubernetes 클러스터를 위한 영구 스토리지 구현이며 Kubernetes 노드의 기존 디스크를 사용하여 Kubernetes 포드에 복제되고 안정적인 스토리지를 제공합니다.
에 설명된 대로롱혼 깃허브:
Longhorn은 가볍고 안정적이며 강력합니다. 하나의 kubectl apply 명령을 사용하거나 Helm 차트를 사용하여 기존 Kubernetes 클러스터에 Longhorn을 설치할 수 있습니다. Longhorn이 설치되면 Kubernetes 클러스터에 지속적인 볼륨 지원이 추가됩니다.
무엇보다도 직관적인 GUI 대시보드를 사용하여 사용자 정의할 수 있습니다.롱혼당신의 필요에.
메모:현재 Longhorn만 지원합니다.amd64.
설치
아래 예에서는 설치 방법을 보여 드리겠습니다.롱혼.
우선 open-iscsi
각 클러스터 노드에 설치되어 있어야 합니다. 예를 들어 다음을 사용하여 설치해야 합니다.
apt-get install open-iscsi
longhorn.yaml
다음으로 설치에 적용롱혼:
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/master/deploy/longhorn.yaml
그런 다음 을 만듭니다 longhorn
StorageClass
(나중에 를 사용하여 사용자 정의할 수 있음 ConfigMap
).
kubectl apply -f https://raw.githubusercontent.com/rancher/longhorn/master/deploy/longhorn.yaml
그게 우리가 사용을 시작하는 데 필요한 전부입니다롱혼:)
롱혼 UI
앞서 설명했듯이 유용한 GUI 대시보드를 사용할 수 있습니다.여기접근하는 방법을 확인할 수 있습니다. 또한 설명된 대로
대시보드를 외부 세계에 노출해야 할 수도 있습니다.Ingress
여기
대시보드 사용은 Longhorn UI
매우 직관적입니다. 예를 들어 "노드" 탭에서 스토리지 제공 전용 노드를 쉽게 지정할 수 있습니다.
롱혼 스토리지클래스
네임스페이스 에서 longhorn
StorageClass
편집하여 사용자 정의할 수 있습니다 . 예를 들어 매개변수를 (기본값)에서 다음으로 편집했습니다 .longhorn-storageclass
ConfigMap
longhorn-system
numberOfReplicas
3
1
root@kmaster:~# kubectl describe sc longhorn
Name: longhorn
IsDefaultClass: No
Annotations: longhorn.io/last-applied-configmap=kind: StorageClass
apiVersion: storage.k8s.io/v1
...
parameters:
numberOfReplicas: "1"
staleReplicaTimeout: "2880"
fromBackup: ""
...