armazenamento K8S (volumes persistentes rolos de duração de utilização)

Site oficial de referência:
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#

1, descreve
a gestão e de gestão de armazenamento são calculados diferentes instâncias do problema. subsistema PersistentVolume fornece uma API para usuários e administradores de usar a API armazenada em abstrato os detalhes de como o armazenamento é fornecido. Para este fim, nós introduzimos dois novos recursos da API: persistenvolume e persistenvolumeclaim.
1) PersistentVolume (PV) é definido pelo administrador do armazenamento, é um conjunto de recursos, é o mesmo que os recursos de cluster nó. PV é semelhante ao tampão de um volume, mas o seu tempo de vida é independente da utilização de um único PV vagem. Este objeto API detalhes de implementação de armazenamento de captura, incluindo sistema de armazenamento NFS, iSCSI ou provedor de nuvem específica.
2) PersistentVolumeClaim (PVC) é armazenado no pedido do utilizador. pod consumir recursos do nó, o consumo de pvc de recursos PV. Pods pode solicitar um determinado nível de recursos (CPU e memória). Declaração pode solicitar um modo de tamanho e de acesso particular (por exemplo, o que pode ser uma leitura / escrita ou vezes só de leitura).
Embora PersistentVolumeClaims abstratas recursos de armazenamento permite que o usuário, mas os usuários geralmente precisam PersistentVolumes com propriedades diferentes (por exemplo, propriedades) para resolver problemas diferentes. administradores de cluster precisa ser capaz de fornecer uma variedade de volumes persistentes, volumes destes duradouros mentiras diferença, não só em padrões de tamanho e de acesso, sem a necessidade de divulgar os detalhes de como esses volumes são implementados para o usuário. Para estas exigências, há um Armazenagem de recursos

2, o tipo de volumes persistentes de
PersistentVolume implementado como plug-in tipo. Kubernetes atualmente suporta os seguintes plug-ins:
GCEPersistentDisk, AWSElasticBlockStore, AzureFile, AzureDisk, CSI, FC (Fibre Channel), FlexVolume, Flocker, NFS, iSCSI, RBD (Ceph Block Device), CephFS, Cinder, GlusterFS, VsphereVolume, Volumes Quobyte, HostPath, Volumes Portworx, Volumes ScaleIO, StorageOS

3, modo de acesso
em um host de recursos de qualquer forma suportada pelo fornecedor pode ser instalado em um rolo contínuo. Quando exibido na tabela abaixo, os fornecedores têm capacidades diferentes, e cada modo de acesso PV está definido para um modo específico suportado pelo volume particular. Por exemplo, NFS pode suportar uma pluralidade de leitura / gravação do cliente, mas um determinado NFS PV podem ser exportados para o servidor como um CD-ROM. Cada PV montagem tem a sua própria capacidade de descrição modo de acesso do PV específico.
modo de acesso da seguinte forma:
RWO-readwriteonce: único nó é cobrado leitor
ROX-Readonlymany: um número de nós para ser carregado leitura
RWX-readwritemany: ler e escrever muitos nós são cobrados

4, o ciclo de vida
pv é os recursos de cluster. pvc é um pedido para estes recursos, mas também servir como uma verificação de pedido de recursos, pv Há duas configurações: estática ou dinâmica.
1) estática
Cluster Administrator para criar múltiplos pv. Eles carregam informações sobre o armazenamento real disponível para usuários de cluster. Eles existem em Kubernetes API estão disponíveis para uso.

2) dinâmica
PersistentVolumeClaim do usuário pv estática quando o administrador criado não corresponde, o cluster pode tentar fornecer dinamicamente volume para o PVC. Esta configuração é StorageClasses base: PVC deve solicitar uma classe de armazenamento, o administrador deve configurar a classe foi criado e pode ser ajustado dinamicamente. classe Request "" declaração efetivamente desativar conjunto dinâmico para si. Para habilitar o armazenamento dinâmico provisionamento necessidades do administrador de cluster de armazenamento de base para permitir controlador de admissão DefaultStorageClass no servidor API. Por exemplo, ele pode ser conseguido assegurando componentes do servidor API vírgula DefaultStorageClass localizados --enable bandeira plugins acceptment separados lista de valores ordenados. Para mais informações sobre os sinalizadores de linha de comando do servidor API, consulte a documentação do servidor API kube

Ligação
usuário cria um PersistentVolumeClaim, ou no caso de alocação dinâmica de recursos, criaram um PersistentVolumeClaim, o armazenamento e ter um PersistentVolumeClaim pedido específico de acesso específico. Acompanhamento do ciclo da nova PVC de controlo geral, encontrar PV correspondente (se possível), e uni-los. Se PV é uma configuração dinâmica para um novo PVC, o ciclo irá ser sempre ligado ao PV de PVC. Caso contrário, os usuários sempre terá pelo menos o que necessário, mas pode exceder a capacidade do conteúdo exigido. Uma vez ligado, ligando PersistentVolumeClaim é exclusivo, não importa como eles são obrigados. O PVC é de ligao a PV-um mapeamento, usar ClaimRef, ClaimRef é uma ligação entre persistenvolume e persistenvolumeclaim duas vias.
Se não houver correspondência de volume, a declaração irá permanecer indefinidamente estado desacoplado. Quando o volume de jogos disponíveis serão declaração de ligação. Por exemplo, a configuração de cluster de muitos 50Gi pv não corresponde ao pedido 100Gi de PVC. Quando um 100Gi adicionado ao aglomerado de PV, o PVC pode ser ligado.

declaração de proteção persistente
destinada a garantir longa duração pvc volume a ser utilizado pelo pod não será excluído do sistema, pois isso pode resultar em perda de dados. Se um usuário exclui PVC Pod está sendo usado, o PVC não é excluída imediatamente. remoção de PVC será atrasado até que o PVC não está mais em uso por qualquer vagem. Além disso, se um administrador para remover a ligação do PVC PV, PV não é removido imediatamente. PV removido é adiada até PV não ligado ao PVC.

estratégia de recuperação
quando o usuário termina o seu uso de volume, eles podem remover objetos da API permite PVC reciclagem no.
Manter reservas: Permite recuperar manualmente os recursos. Ao excluir PersistentVolumeClaim, PersistentVolume ainda existe, eo volume é considerado "liberar".
Apagar: estratégia de recuperação Excluir para volume de suporte plug-in, eliminar PersistentVolume objetos, e infra-estrutura externa (como AWS EBS, GCE PD, disco de concreto Azure ou volume) ativos de armazenamento relacionados em Kubernetes a eliminação de.
Reciclar Reciclagem: Básico apagar (rm-rf / volume /

*) Aviso: A estratégia de recuperação foi preterido. Em vez disso, a abordagem recomendada é usar alocação dinâmica de recursos.

O estado de
volumes pode ser em um determinado estado o seguinte:
a Disponível (Disponíveis): Bloco recursos ociosos não ter havido qualquer declaração vinculativa
ligada (ligada): o volume tem sido a declaração de ligação
Lançado (liberado): a declaração foi excluído, mas os recursos cluster não foram reapresentados
falhou (falhou): a recuperação automática do volume falhar

5,实际操作
[root @ k8smaster pp] # mais pv.yaml #创建PV
apiVersion: v1
tipo: PersistentVolume
metadados:
  nome: mypv1
spec:
  capacidade:
    de armazenamento: 1GI
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: NFS
  nfs:
    caminho: / sharedir
    servidor: 192.168.23.100
[root @ k8smaster pp] # kubectl criar -f pv.yaml 
persistentvolume / mypv1 criado
[root @ k8smaster pp] # kubectl get pv #Status为Disponível
NOME capacidade de acesso MODOS RECLAIM POLÍTICA STATUS AGE RECLAMAÇÃO Armazenagem RAZÃO
mypv1 1GI RWO Recycle          Disponível           NFS 36s
[root @ k8smaster pp] #

capacidade PV especificada capacidade de 1G.

modo de acesso accessModes é designado ReadWriteOnce, modos de acesso são suportados:
ReadWriteOnce - o PV pode montar a um único nó no modo de leitura e escrita.
ReadOnlyMany - PV capaz de montar uma pluralidade de nós no modo somente leitura.
ReadWriteMany - PV capaz de montar uma pluralidade de nós no modo de leitura e escrita.

persistentVolumeReclaimPolicy especificar quando a estratégia PV reciclagem Reciclar, estratégias de apoio:
Reter - necessidade de ser recuperado manualmente.
Reciclar - limpar os dados no efeito PV equivalente à implementação rm-rf / thevolume / *.
Excluir - para excluir os recursos de armazenamento correspondentes no provedor de armazenamento, tais como AWS EBS, GCE PD, Azure Disk , OpenStack Cinder Volume e assim por diante.

storageClassName o PV classe especificada é NFS. É equivalente a definir uma classificação para o PV, o PVC pode especificar a classe do respectivo PV pedido classe.
PV no servidor NFS especifica o diretório correspondente.


[root @ k8smaster PP] # mais pvc.yaml #只需要指定PV的容量,访问模式和classe
apiVersion: v1
tipo: PersistentVolumeClaim
metadados:
  nome: mypvc1
spec:
  accessModes:
  - ReadWriteOnce
  recursos:
    pedidos:
      de armazenamento: 1GI
  storageClassName: NFS
[root @ k8smaster pp] # kubectl criar -f pvc.yaml 
persistentvolumeclaim / mypvc1 criado
[root @ k8smaster pp] # kubectl get pvc
nome de estado VOLUME capacidade de acesso MODOS Armazenagem AGE
mypvc1   encadernado     mypv1 1GI RWO NFS 9s
# [root @ k8smaster pp]kubectl get pv # 've Bound to mypv1, a candidatura for bem sucedida
NOME no acesso CAPACIDADE DE POLÍTICA RECLAIM MODOS o Estado da reivindicação Armazenagem RAZÃO AGE
mypv1 1GI RWO Recycle           encadernado     default / mypvc1 NFS 12m
[root @ k8smaster PP] # 
[root @ k8smaster PP] # mais pv-POD .yaml # Volume como o formato usando comum por persistentVolumeClaim especificar mypvc1 aplicação em volumes no Volume
apiVersion: V1
tipo: Pod
Metadados:
  nome: PV-POD
spec:
  Contentores:
  - nome: PV-POD-CTN
    Image: 192.168. V2: 23.100: 5000 / Tomcat
    volumeMounts:
    - nome: pv-Volume
      MOUNTPATH: / tmp / config
  Volumes:
    - Nome: pv volume
      persistentVolumeClaim:
        claimName: mypvc1
  restartPolicy: Nunca
[root @ k8smaster pp] # kubectl criar -f pv-pod.yaml 
pod / pv-pod criado
[root @ k8smaster pp] # kubectl get pod
NOME READY reinicia STATUS AGE
pv-pod 1/1 Correr 0 13s
[root @ k8smaster pp] # kubectl exec -é pv-pod / bin / bash
root @ pv-pod: / usr / local / tomcat # cd / tmp / config /
root @ pv -pod: / tmp / config # ls -lrt
total de 8
-rw-r - r-- 1 ninguém nogroup 7 19 de fevereiro 14:19 node01.log
-rw-r - r-- 1 ninguém nogroup 07 de fevereiro 19 14 : 19 node02.log
root @ pv-pod: / tmp / config #echo "pv-pod"> pv-pod.log #在pod中创建文件
root @ pv-pod: / tmp / config # ls -lrt
total de 12
-rw-r - r-- 1 ninguém nogroup 07 fevereiro 19 14 : 19 node01.log
-rw-r - r-- 1 ninguém nogroup 07 de fevereiro 19 14:19 node02.log
-rw-r - r-- 1 ninguém nogroup 7 19 de fevereiro de 2020 pv-pod.log


[@ K8snode01 o SHAREDIR root] # pwd # NFS vista do cliente no arquivo gerado
/ SHAREDIR
[@ k8snode01 o SHAREDIR raiz] # LS -lrt
Total 12 é
-rw R-& lt -. R-- 1 nfsnobody é nfsnobody é 22:19 7 Em 19 de fevereiro amdha01. log
-rw-R & lt -. r-- 1 nfsnobody é nfsnobody é 22:19 7 Em 19 de fevereiro node02.log.
-rw-R & lt -.. r-- 1 nfsnobody é nfsnobody é PV-2020 7 em 20 Fev é pod.log
[@ k8snode01 o SHAREDIR raiz] # Mais pod.log-pv 
pv-POD
[root @ k8snode01 SHAREDIR] # 
[root @ k8smaster PP] # kubectl o Excluir pv-POD POD # exit POD
POD "pv-POD" excluído
[root @ k8smaster PP] # kubectl o Excluir PVC mypvc1 # excluir recursos de reciclagem de PVC
[root @ k8smaster pp] #kubectl get pod # Quando PVC mypvc1 ser excluído, encontrado Kubernetes lançou um novo Pod, Pod desta acção é remover PV dados mypv1 requer busybox: 1,27 espelhamento
Nome Idade reinicia o status Pronto
Recycler-for-mypv1 0/1 ImagePullBackOff 0 29S
[root @ k8smaster PP] # 

链接: https: #busybox //pan.baidu.com/s/13d-i8FWF0miLx2XYNchffw: 1.27 Baixar镜像
提取码: zekc 


Eventos:
  Tipo Razão Idade De Mensagem
  ---- ------ ---- - - -------
  aviso 4m39s Falha kubelet, k8snode02 Falha ao imagem puxar "busybox: 1,27": erro de rpc: code = desc Desconhecido = resposta de erro do daemon: Get https://registry-1.docker.io / v2 /: net / http: pedido cancelado (Client.Timeout excedido enquanto aguardava cabeçalhos)
  Aviso kubelet 4m13s Falha, k8snode02 Falha ao puxar imagem "busybox: 1,27": erro de rpc: code = desc Desconhecido = resposta de erro do daemon: Get https://registry-1.docker.io/v2/: net / http: pedido canceladas enquanto espera para a conexão (Client.Timeout excedido enquanto aguardava cabeçalhos)
  normal programada 3m32s default-programador com sucesso atribuído default / reciclador-for-mypv1 para k8snode02
  aviso Falha kubelet 3m30s, k8snode02 Falha imagem puxar para "busybox: 1,27": erro de rpc: code = desc Desconhecido = resposta de erro do daemon: Get https://registry-1.docker.io/v2/: net / http: TLS aperto de mão tempo limite
  normal Puxando 2m46s (x4 mais de 4m55s) kubelet, k8snode02 Puxando imagem "busybox: 1,27 "
  Aviso 2m7s falhou (x4 mais de 4m39s) kubelet, k8snode02 Erro: ErrImagePull
  aviso 2m7s Falha kubelet, k8snode02 Falha ao imagem puxar "busybox: 1,27": erro de RPC: código = desc desconhecido = resposta de erro do daemon: Get https: // registry- 1.docker.io/v2/library/busybox/manifests/1.27: net / http: TLS aperto de mão tempo limite
  103s normal recuo (x6 mais de 4m39s) kubelet, k8snode02 Back-off puxando imagem "busybox: 1,27"
  Aviso 89s falhas (x7 mais 4m39s) kubelet, k8snode02 Erro: ImagePullBackOff
[root @ k8smaster pp] # kubectl get pv
NOME capacidade de acesso MODOS RECLAIM POLÍTICA Estado da reivindicação Armazenagem RAZÃO AGE
mypv1 1GI RWO Recycle          Disponíveis           NFS 3h10m

  [Root @ k8snode01 SHAREDIR] # Cleanup LS -lrt # Depois de eliminar o PVC, arquivo em disco é eliminado
Total 0
[root @ k8snode01 SHAREDIR] # 
  

Publicado 60 artigos originais · Louvor obteve 20 · vista 4604

Acho que você gosta

Origin blog.csdn.net/zhaikaiyun/article/details/104481456
Recomendado
Clasificación