Início
Sintaxe CLI
Adicionando Volumes
Atualizando Volumes
Removendo Volumes
Listando Volumes
Acessando Volumes
Início
Containers não são persistentes por padrão; ao reinicia-lo, seus dados são apagados. Volumes são sistemas de arquivos montados, disponíveis aos pods e seus containers, que podem ser suportados por um host-local ou um storage de rede.
Para garantir que o sistema de arquivo no volume não tem nenhum erro e se tiver erros presentes, para reparar quando possível, o OpenShift chama o utilitário fsck antes do utilitário mount. Isso ocorre quando for adicionar um volume ou atualizar um existente.
O tipo de volume mais simples é EmptyDir, que é um diretório temporário em uma unica maquina. Os administradores podem permitir que você possa requisitar um volume persistente que é automaticamente ligado aos seus pods.
![]() |
O volume EmptyDir pode utilizar quota baseado no FSGroup do pod, isso se estiver ativado pelo administrador. |
Você pode usar o comando oc volume para add, atualizar ou remover volumes e montagem de volumes para qualquer objeto que tenha o template do pod, como controlador de replicação ou configuração de deployment. Você pode listar os volumes nos pods ou qualquer objeto que tenha um template.
Sintaxe CLI
O comando oc volume tem a seguinte sintaxe:
$ oc volume <object_selection> <operation> <mandatory_parameters> <optional_parameters>
Este artigo utiliza o formato <object_type>/<name> para <object_selection>, mas você pode utilizar qualquer um da tabela a seguir:
Tabela 1. Seleção de objeto
Sintaxe | Descrição | Exemplo |
<object_type> <name> | Seleciona <name> do tipo <object_type>. | deploymentConfig registry |
<object_type>/<name> | Seleciona <name> do tipo <object_type>. | deploymentConfig/registry |
<object_type> --selector=<object_label_selector> | Seleciona resources do tipo <object_type> que combine com o label selector informado. | deploymentConfig --selector="name=registry" |
<object_type> --all | Seleciona todos os resources do tipo <object_type>. | deploymentConfig --all |
-f ou --filename=<file_name> | Nome do arquivo, diretório ou URL para o arquivo a ser utilizado para editar o resource. | -f registry-deployment-config.json |
O <operation> pode ser --add, --remove ou --list.
Qualquer <mandatory_parameters> ou <optional_parameters> são específicos a operação selecionada e são discutidos ainda neste artigo.
Adicionando Volumes
Para adicionar um volume, ou uma montagem de volume, ou ambos em um template:
$ oc volume <object_type>/<name> --add [options]
Tabela 2. Opções suportadas para adicionar volumes
Opção | Descrição | Default |
--name | Nome do volume. | Gerado automaticamente, se não especificado. |
-t, --type | Nome do volume de origem. Valores suportados são: emptyDir, hostPath, secret ou persistentVolumeClaim. | emptyDir |
-c, --containers | Seleciona containers pelo nome. Pode utilizar regex '*' que combine com qualquer caractere. | '*' |
-m, --mount-path | Monta o path dentro do container selecionado. | |
--path | Path do host. Parâmetro obrigatório --type=hostPath. | |
--secret-name | Nome do secret. Parâmetro obrigatório --type=secret. | |
--claim-name | Nome do volume persistente. Parâmetro obrigatório --type=persistentVolumeClaim. | |
--source | Detalhes do volume com uma string JSON. Recomendado se a origem do volume especificado não é suportada por --type. Veja origem de volumes disponíveis. | |
-o, --output | Exibe objetos modificados em vez de atualizar no servidor. Valores suportados: json, yaml. | |
--output-version | Exibe objetos modificados com suas respectivas versões. | api-version |
Exemplos
Adicionar um novo volume emptyDir no registry do deployment config:
$ oc volume dc/registry --add
Adicionar volume v1 com secret $ecret para o controlador de replicação r1 e montar no container em /data:
$ oc volume rc/r1 --add --name=v1 --type=secret --secret-name='$ecret' --mount-path=/data
Adicionar volume persistente existente v1 com nome pvc1 no deployment config dc.json no disco, montar o volume no container c1 em /data, e atualizar o deployment config no servidor:
$ oc volume -f dc.json --add --name=v1 --type=persistentVolumeClaim --claim-name=pvc1 --mount-path=/data --containers=c1
Adicionar volume v1 baseado em um repositório Git https://github.com/namespace1/project1 com revisão 5125c45f9f563 para todos os controladores de replicação:
$ oc volume rc --all --add --name=v1 --source='{"gitRepo": {"repository": "https://github.com/namespace1/project1","revision": "5125c45f9f563"}}'
Atualizando Volumes
Atualizando volumes existentes ou a montagem de volumes é semelhante a adicionar volumes, mas com a opção --overwrite:
$ oc volume <object_type>/<name> --add --overwrite [options]
Exemplos
Substituir o volume existente v1 do controlador de replicação r1 com o volume persistente claim pvc1:
$ oc volume rc/r1 --add --overwrite --name=v1 --type=persistentVolumeClaim --claim-name=pvc1
Alterar a configuração de deployment d1 com ponto de montagem /opt para o volume v1:
$ oc volume dc/d1 --add --overwrite --name=v1 --mount-path=/opt
Removendo Volumes
Para remover um volume ou montagem de volume de um template:
$ oc volume <object_type>/<name> --remove [options]
Tabela 3. Opções suportadas para remover volumes
Opção | Descrição | Default |
--name | Nome do volume. | |
-c, --containers | Seleciona container pelo nome. Pode usar regex '*' que combine com qualquer caractere. | '*' |
--confirm | Confirma se você realmente quer remover multiplos volumes de uma unica vez. | |
-o, --output | Exibe os objetos modificados em vez de atualizar eles no servidor. Valores suportados são: json, yaml. | |
--output-version | Exibe os objetos modificados com a sua respectiva versão. | api-version |
Alguns exemplos:
Remover o volume v1 da configuração de deployment d1:
$ oc volume dc/d1 --remove --name=v1
Desmontar o volume v1 do container c1 na configuração de deployment d1 e remover o volume v1 se não for referenciado por nenhum container no d1:
$ oc volume dc/d1 --remove --name=v1 --containers=c1
Remover todos os volumes do controlador de replicação r1:
$ oc volume rc/r1 --remove --confirm
Listando Volumes
Para listar volumes ou montagens de volumes para pods ou templates:
$ oc volume <object_type>/<name> --list [options]
Listar opções suportadas para volumes:
Opção | Descrição | Default |
--name | Nome do volume. | |
-c, --containers | Seleciona o container pelo nome. Também pode usar regex '*' que combine com qualquer caractere. | '*' |
Exemplos
Listar todos os volumes do pod p1:
$ oc volume pod/p1 --list
Listar volume v1 definido em todas as configurações de deployment:
$ oc volume dc --all --name=v1
Acessando Volumes
Para acessar volumes ou pontos de montagem em seu pod, você precisará acessar o pod em execução, e através dele poderá acessar os dados do volume deste pod:
Acesse sua conta e projeto:
$ oc login https://api.getupcloud.com:443
$ oc project MeuProjeto
Liste seus pods:
$ oc get pods
Acesse o pod desejado: (exemplo mysql)
$ oc rsh mysql01-1-w0p7l
Dentro do pod , você tem acesso ao sistema de arquivos e poderá executar qualquer ação em seus arquivos, lembrando que o volume é persistente, logo mesmo que o pod seja recriado o volume permanece inalterado.
Sincronizando arquivos do POD para sua máquina: (exemplo diretório backup remoto com o diretório local)
$ oc rsync mysql01-1-w0p7l:/var/lib/mysql/data/backup/ /mysql_backup/
Comentários
0 comentário
Por favor, entre para comentar.