Execute o kubernetes no LXC


Neste artigo, mostrarei como executar o kubernetes master dentro de um contĂȘiner LXC.
Este método funciona muito bem com o Proxmox e pode ser considerado uma alternativa à implantação clåssica de kubernetes com vårios assistentes.


Por que proxmox?


Porque o proxmox pronto para uso fornece muitos recursos Ășteis.
O Proxmox inclui recursos de alta disponibilidade, migração, backups automåticos, controle de acesso e tudo isso é acessível através de uma interface gråfica simples.


VocĂȘ tambĂ©m pode implantar a configuração mais simples do kubernetes com um Ășnico assistente, o proxmox fornecerĂĄ alta disponibilidade.
Este método é ótimo para implantar clusters de teste ou pequenos.


Para implantaçÔes maiores, Ă© recomendĂĄvel colocar o etcd em contĂȘineres separados que usarĂŁo discos locais rĂĄpidos e combinĂĄ-los em um cluster.
No entanto, o prĂłprio kubernetes-master ainda pode permanecer um contĂȘiner ha regular, nĂŁo precisa ter armazenamento rĂĄpido.


AlĂ©m disso, se vocĂȘ estiver lendo este artigo, presumo que na maioria dos casos vocĂȘ jĂĄ tenha algum tipo de infraestrutura no Proxmox e talvez queira ter uma Ășnica interface para gerenciar seus serviços.


PorquĂȘ LXC?


O Kubernetes serĂĄ iniciado sem problemas dentro de uma mĂĄquina virtual comum. Mas os contĂȘineres LXC fornecem a flexibilidade que nĂŁo estĂĄ disponĂ­vel nas mĂĄquinas virtuais convencionais.


De fato, os contĂȘineres LXC nĂŁo fornecem isolamento completo dos contĂȘineres do host; pelo contrĂĄrio, todos os processos dentro dos contĂȘineres iniciam como processos normais do host, apenas em um espaço para nome separado.


Este método fornece um bom desempenho, mas impÔe algumas limitaçÔes no nosso caso.


Vou discutir essas limitaçÔes e como lidar com elas neste artigo.


Configuração


Como, por padrĂŁo, os contĂȘineres nĂŁo tĂȘm permissĂŁo para carregar os mĂłdulos do kernel por conta prĂłpria, vocĂȘ deve configurĂĄ-los para carregar diretamente nos hipervisores.


Usaremos o driver de overlay para o docker, portanto, Ă© tudo o que precisamos:


 echo overlay >> /etc/modules 

Agora precisamos adicionar mais privilĂ©gios ao nosso contĂȘiner para permitir a execução de outros contĂȘineres dentro dele, adicione estas linhas Ă  configuração do seu contĂȘiner:


 lxc.apparmor.profile: unconfined lxc.cap.drop: lxc.cgroup.devices.allow: a lxc.mount.auto: proc:rw sys:rw 

A partir da versĂŁo v11.0, o kubelet requer o modo compartilhado para todas as montagens do host.


Esse hack sujo permitirĂĄ que vocĂȘ consiga isso, dentro do contĂȘiner LXC, execute:


 echo '#!/bin/sh -e mount --make-rshared /' > /etc/rc.local 

Essa ação adicionarĂĄ o mount --make-rshared / ao /etc/rc.local e executarĂĄ toda vez que o contĂȘiner carregar.


AlĂ©m disso, se vocĂȘ planeja usar o gerenciador de HA no proxmox, esteja ciente de que no momento existe um bug desagradĂĄvel nÂș 1842 , que mata Ă  força os processos de contĂȘiner durante a migração, o que pode gerar processos zumbis ou atĂ© bloquear seu armazenamento.


Isso não é bom, felizmente existe uma solução simples:


 sed -i 's/forceStop => 1/forceStop => 0/' /usr/share/perl5/PVE/HA/Resources/PVECT.pm 

AlĂ©m disso, vocĂȘ pode adicionar as seguintes opçÔes Ă  sua janela de encaixe:


 --storage-driver overlay2 --iptables=false --ip-masq=false 

Copie docker.service de /lib para /etc para substituir suas opçÔes:


 cp /{lib,etc}/systemd/system/docker.service 

Agora adicione essas opçÔes à seção ExecStart .


Isso é tudo, após essas etapas, a instalação padrão do kubeadm deve funcionar sem problemas.

Source: https://habr.com/ru/post/pt420913/


All Articles