armazenamento docker
Quando o contêiner é excluído, os dados também são excluídos. Para os dados que precisam ser aplicados para persistência, é necessário configurar o armazenamento, que geralmente é baseado no armazenamento no nó (e o armazenamento do nó pode ser NFS, ceph, iscsi, etc.)
Armazenamento de pod de K8s
Como o Pod é uma coleção baseada em contêineres, o compartilhamento de armazenamento é realizado com base no contêiner de pausa
Volume de armazenamento do K8s A
função do volume de armazenamento é que, devido à estrutura do contêiner, os dados serão excluídos conforme o contêiner é excluído, portanto, o Pod precisa usar a configuração do volume de armazenamento para compartilhamento e persistência de dados.
1. Use a estrutura de configuração
- Docker: o uso de armazenamento do docker é diretamente relativo ao próprio contêiner
- Configure os recursos, com base no diretório do nó ou NFS, o ceph deve ser configurado no nó
- Uso de montagem: docker run -v / root / xxxx: / root / xxxx (o armazenamento do Docker é dividido em 2 tipos, você pode ver o artigo anterior para obter detalhes)
- Pod: o armazenamento do pod é definido com base nos recursos do pod, porque o pod não é um único indivíduo
- O armazenamento precisa ser definido primeiro, ou seja, os recursos de armazenamento são preparados, o campo de volumes (camada de pod)
- Recursos de armazenamento de montagem de contêiner (recursos de armazenamento de ligação), campo volumeMounts (camada de contêineres)
2. Classificação do volume de armazenamento
- Volume de armazenamento compartilhado: para uso temporário de dados ou com base no uso em um pod
- Volume de armazenamento compartilhado persistente: os dados podem ser armazenamento compartilhado persistente e não serão excluídos com o ciclo de vida do contêiner
Volume de armazenamento compartilhado
- emptyDir: semelhante a docker em execução direta, e Pod é o contêiner de conteúdo que precisa compartilhar dados e desaparecerá com o ciclo de vida do Pod
- Pode fornecer alto desempenho com base na implementação de memória
Volume de armazenamento compartilhado persistente
- hostPath: armazenamento de diretório baseado em nó. O nó pode ser armazenamento NFS ou armazenamento ceph, mas a estratégia de cópia do controlador não pode ser implementada. Os dados só podem ser persistidos e compartilhados no nó (adequado para controladores de daemonset, responsáveis apenas por coletar dados em seus respectivos nós)
- nfs / cinder / ceph ...: baseado no armazenamento de rede para realizar o verdadeiro armazenamento compartilhado persistente
Exemplo (NFS)
Pré-requisitos O
nó do nó precisa instalar o cliente nfs
apiVersion: apps/v1
kind: Deployment
metadata:
name: centos-nfs
namespace: default
labels:
app: centos
version: "7.6"
spec:
replicas: 1
selector:
matchLabels:
app: centos
version: "7.6"
template:
metadata:
labels:
app: centos
version: "7.6"
spec:
containers:
- name: centos-nfs
image: centos:7.6.1810
imagePullPolicy: IfNotPresent
command: [ /usr/sbin/init ]
volumeMounts: #挂载存储
- mountPath: /mnt #容器内挂载目录
name: nfs #定义存储的name名称
volumes: #定义存储
- name: nfs #名称
nfs: #存储类型
path: /nfs_share #nfs定义的目录
server: 192.168.12.10 #服务器地址
readOnly: true #开启只读,volumeMounts也可以设置针对容器,这里开启就是针对Pod
- Referência: Books-kubernetes advanced combat-Ma Yongliang