Gerenciar Armazenamento Efêmero no Kubernetes

Os pods do Kubernetes exigem armazenamento local efêmero (temporário).

Os pods do Kubernetes usam armazenamento efêmero para espaço livre, armazenamento em cache e logs. Esse armazenamento é temporário e específico para o ciclo de vida do pod. O armazenamento efêmero não é compartilhado entre pods e desaparece quando o pod é excluído.

Para obter informações mais gerais sobre o armazenamento efêmero do Kubernetes, consulte Armazenamento efêmero local na documentação do Kubernetes.

As etapas a seguir se aplicam ao Oracle Kubernetes Engine, mas os conceitos são semelhantes em outros ambientes do Kubernetes.

Em um pool de nós, os nós usam seus volumes de inicialização para armazenamento de pods. Como as imagens são armazenadas no diretório /var, a maior parte do armazenamento efêmero é ocupada por imagens na partição raiz. O espaço necessário no volume de inicialização aumenta toda vez que você instala uma instância do Oracle Blockchain Platform Enterprise Edition e cria chaincodes nesse nó.

Você pode usar a seguinte chamada de API kubelet para verificar o armazenamento efêmero total e o valor a ser designado a cada pod em um determinado nó:
kubectl get --raw "/api/v1/nodes/<node IP>/proxy/stats/summary"
As seções rootfs e fs do resultado JSON mostram a capacidade e os bytes disponíveis.

Você pode atualizar o volume de armazenamento efêmero redimensionando o volume de inicialização enquanto um nó está em execução. Para obter mais informações, consulte Atualizando um Pool de Nós para o Oracle Kubernetes Engine.

Execute as etapas a seguir para redimensionar o armazenamento efêmero em um cluster do Oracle Kubernetes Engine com nós em execução.
  1. No cluster do Oracle Kubernetes Engine, em Recursos, selecione Pools de nós.
  2. Clique emEditar. Na página Editar pool de nós, selecione Especificar um tamanho de volume de inicialização personalizado e informe um valor Tamanho do volume de inicialização em GB. Todos os nós criados usarão esse valor para armazenamento efêmero.
  3. Para cada nó de trabalho no pool de nós, conclua as etapas a seguir para redimensionar o volume de inicialização.
    1. Clique na seta para baixo ao lado do nó para ver informações detalhadas sobre o nó.
    2. Navegue até o Volume de inicialização do nó e clique em Editar.
    3. Na página Editar volume em Tamanho e desempenho do volume, especifique um valor de Tamanho do volume em GB e clique em Salvar alterações.
  4. Execute as etapas a seguir para configurar uma sessão do Bastion e, em seguida, use-a para estabelecer conexão com os nós de trabalho privados.
    1. Na página de detalhes da instância, clique na guia Oracle Cloud Agent e ative o plug-in Bastion.
    2. Procure o bastion na barra de pesquisa e clique em Bastion Identity & Security em Serviços nos resultados.
    3. Clique em Criar bastion.
    4. Na página Criar bastion, para a Rede virtual na nuvem de destino (VCN), especifique a VCN do Oracle Kubernetes Engine seguida do nome do cluster. Para Sub-rede de destino, especifique o ponto final da API do Kubernetes. Para a lista de permissões do bloco CIDR, digite 0.0.0.0/0 e clique em Criar bastion.
    5. Clique no bastion para abri-lo e, em seguida, clique em Criar sessão.
    6. Digite opc para o valor Nome do Usuário e selecione seu nó na lista Instância do Compute.
    7. Cole sua chave SSH em Adicionar Chave SSH.
    8. Clique em Mostrar opções avançadas e selecione o endereço IP do nó ou da instância na lista Endereço IP da instância de computação de destino. Este é o endereço IPv4 privado do nó ou da instância, que está disponível na seção de informações da instância.
    9. Clique em Criar sessão.
    10. No menu de contexto da sessão, clique em Copiar comando SSH.
    11. Agora você pode fazer log-in no nó via SSH fornecendo sua chave privada com o parâmetro -i no comando SSH.
    12. Repetir as etapas anteriores para cada nó de trabalho no cluster.
  5. Para cada nó, faça log-in no nó via SSH e execute os comandos a seguir, que procuram novos dispositivos de armazenamento em blocos adicionados a instâncias ou nós e, em seguida, expanda o sistema de arquivos quando o armazenamento estiver disponível.
    sudo dd iflag=direct if=/dev/oracleoci/oraclevda of=/dev/null count=1
    echo "1" | sudo tee /sys/class/block/`readlink /dev/oracleoci/oraclevda | cut -d'/' -f 2`/device/rescan
    sudo /usr/libexec/oci-growfs -y

Determinando o Uso do Armazenamento Efêmero

Você pode executar o script a seguir para ver o uso de armazenamento efêmero de uma instância em execução no Oracle Kubernetes Engine. O script usa a API do Kubernetes para recuperar o uso de armazenamento efêmero de cada pod em execução em cada nó do cluster.

#!/usr/bin/env bash
  
kubectl proxy --append-server-path &
  
set -eo pipefail
  
{
    echo "NODE NAMESPACE POD EPHEMRAL_USED"
    for node in $(kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'); do
        curl -fsSL "http://127.0.0.1:8001/api/v1/nodes/$node/proxy/stats/summary" |
            yq '.pods[] | [.podRef.namespace, .podRef.name, .ephemeral-storage.usedBytes] | join(" ")' |
            while read -r namespace name usedBytes; do
                # A pod might have no running containers and consequently no ephemeral-storage usage.
                echo "$node" "$namespace" "$name" "$(numfmt --to iec "${usedBytes:-0}")"
            done
    done | sort -k4,4rh
} | column -t