StorageClass issue during working with Vertica Operator
Hello everybody,
I have a cluster with 3 nodes, everyone in master mode.
I want to run Vertica Operator with Storage Class: local-storage, based on the documentation
here is my simple deployment for create Storage Class, Persistent Volume Claim and Persistent Volume:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Delete --- apiVersion: v1 kind: PersistentVolume metadata: name: vertica-pv spec: storageClassName: local-storage capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/data/data_vertica" type: DirectoryOrCreate nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - node1 --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: vertica-pvc spec: storageClassName: local-storage accessModes: - ReadWriteOnce resources: requests: storage: 10Gi volumeName: vertica-pv
and deployment for Custom Resource is next:
apiVersion: vertica.com/v1beta1 kind: VerticaDB metadata: name: my-verticadb spec: image: localhost:5000/vertica/vertica-k8s:11.1.1-0-minimal imagePullPolicy: Always initPolicy: Create kSafety: "1" superuserPasswordSecret: su-passwd dbName: my-vertica-db volumeMounts: - name: vertica-storage mountPath: /data/data_vertica volumes: - name: vertica-storage persistentVolumeClaim: claimName: vertica-pvc local: storageClass: vertica-class dataPath: /data depotPath: /depot requestSize: 10Gi subclusters: - isPrimary: true name: primary-subcluster size: 1 resources: limits: memory: "2Gi" cpu: 2 requests: memory: "2Gi" cpu: 2
But after apply deployments, pods for Vertica show me such errors:
Warning FailedScheduling 3m43s (x14542 over 15d) default-scheduler 0/3 nodes are available: 3 node(s) didn't find available persistent volumes to bind, 3 node(s) had volume node affinity conflict.
I tried to setup Vertica Operator in the managed kubernetes cluster with preconfigured StorageClass and it's working correct, but after reconfigure deployment to the Local one pods can not start with same error.
Is it possible to start Vertica Operator with simple Storage Class or there is any presequites for it ? Perhaps I missed something in the documentation
Best Answer
-
SruthiA Administrator
based on the definition you have shared, it appears that vertica-class storage class is a static provisioner?
https://kubernetes.io/blog/2019/04/04/kubernetes-1.14-local-persistent-volumes-ga/
We need you to use a storage class that supports dynamic provisioning.
StorageClass Requirements
The StorageClass affects how the Vertica server environment and operator function. For optimum performance, consider the following:If you do not set the local.storageClassName configuration parameter, the operator uses the default storage class. If you use the default storage class, confirm that it meets storage requirements for a production workload.
Select a StorageClass that uses a recommended storage format type as its fsType.
Use dynamic volume provisioning. The operator requires on-demand volume provisioning to create PVs as needed.0
Answers
Could you please share me the output of kubectl get storageclass
Sorry for delay, here result of command:
Thank you @SruthiA
In documentation https://www.vertica.com/docs/11.0.x/HTML/Content/Authoring/Containers/Kubernetes/ContainerizedVerticaWithK8s.htm#7 we're not observing any troubles to work with local.storage class.
Will check how to create a storage class with dynamic provisioner.
dublicated
@evgheni_antropov Issue is mainly with provisioner used in the storage class not with local.storage parameter.
Provisioner: kubernetes.io/no-provisioner
Below are the storageclass requirements for vertica:
StorageClass Requirements
The StorageClass affects how the Vertica server environment and operator function. For optimum performance, consider the following:
If you do not set the local.storageClassName configuration parameter, the operator uses the default storage class. If you use the default storage class, confirm that it meets storage requirements for a production workload.
Select a StorageClass that uses a recommended storage format type as its fsType.
Use dynamic volume provisioning. The operator requires on-demand volume provisioning to create PVs as needed.