Contêineres Linux (LXC) no Red Hat / CentOS EL6 - lxc-create versus libvirt?

13

É complicado tentar permanecer dentro das boas graças da Red Hat e ainda planejar a longevidade do sistema ...

Sou defensor do Linux Containers (LXC) há mais de um ano. Minhas instalações iniciais foram baseadas em informações obtidas em tutoriais online, como este e este . Este centrado em torno dos lxc-create, lxc-start|stope lxc-destroycomandos e modificar existentes modelos OpenVZ .

Isso funciona bem e está em execução feliz na produção. No entanto, estou trazendo alguns sistemas adicionais e decidi verificar a documentação atual da Red Hat sobre os contêineres no EL6. Fiquei surpreso ao ver sua posição oficial sobre isso.

Em RHEL 6 fornece as ferramentas LXC necessárias para usar o Linux Containers? , A Red Hat descreve o LXC como uma prévia da tecnologia e sugere o uso da libvirt para gerenciar criar e gerenciar contêineres .

No entanto, a Oracle defende uma técnica de conteinerização totalmente diferente em seu Unbreakable Linux.

Parece haver alguma funcionalidade ausente no método libvirt, mas minha abordagem inicial com os comandos lxc- * foi um processo manual ... não sei exatamente o que é certo ou o meio "aceito" de gerenciar contêineres no EL6 .

  • Qual é a sabedoria convencional em relação aos sistemas LXC e RHEL hoje em dia?
  • Como você os implementa em sua organização?
  • Existem vantagens em uma abordagem em relação à (s) outra (s)?
  • Eles podem coexistir?
ewwhite
fonte
1
A libvirt possui um driver de contêiner LXC e o controla apenas, não é uma solução de virtualização / contêiner por si só.
Cristian Ciupitu

Respostas:

7

Qual é a sabedoria convencional em relação aos sistemas LXC e RHEL hoje em dia?

Pessoalmente, acho que a configuração atual está um pouco ausente. O LXC parece mais na vanguarda - certamente mais mantido.

Como você os está implementando?

Em termos de oferecê-lo como uma opção de virtualização, não sou. Acho que falta a configuração tecnológica atual.

  • Nenhum espaço para nome de nome de usuário.
  • Certos pontos de montagem não reconhecem o namespace (cgroups, selinux)
  • Os valores em / proc são globais do sistema enganosos que não são responsáveis ​​pelo particionamento de recursos nos espaços para nome.
  • Quebra auditoria.

Eu acho que é uma ferramenta muito boa para a contenção no nível do aplicativo. Usamos namespaces e cgroups diretamente para conter recursos de rede e IPC para determinados aplicativos da web executados pelo usuário. Nós fornecemos nossa própria interface para controlá-lo. No RHEL7, estou pensando em mudar essa funcionalidade para libvirt-lxcas revisões mais recentes de libvirtsuporte ao conceito de ACLs de usuário.

Para virtualização em termos de um sistema totalmente inicializado, estou esperando para ver o que é oferecido no RHEL7, mas com toda a honestidade, sinto que poderemos ver apenas uma solução boa o suficiente quando estivermos em uma versão menor posterior do RHEL7 e, talvez, somente em um estado de visualização de tecnologia.

Fique de olho em systemd-nspawnalgo que me diz nos próximos 18 meses, ou seja, ela pode ser a melhor ferramenta para fazer virtualização totalmente em linux, seja para que os autores do sistema deixem claro que não é seguro agora! Eu não ficaria surpreso se as libvirtgotas libvirt-lxcacabarem e apenas oferece um wrapper systemd-nspawncom as fatias do systemd definidas.

Além disso, tenha cuidado com as conversas nos últimos 6 meses sobre a reimplementação do cgroups como uma interface de programador de kernel em vez de uma interface de sistema de arquivos (talvez usando netlink ou algo que não tenha verificado), portanto o systemd deve estar muito quente na tentativa de acertar isso muito rapidamente.

Existem vantagens em uma abordagem em relação à outra?

Eu acho que a opção LXC (não libvirt-lxc) é melhor mantida. Depois de ler o libvirt-lxccódigo fonte, parece apressado. O LXC tradicional certamente possui recursos mais recentes, que foram melhor testados. Ambos exigem um grau de compatibilidade com o sistema init sendo executado neles, mas suspeito que você encontrará o LXC um pouco mais "chave na mão" do que a libvirt-lxcopção particularmente no que diz respeito a obter distros para trabalhar neles.

Eles podem coexistir?

Claro, lembre-se de que, para todos os efeitos, ambos estão fazendo a mesma coisa. Organização de namespaces, cgroups e pontos de montagem. Todas as primitivas são tratadas pelo próprio kernel. Ambas as lxcimplementações oferecem apenas um mecanismo de interface com as opções de kernel disponíveis.

Matthew Ife
fonte
9

A Red Hat está fazendo um grande esforço de contêiner. Eles estão construindo um novo produto inteiro, o Red Hat Enterprise Linux Atomic Host , em torno dele.

Para uma abordagem menos radical, consulte o RHEL7 beta Resource Management e o Linux Containers Guide ; você notará que empurra o libvirt-lxc e não faz menção às ferramentas do lxc.

sciurus
fonte
1
Obrigado por isso. O host atômico RHEL parece confiar fortemente no Docker.io . Isso indica que o Docker e as ferramentas relacionadas são o caminho certo a seguir?
E19h14
A Red Hat definitivamente está investindo pesado no docker, mas eles também são os principais desenvolvedores do libvirt-lxc. Examinaria os recursos que cada um oferece e veria qual melhor se adapta às suas necessidades.
Sciurus #
1
Sim @ewwhite O seguinte documento do Redhat menciona exatamente isso: access.redhat.com/articles/1365153
Susinthiran
1

Os executáveis ​​lxc- * são empacotados no pacote lxc no EPEL . No entanto, é o antigo lançamento de "suporte a longo prazo". Você nem tem a opção "-f" no lxc-ls. Eu simplesmente instalaria o Ubuntu para meus hosts LXC.

A maneira RHEL de gerenciar o LXC parece ser via libvirt-lxc, mas aparentemente está obsoleta .

Observou que o Ubuntu está suportando muitos dos novos desenvolvimentos do lxc / lxd, enquanto o Redhat está focado no KVM e no docker.

Lester Cheung
fonte
A questão está relacionada ao RHEL 6, a descontinuação significa RHEL 7 «Os seguintes pacotes libvirt-lxc foram descontinuados a partir do Red Hat Enterprise Linux 7.1:» para que isso possa ser usado
taharqa