mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
Volume:
PVC support + Host Path idx support on ssd
This commit is contained in:
parent
b1b21e0564
commit
02be7ea2fc
|
@ -29,6 +29,14 @@ please set/update the corresponding affinity rule in values.yaml to an empty one
|
||||||
|
|
||||||
```affinity: ""```
|
```affinity: ""```
|
||||||
|
|
||||||
|
### PVC - storage class ###
|
||||||
|
|
||||||
|
on the volume stateful set added support for K8S PVC, currently example
|
||||||
|
with the simple local-path-provisioner from Rancher (comes included with k3d / k3s)
|
||||||
|
https://github.com/rancher/local-path-provisioner
|
||||||
|
|
||||||
|
you can use ANY storage class you like, just update the correct storage-class
|
||||||
|
for your deployment.
|
||||||
|
|
||||||
### current instances config (AIO):
|
### current instances config (AIO):
|
||||||
1 instance for each type (master/filer+s3/volume)
|
1 instance for each type (master/filer+s3/volume)
|
||||||
|
|
|
@ -126,3 +126,26 @@ Inject extra environment vars in the format key:value, if populated
|
||||||
{{- printf "%s%s%s:%s" $registryName $repositoryName $name $tag -}}
|
{{- printf "%s%s%s:%s" $registryName $repositoryName $name $tag -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
|
{{/* check if any PVC exists */}}
|
||||||
|
{{- define "volume.pvc_exists" -}}
|
||||||
|
{{- if or (or (eq .Values.volume.data.type "persistentVolumeClaim") (and (eq .Values.volume.idx.type "persistentVolumeClaim") .Values.volume.dir_idx )) (eq .Values.volume.logs.type "persistentVolumeClaim") -}}
|
||||||
|
{{- printf "true" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "false" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* check if any HostPath exists */}}
|
||||||
|
{{- define "volume.hostpath_exists" -}}
|
||||||
|
{{- if or (or (eq .Values.volume.data.type "hostPath") (and (eq .Values.volume.idx.type "hostPath") .Values.volume.dir_idx )) (eq .Values.volume.logs.type "hostPath") -}}
|
||||||
|
{{- printf "true" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- if or .Values.global.enableSecurity .Values.volume.extraVolumes -}}
|
||||||
|
{{- printf "true" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "false" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
|
@ -45,6 +45,19 @@ spec:
|
||||||
priorityClassName: {{ .Values.volume.priorityClassName | quote }}
|
priorityClassName: {{ .Values.volume.priorityClassName | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
enableServiceLinks: false
|
enableServiceLinks: false
|
||||||
|
{{- if .Values.volume.dir_idx }}
|
||||||
|
initContainers:
|
||||||
|
- name: seaweedfs-vol-move-idx
|
||||||
|
image: {{ template "volume.image" . }}
|
||||||
|
imagePullPolicy: {{ .Values.global.pullPolicy | default "IfNotPresent" }}
|
||||||
|
command: [ '/bin/sh', '-c' ]
|
||||||
|
args: ['if ls {{ .Values.volume.dir }}/*.idx >/dev/null 2>&1; then mv {{ .Values.volume.dir }}/*.idx {{ .Values.volume.dir_idx }}/; fi;']
|
||||||
|
volumeMounts:
|
||||||
|
- name: idx
|
||||||
|
mountPath: {{ .Values.volume.dir_idx }}
|
||||||
|
- name: data
|
||||||
|
mountPath: {{ .Values.volume.dir }}
|
||||||
|
{{- end }}
|
||||||
containers:
|
containers:
|
||||||
- name: seaweedfs
|
- name: seaweedfs
|
||||||
image: {{ template "volume.image" . }}
|
image: {{ template "volume.image" . }}
|
||||||
|
@ -118,9 +131,13 @@ spec:
|
||||||
-compactionMBps={{ .Values.volume.compactionMBps }} \
|
-compactionMBps={{ .Values.volume.compactionMBps }} \
|
||||||
-mserver={{ range $index := until (.Values.master.replicas | int) }}${SEAWEEDFS_FULLNAME}-master-{{ $index }}.${SEAWEEDFS_FULLNAME}-master:{{ $.Values.master.port }}{{ if lt $index (sub ($.Values.master.replicas | int) 1) }},{{ end }}{{ end }}
|
-mserver={{ range $index := until (.Values.master.replicas | int) }}${SEAWEEDFS_FULLNAME}-master-{{ $index }}.${SEAWEEDFS_FULLNAME}-master:{{ $.Values.master.port }}{{ if lt $index (sub ($.Values.master.replicas | int) 1) }},{{ end }}{{ end }}
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: seaweedfs-volume-storage
|
- name: data
|
||||||
mountPath: "/data/"
|
mountPath: "{{ .Values.volume.dir }}/"
|
||||||
- name: seaweedfs-volume-log-volume
|
{{- if .Values.volume.dir_idx }}
|
||||||
|
- name: idx
|
||||||
|
mountPath: "{{ .Values.volume.dir_idx }}/"
|
||||||
|
{{- end }}
|
||||||
|
- name: logs
|
||||||
mountPath: "/logs/"
|
mountPath: "/logs/"
|
||||||
{{- if .Values.global.enableSecurity }}
|
{{- if .Values.global.enableSecurity }}
|
||||||
- name: security-config
|
- name: security-config
|
||||||
|
@ -173,15 +190,27 @@ spec:
|
||||||
resources:
|
resources:
|
||||||
{{ tpl .Values.volume.resources . | nindent 12 | trim }}
|
{{ tpl .Values.volume.resources . | nindent 12 | trim }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- $hostpath_exists := include "volume.hostpath_exists" . -}}
|
||||||
|
{{- if $hostpath_exists }}
|
||||||
volumes:
|
volumes:
|
||||||
- name: seaweedfs-volume-log-volume
|
{{- if eq .Values.volume.data.type "hostPath" }}
|
||||||
hostPath:
|
- name: data
|
||||||
path: /storage/logs/seaweedfs/volume
|
|
||||||
type: DirectoryOrCreate
|
|
||||||
- name: seaweedfs-volume-storage
|
|
||||||
hostPath:
|
hostPath:
|
||||||
path: /storage/object_store/
|
path: /storage/object_store/
|
||||||
type: DirectoryOrCreate
|
type: DirectoryOrCreate
|
||||||
|
{{- end }}
|
||||||
|
{{- if and (eq .Values.volume.idx.type "hostPath") .Values.volume.dir_idx }}
|
||||||
|
- name: idx
|
||||||
|
hostPath:
|
||||||
|
path: /ssd/seaweedfs-volume-idx/
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq .Values.volume.logs.type "hostPath" }}
|
||||||
|
- name: logs
|
||||||
|
hostPath:
|
||||||
|
path: /storage/logs/seaweedfs/volume
|
||||||
|
type: DirectoryOrCreate
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.global.enableSecurity }}
|
{{- if .Values.global.enableSecurity }}
|
||||||
- name: security-config
|
- name: security-config
|
||||||
configMap:
|
configMap:
|
||||||
|
@ -205,8 +234,43 @@ spec:
|
||||||
{{- if .Values.volume.extraVolumes }}
|
{{- if .Values.volume.extraVolumes }}
|
||||||
{{ tpl .Values.volume.extraVolumes . | indent 8 | trim }}
|
{{ tpl .Values.volume.extraVolumes . | indent 8 | trim }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
{{- if .Values.volume.nodeSelector }}
|
{{- if .Values.volume.nodeSelector }}
|
||||||
nodeSelector:
|
nodeSelector:
|
||||||
{{ tpl .Values.volume.nodeSelector . | indent 8 | trim }}
|
{{ tpl .Values.volume.nodeSelector . | indent 8 | trim }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- $pvc_exists := include "volume.pvc_exists" . -}}
|
||||||
|
{{- if $pvc_exists }}
|
||||||
|
volumeClaimTemplates:
|
||||||
|
{{- if eq .Values.volume.data.type "persistentVolumeClaim"}}
|
||||||
|
- metadata:
|
||||||
|
name: data
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
storageClassName: {{ .Values.volume.data.storageClass }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.volume.data.size }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if and (eq .Values.volume.idx.type "persistentVolumeClaim") .Values.volume.dir_idx }}
|
||||||
|
- metadata:
|
||||||
|
name: idx
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
storageClassName: {{ .Values.volume.idx.storageClass }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.volume.idx.size }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if eq .Values.volume.logs.type "persistentVolumeClaim" }}
|
||||||
|
- metadata:
|
||||||
|
name: logs
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
storageClassName: {{ .Values.volume.logs.storageClass }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.volume.logs.size }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -138,6 +138,24 @@ volume:
|
||||||
# minimum free disk space(in percents). If free disk space lower this value - all volumes marks as ReadOnly
|
# minimum free disk space(in percents). If free disk space lower this value - all volumes marks as ReadOnly
|
||||||
minFreeSpacePercent: 7
|
minFreeSpacePercent: 7
|
||||||
|
|
||||||
|
# can use ANY storage-class , example with local-path-provisner
|
||||||
|
# data:
|
||||||
|
# type: "persistentVolumeClaim"
|
||||||
|
# size: "24Ti"
|
||||||
|
# storageClass: "local-path-provisioner"
|
||||||
|
data:
|
||||||
|
type: "hostPath"
|
||||||
|
size: ""
|
||||||
|
storageClass: ""
|
||||||
|
idx:
|
||||||
|
type: "hostPath"
|
||||||
|
size: ""
|
||||||
|
storageClass: ""
|
||||||
|
|
||||||
|
logs:
|
||||||
|
type: "hostPath"
|
||||||
|
size: ""
|
||||||
|
storageClass: ""
|
||||||
|
|
||||||
# limit background compaction or copying speed in mega bytes per second
|
# limit background compaction or copying speed in mega bytes per second
|
||||||
compactionMBps: "50"
|
compactionMBps: "50"
|
||||||
|
|
Loading…
Reference in a new issue