Correcção de uma emissão de LVM em Kubernetes On AWS
Temos vindo a migrar a nossa infra-estrutura legada para Kubernetes. A capacidade de implantar em segundos faz uma enorme diferença em termos do número de inclinar-se experiências que podemos fazer. Kubernetes dá-nos uma maneira de gerir a simplicidade do contentor Docker a uma escala que pode lidar com 1 bilião de eventos widget com o correspondente processamento de dados que precisa de acontecer.
Embora Kubernetes seja fantástica, é ainda relativamente nova e há muitos lugares para contribuir. Tudo começou quando o nosso nó mestre se afundou no AWS - não voltou a subir. Devia ter voltado. Os nós no AWS estão configurados para voltar a subir sem problemas. Isto levou ao meu primeiro cometer. Depois de escavar nos registos do sistema, vi este erro gritante:
The disk drive for /mnt/ephemeral is not ready yet or not present.
keys:Continue to wait, or Press S to skip mounting or M for manual recovery
Investigando a fonte, descobri que na AWS, os scripts Kubernetes criam um volume LVM para armazenar os dados.
lvcreate -l 100%FREE --thinpool pool-ephemeral vg-ephemeral
Executar o código parecia funcionar. Mais do que isso, o mestre trabalhou na inicialização. O que estava a acontecer? Eu entrei num master existente e procurei o volume lógico. Não estava lá! O diretório estava lá, mas o volume não estava.
Voltando aos logs do sistema (desde o primeiro boot), vemos este erro em 'lvcreate':
Insufficient free space: 3905 extents needed, but only 3897 available
Aparentemente, este é um problema na lvcreate em geral: você não pode usar 100%FREE com uma piscina fina! Vai falhar. Você pode ver mais detalhes no bilhete.
Bem, não havia necessidade de usar uma piscina fina para isto. Não estamos a fornecer demasiado o disco em Kubernetes -> o meu primeiro pedido de puxar! Eu assinei o Contrato de Licença de Contribuinte e o resto é história.
Temos agora 4 grupos de produção Kubernetes com dezenas de cápsulas (e nós mestres reinicializáveis) e estamos ansiosos pelo trabalho de estabilidade e alta disponibilidade que virá em "Ubernetes". Se você está interessado em resolver problemas como este, gostaríamos de ter você junte-se à nossa equipa!