hostPath
hostPath é usado para montar o diretório de arquivos do host onde o contêiner está localizado no ponto de montagem especificado do contêiner. Se o contêiner precisar acessar /etc/hosts, use hostPath para mapear /etc/hosts.
- Evite usar volumes de hostPath o máximo possível, pois eles são propensos a riscos de segurança. Se os volumes de hostPath precisarem ser usados, eles só poderão ser aplicados a arquivos ou caminhos e montados no modo somente leitura.
- Depois que o pod no qual um volume de hostPath é montado é excluído, os dados no volume de hostPath são retidos.
Montar um volume de hostPath no console
Você pode montar um caminho no host para um caminho de contêiner especificado. Um volume hostPath geralmente é usado para armazenar logs de carga de trabalho permanentemente ou usado por cargas de trabalho que precisam acessar a estrutura de dados interna do mecanismo Docker no host.
- Efetue logon no console do CCE.
- Ao criar uma carga de trabalho, clique em Data Storage em Container Settings. Clique em Add Volume e escolha hostPath na lista suspensa.
- Defina os parâmetros para adicionar um volume local, conforme listado em Tabela 1.
Tabela 1 Configurar parâmetros para montar um volume de hostPath Parâmetro
Descrição
Storage Type
Selecione HostPath.
Host Path
Caminho do host no qual o volume local deve ser montado, por exemplo, /etc/hosts.
NOTA:Host Path não pode ser definido para o diretório raiz /. Caso contrário, a montagem falhará. Os caminhos de montagem podem ser os seguintes:
- /opt/xxxx (excluindo /opt/cloud)
- /mnt/xxxx (excluindo /mnt/paas)
- /tmp/xxx
- /var/xxx (excluindo diretórios-chave como /var/lib, /var/script e /var/paas)
- /xxxx (Ele não pode entrar em conflito com o diretório do sistema, como bin, lib, home, root, boot, dev, etc, lost+found, mnt, proc, sbin, srv, tmp, var, media, opt, selinux, sys e usr.)
Não defina esse parâmetro para /home/paas, /var/paas, /var/lib, /var/script, /mnt/paas ou /opt/cloud. Caso contrário, a instalação do sistema ou nó falhará.
Mount Path
Digite um caminho de montagem, por exemplo, /tmp.
Este parâmetro indica o caminho do contêiner no qual um volume de dados será montado. Não monte o volume em um diretório do sistema como / ou /var/run. Caso contrário, os contêineres estarão com defeito. Monte o volume em um diretório vazio. Se o diretório não estiver vazio, verifique se não há arquivos que afetem a inicialização do contêiner. Caso contrário, os arquivos serão substituídos, causando falhas de inicialização do contêiner ou falhas de criação de carga de trabalho.AVISO:Se um volume for montado em um diretório de alto risco, use uma conta com permissões mínimas para iniciar o contêiner. Caso contrário, arquivos de alto risco no host podem ser danificados.
Subpath
Digite um subcaminho, por exemplo, tmp, indicando que os dados no caminho de montagem do contêiner serão armazenados na pasta tmp do volume.
Um subcaminho é usado para montar um volume local para que o mesmo volume de dados seja usado em um único pod. Se este parâmetro for deixado em branco, o caminho raiz é usado por padrão.
Permission
- Read-only: você só pode ler os dados nos volumes montados.
- Read/Write: você pode modificar os volumes de dados montados no caminho. Os dados recém-gravados não serão migrados se o contêiner for migrado, o que pode causar perda de dados.
- Após a configuração, clique em Create Workload.
Montar um volume de hostPath usando kubectl
- Use o kubectl para se conectar ao cluster.
- Crie um arquivo chamado nginx-hostpath.yaml e edite-o.
vi nginx-hostpath.yaml
O conteúdo do arquivo YAML é o seguinte. Monte o diretório /data no nó no diretório /data no contêiner.
apiVersion: apps/v1 kind: Deployment metadata: name: nginx-hostpath namespace: default spec: replicas: 2 selector: matchLabels: app: nginx-hostpath template: metadata: labels: app: nginx-hostpath spec: containers: - name: container-1 image: nginx:latest volumeMounts: - name: vol-hostpath # Volume name, which must be the same as the volume name in the volumes field. mountPath: /data # Mount path in the container. imagePullSecrets: - name: default-secret volumes: - name: vol-hostpath # Volume name, which can be customized. hostPath: path: /data # Directory location on the host node.
- Crie uma carga de trabalho.
kubectl apply -f nginx-hostpath.yaml