Documentation ¶
Index ¶
Constants ¶
View Source
const ( // DriverName to be registered DriverName = "csi.juicefs.com" CSINodeLabelKey = "app" CSINodeLabelValue = "juicefs-csi-node" PodTypeKey = "app.kubernetes.io/name" PodTypeValue = "juicefs-mount" PodUniqueIdLabelKey = "volume-id" PodJuiceHashLabelKey = "juicefs-hash" Finalizer = "juicefs.com/finalizer" JuiceFSUUID = "juicefs-uuid" UniqueId = "juicefs-uniqueid" CleanCache = "juicefs-clean-cache" MountContainerName = "jfs-mount" JuiceFSMountPod = "juicefs-mountpod" JobTypeValue = "juicefs-job" // CSI Secret ProvisionerSecretName = "csi.storage.k8s.io/provisioner-secret-name" ProvisionerSecretNamespace = "csi.storage.k8s.io/provisioner-secret-namespace" PublishSecretName = "csi.storage.k8s.io/node-publish-secret-name" PublishSecretNamespace = "csi.storage.k8s.io/node-publish-secret-namespace" ControllerExpandSecretName = "csi.storage.k8s.io/controller-expand-secret-name" ControllerExpandSecretNamespace = "csi.storage.k8s.io/controller-expand-secret-namespace" // webhook WebhookName = "juicefs-admission-webhook" True = "true" False = "false" InjectSidecarDone = "done" + injectSidecar InjectSidecarDisable = "disable" + injectSidecar // config in pv MountPodCpuLimitKey = "juicefs/mount-cpu-limit" MountPodMemLimitKey = "juicefs/mount-memory-limit" MountPodCpuRequestKey = "juicefs/mount-cpu-request" MountPodMemRequestKey = "juicefs/mount-memory-request" // DeleteDelayTimeKey mount pod annotation DeleteDelayTimeKey = "juicefs-delete-delay" DeleteDelayAtKey = "juicefs-delete-at" // default value DefaultMountPodCpuLimit = "2000m" DefaultMountPodMemLimit = "5Gi" DefaultMountPodCpuRequest = "1000m" DefaultMountPodMemRequest = "1Gi" )
Variables ¶
View Source
var ( ByProcess = false // csi driver runs juicefs in process or not FormatInPod = false // put format/auth in pod (only in k8s) Provisioner = false // provisioner in controller MountManager = false // manage mount pod in controller (only in k8s) Webhook = false // inject juicefs client as sidecar in pod (only in k8s) Immutable = false // csi driver is running in an immutable environment EnableNodeSelector = false // arrange mount pod to node with node selector instead nodeName NodeName = "" Namespace = "" PodName = "" CEMountImage = "juicedata/mount:ce-nightly" // mount pod ce image EEMountImage = "juicedata/mount:ee-nightly" // mount pod ee image MountLabels = "" HostIp = "" KubeletPort = "" ReconcileTimeout = 5 * time.Minute ReconcilerInterval = 5 CSIPod = corev1.Pod{} MountPointPath = "/var/lib/juicefs/volume" JFSConfigPath = "/var/lib/juicefs/config" JFSMountPriorityName = "system-node-critical" JFSMountPreemptionPolicy = "" TmpPodMountBase = "/tmp" PodMountBase = "/jfs" MountBase = "/var/lib/jfs" FsType = "juicefs" CliPath = "/usr/bin/juicefs" CeCliPath = "/usr/local/bin/juicefs" CeMountPath = "/bin/mount.juicefs" JfsMountPath = "/sbin/mount.juicefs" JfsGoBinaryPath = os.Getenv("JFS_MOUNT_PATH") JfsChannel = os.Getenv("JFSCHAN") )
View Source
var PodLocks [1024]sync.Mutex
Functions ¶
func GetPodLock ¶
Types ¶
type JfsSetting ¶
type JfsSetting struct { IsCe bool UsePod bool UUID string Name string `json:"name"` MetaUrl string `json:"metaurl"` Source string `json:"source"` Storage string `json:"storage"` FormatOptions string `json:"format-options"` CachePVCs []CachePVC // PVC using by mount pod CacheDirs []string // hostPath using by mount pod // put in secret SecretKey string `json:"secret-key,omitempty"` SecretKey2 string `json:"secret-key2,omitempty"` Token string `json:"token,omitempty"` Passphrase string `json:"passphrase,omitempty"` Envs map[string]string `json:"envs_map,omitempty"` EncryptRsaKey string `json:"encrypt_rsa_key,omitempty"` InitConfig string `json:"initconfig,omitempty"` Configs map[string]string `json:"configs_map,omitempty"` // put in volCtx MountPodLabels map[string]string `json:"mount_pod_labels"` MountPodAnnotations map[string]string `json:"mount_pod_annotations"` DeletedDelay string `json:"deleted_delay"` CleanCache bool `json:"clean_cache"` HostPath []string `json:"host_path"` ServiceAccountName string Resources corev1.ResourceRequirements // mount VolumeId string // volumeHandle of PV UniqueId string // mount pod name is generated by uniqueId MountPath string // mountPath of mount pod or process mount TargetPath string // which bind to container path Options []string // mount options FormatCmd string // format or auth SubPath string // subPath which is to be created or deleted SecretName string // secret name which is set env in pod Attr PodAttr }
func ParseSetting ¶
func (*JfsSetting) ParseFormatOptions ¶ added in v0.17.1
func (s *JfsSetting) ParseFormatOptions() ([][]string, error)
func (*JfsSetting) RepresentFormatOptions ¶ added in v0.17.1
func (s *JfsSetting) RepresentFormatOptions(parsedOptions [][]string) []string
func (*JfsSetting) StripFormatOptions ¶ added in v0.17.1
func (s *JfsSetting) StripFormatOptions(parsedOptions [][]string, strippedKeys []string) []string
type PodAttr ¶ added in v0.16.0
type PodAttr struct { Namespace string MountPointPath string JFSConfigPath string JFSMountPriorityName string // inherit from csi Image string HostNetwork bool HostAliases []corev1.HostAlias HostPID bool HostIPC bool DNSConfig *corev1.PodDNSConfig DNSPolicy corev1.DNSPolicy ImagePullSecrets []corev1.LocalObjectReference PreemptionPolicy *corev1.PreemptionPolicy Tolerations []corev1.Toleration }
Click to show internal directories.
Click to hide internal directories.