Como montar o volume com um UID específico no Kubernetes Pod?

3

Por isso, estou tentando fazer o Nexus funcionar com base nessa imagem ( link ) no Kubernetes , mas está falhando com:

mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied
mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory

Na documentação, ele diz que o processo é executado com o UID 200 e o volume deve ser montado com essas permissões:

A persistent directory, /nexus-data, is used for configuration,
logs, and storage. This directory needs to be writable by the Nexus
process, which runs as UID 200.

Eu tentei pesquisar na documentação para encontrar uma maneira de montar o volume com essas permissões, mas não consegui encontrar uma maneira de fazê-lo.

Alguém sabe se você pode especificar na configuração para o PVC / PV ou Deployment com qual UID montar o volume? Se sim, como?

    
por srkiNZ84 05.04.2018 / 05:50

1 resposta

8

Não há como definir o UID usando a definição de Pod , mas o Kubernetes salva o UID do volume originado.

Assim, você pode definir o UID por InitContainer , que é lançado antes do contêiner principal, basta adicioná-lo ao caminho containers do Deployment :

initContainers:
  - name: volume-mount-hack
    image: busybox
    command: ["sh", "-c", "chown -R 200:200 /nexus"]
    volumeMounts:
    - name: <your nexus volume>
      mountPath: /nexus
    
por 11.04.2018 / 15:21