Closed Truongphikt closed 1 month ago
Hey @Truongphikt. Could you please provide more information on the setup? Did you deploy the NFS chart? From what you've provided, it seems the issue is that you don't have the nfs
storage class. You either need to create a ReadWriteMany
storage class under name nfs
, or change values to indicate a different storage class. If you could provide a snapshot of your values, with secret values (eg: passwords) redacted, that could help us provide further support.
You may also want to look at our integration tests for a working example of deploying Galaxy to a GKE cluster, although we don't use Autopilot. Besides the missing nfs
storage class you also seem to have a permission problem; "linux capability 'SYS_ADMIN' on container 'nodeplugin' not allowed", which seems to be Autopilot related. Although may be caused by the missing nfs
storage class.
@almahmoud Thanks for the rapid support. I haven't deployed the NFS chart, so that makes sense! Is it available to deploy by either helm or in another special way? Besides, this is more information on the setup, storage and values.
We use NFS Ganesha for NFS on Kubernetes.
helm repo add nfs-ganesha https://kubernetes-sigs.github.io/nfs-ganesha-server-and-external-provisioner/
Create a values file (say nfs-values.yml). You may need/want to change the persistence.storageClass
, persistence.size
, and storageClass.defaultClass
to suit your needs:
persistence:
enabled: true
storageClass: "standard"
size: "250Gi"
storageClass:
create: true
defaultClass: true
allowVolumeExpansion: true
reclaimPolicy: "Retain"
mountOptions:
- vers=4.2
- noatime
I'm not sure if the mountOptions
are really needed, but this is what is used in our Galaxy Kubeman Helm chart.
You can then install with:
helm install nfs-provisioner -n nfs-provisioner nfs-ganesha/nfs-server-provisioner --create-namespace --values nfs-values.yml
Successfully created nfs storage by @ksuderman's instruction on the Standard cluster
LAST DEPLOYED: Sat Aug 10 03:54:02 2024
NAMESPACE: nfs-provisioner
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The NFS Provisioner service has now been installed.
A storage class named 'nfs' has now been created
and is available to provision dynamic volumes.
You can use this storageclass by creating a `PersistentVolumeClaim` with the
correct storageClassName attribute. For example:
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: test-dynamic-volume-claim
spec:
storageClassName: "nfs"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
Note: If creating nfs storage on the Autopilot cluster, the error was got:
$ helm install nfs-provisioner -n nfs-provisioner nfs-ganesha/nfs-server-provisioner --create-namespace --values nfs-values.yml
W0810 09:57:03.349099 884 warnings.go:70] autopilot-default-resources-mutator:Autopilot updated StatefulSet nfs-provisioner/nfs-provisioner-nfs-server-provisioner: defaulted unspecified 'cpu' resource for containers [nfs-server-provisioner] (see http://g.co/gke/autopilot-defaults).
Error: INSTALLATION FAILED: admission webhook "warden-validating.common-webhooks.networking.gke.io" denied the request: GKE Warden rejected the request because it violates one or more constraints.
Violations details: {"[denied by autogke-default-linux-capabilities]":["linux capability 'DAC_READ_SEARCH,SYS_RESOURCE' on container 'nfs-server-provisioner' not allowed; Autopilot only allows the capabilities: 'AUDIT_WRITE,CHOWN,DAC_OVERRIDE,FOWNER,FSETID,KILL,MKNOD,NET_BIND_SERVICE,NET_RAW,SETFCAP,SETGID,SETPCAP,SETUID,SYS_CHROOT,SYS_PTRACE'."]}
Requested by user: 'phinguyen@ktest.vn', groups: 'system:authenticated'.
Hi galaxy-helm team,
I aim to build the galaxy on GKE (Google Kubernetes Engine) to organize free courses on bioinformatics. I created an Autopilot cluster and followed the guide in README to install it by the helm. However, I encountered an error that seemed to be related to storage (not sure).
Did someone meet this issue when built on GKE before? Please give me some recommendations on how to solve it. Thanks.