Controlador de volumes persistentes do Kubernetes
Visão geral
- Controlador que sincroniza
PersistentVolume (PV) e PersistentVolumeClaim (PVC) do Kubernetes
- Gerencia "ponteiros" bidirecionais entre PVC e PV para evitar perda de dados
- Opera em modo de alta disponibilidade e oferece suporte quando um PVC solicita um PV específico ou quando um PV está reservado para um PVC específico
Principais funcionalidades
- Sincroniza periodicamente o estado de PVCs e PVs
- Quando o PVC não solicita um PV específico, encontra o PV mais adequado e faz o binding
- Quando o PVC solicita um PV específico, verifica se esse PV existe e atende às condições antes de fazer o binding
- Quando o PVC já está vinculado, verifica o estado e corrige se necessário
Como funciona
- Quando um PVC é criado ou atualizado, o método
syncClaim é chamado
- Se o PVC não estiver vinculado, o método
syncUnboundClaim é chamado
- Se o PVC estiver vinculado, o método
syncBoundClaim é chamado
- Quando um PV é criado ou atualizado, o método
syncVolume é chamado
Métodos principais
syncClaim
- Chama
syncUnboundClaim ou syncBoundClaim de acordo com o estado do PVC
syncUnboundClaim
- Quando o PVC não solicita um PV específico, tenta encontrar o PV mais adequado e fazer o binding
- Quando o PVC solicita um PV específico, verifica se esse PV existe e atende às condições antes de fazer o binding
syncBoundClaim
- Quando o PVC já está vinculado, verifica o estado e corrige se necessário
syncVolume
- Executa a ação apropriada de acordo com o estado do PV
- Se o PV não estiver em uso, atualiza o estado para "Available"
- Se o PV estiver vinculado a um PVC específico, verifica o estado desse PVC e corrige se necessário
Resumo do GN⁺
- Este documento fornece uma explicação detalhada do controlador de volumes persistentes do Kubernetes
- Ajuda a entender a lógica de binding entre volumes persistentes e persistent volume claims
- Aborda o funcionamento em modo de alta disponibilidade e o tratamento de várias situações excepcionais
- Material útil para desenvolvedores interessados no gerenciamento de armazenamento no Kubernetes
- Outros projetos com funcionalidades semelhantes incluem OpenEBS e Rook
1 comentários
Comentário do Hacker News
O software do Space Shuttle é extremamente estável e quase não tem bugs
O código é genérico e, por ter sido escrito em Go, é um tanto verboso
Foi prazeroso explorar o codebase da nova empresa porque ele está bem organizado
O histórico de segurança do Space Shuttle não é bom, por isso ele não está mais em operação
Usar correspondência estrutural de padrões poderia simplificar blocos
if/elseO código não é ruim e segue uma única regra
Link para uma discussão de 2018
Foi divertido escrever um driver CSI do Kubernetes
Ter uma cláusula
elsepara cada instruçãoifé considerado uma prática de segurançaÉ mostrado como criar links para intervalos específicos de linhas em arquivos no GitHub