Search code examples
dockerkubernetesazure-akschmodargocd

aks pod can't give permission (chown) to a directory


hello i hope everyone is doing okay , i have a problem in azure kubernetes service aks

i deployed a project that i had running in a kubernetes cluster into aks

i build the project using ArgoCD argocd

here are the logs of the pod :

Failed to start Standalone CDAP
2021-10-21 15:33:35,031 - ERROR [main:i.c.c.StandaloneMain@446] - Failed to start Standalone CDAP
com.google.common.util.concurrent.UncheckedExecutionException: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: Error applying authorization policy on hive configuration: ExitCodeException exitCode=1: chmod: changing permissions of '/opt/cdap/sandbox-6.2.3/data/explore/tmp/cdap/06667586-7b60-43cc-bd13-5a5136b601fc': Operation not permitted

        at com.google.common.util.concurrent.Futures.wrapAndThrowUnchecked(Futures.java:1015)
        at com.google.common.util.concurrent.Futures.getUnchecked(Futures.java:1001)
        at com.google.common.util.concurrent.AbstractService.startAndWait(AbstractService.java:220)
        at com.google.common.util.concurrent.AbstractIdleService.startAndWait(AbstractIdleService.java:106)
        at io.cdap.cdap.StandaloneMain.startUp(StandaloneMain.java:300)
        at io.cdap.cdap.StandaloneMain.doMain(StandaloneMain.java:436)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at io.cdap.cdap.StandaloneMain.main(StandaloneMain.java:418)
Caused by: com.google.common.util.concurrent.UncheckedExecutionException: java.lang.RuntimeException: Error applying authorization policy on hive configuration: ExitCodeException exitCode=1: chmod: changing permissions of '/opt/cdap/sandbox-6.2.3/data/explore/tmp/cdap/06667586-7b60-43cc-bd13-5a5136b601fc': Operation not permitted

        at com.google.common.util.concurrent.Futures.wrapAndThrowUnchecked(Futures.java:1015)
        at com.google.common.util.concurrent.Futures.getUnchecked(Futures.java:1001)
        at com.google.common.util.concurrent.AbstractService.startAndWait(AbstractService.java:220)
        at com.google.common.util.concurrent.AbstractIdleService.startAndWait(AbstractIdleService.java:106)
        at io.cdap.cdap.explore.executor.ExploreExecutorService.startUp(ExploreExecutorService.java:99)
        at com.google.common.util.concurrent.AbstractIdleService$1$1.run(AbstractIdleService.java:43)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.RuntimeException: Error applying authorization policy on hive configuration: ExitCodeException exitCode=1: chmod: changing permissions of '/opt/cdap/sandbox-6.2.3/data/explore/tmp/cdap/06667586-7b60-43cc-bd13-5a5136b601fc': Operation not permitted

        at org.apache.hive.service.cli.CLIService.init(CLIService.java:114)
        at io.cdap.cdap.explore.service.hive.BaseHiveExploreService.startUp(BaseHiveExploreService.java:309)
        at io.cdap.cdap.explore.service.hive.Hive14ExploreService.startUp(Hive14ExploreService.java:76)
        ... 2 more
Caused by: java.lang.RuntimeException: ExitCodeException exitCode=1: chmod: changing permissions of '/opt/cdap/sandbox-6.2.3/data/explore/tmp/cdap/06667586-7b60-43cc-bd13-5a5136b601fc': Operation not permitted

        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:522)
        at org.apache.hive.service.cli.CLIService.applyAuthorizationConfigPolicy(CLIService.java:127)
        at org.apache.hive.service.cli.CLIService.init(CLIService.java:112)
        ... 4 more
Caused by: ExitCodeException exitCode=1: chmod: changing permissions of '/opt/cdap/sandbox-6.2.3/data/explore/tmp/cdap/06667586-7b60-43cc-bd13-5a5136b601fc': Operation not permitted

        at org.apache.hadoop.util.Shell.runCommand(Shell.java:972)
        at org.apache.hadoop.util.Shell.run(Shell.java:869)
        at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:1170)
        at org.apache.hadoop.util.Shell.execCommand(Shell.java:1264)
        at org.apache.hadoop.util.Shell.execCommand(Shell.java:1246)
        at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:771)
        at org.apache.hadoop.fs.RawLocalFileSystem.mkOneDirWithMode(RawLocalFileSystem.java:515)
        at org.apache.hadoop.fs.RawLocalFileSystem.mkdirsWithOptionalPermission(RawLocalFileSystem.java:555)
        at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:533)
        at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:313)
        at org.apache.hadoop.hive.ql.session.SessionState.createPath(SessionState.java:639)
        at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:574)
        at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:508)
        ... 6 more

im using azurefile as my default storage class.

the pod can't chmod a directory ,

what i found is that aks storage class does not have ext4 here is my storage class

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: wp-storage
  uid: a4251a1d-98aa-4e1d-a832-1caa82a7fc72
  resourceVersion: '570443'
  creationTimestamp: '2021-10-22T08:52:39Z'
  annotations:
    storageclass.kubernetes.io/is-default-class: 'true'
  managedFields:
    - manager: Mozilla
      operation: Update
      apiVersion: storage.k8s.io/v1
      time: '2021-10-22T08:52:39Z'
      fieldsType: FieldsV1
      fieldsV1:
        f:mountOptions: {}
        f:parameters:
          .: {}
          f:skuName: {}
        f:provisioner: {}
        f:reclaimPolicy: {}
        f:volumeBindingMode: {}
    - manager: kubectl-patch
      operation: Update
      apiVersion: storage.k8s.io/v1
      time: '2021-10-22T08:55:06Z'
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:annotations:
            .: {}
            f:storageclass.kubernetes.io/is-default-class: {}
provisioner: kubernetes.io/azure-file
parameters:
  skuName: Standard_LRS
reclaimPolicy: Delete
mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=1000
  - gid=1000
volumeBindingMode: Immediate

i looked how to change this but no luck i hope someone can help me with this or guide me to the right direction.

have a good day.


Solution

  • after a lot of testing i changed the storage class i installed rook-ceph using : this procedure note: you have to change the image version in cluster.yaml from ceph/ceph:v14.2.4 to ceph/ceph:v16