Bonsoir,

Ce n'est pas du KVM ni du Xen, mais as-tu regardé systemd-nspawn ?
Ça me semble correspondre à ton besoin. Il a remplacé LXC depuis
quelques temps sur mes serveurs perso, et c'est pareil en plus simple à
l'usage.

Par rapport à tes contraintes :

 1. Tu peux utiliser un LV par conteneur, ou un subvolume btrfs (cloner
    un conteneur devient juste faire un snapshot rw du subvolume et
    copier un fichier de conf).
 2. La gestion du réseau est automatique. Tu peux définir une zone dans
    la section "[Network]" du fichier de configuration ("Zone=public"
    par exemple créera un bridge nommé "vz-public" sur le host).
 3. C'est du conteneur, donc tout tourne sur le noyau de l'hôte, comme
    avec LXC.
 4. Il gère la règle snat pour sortir tout seul, les interfaces sont en
    DHCP est par défaut (mais tu peux configurer des IP fixes si tu
    préfères t'embêter).

Autres éléments :

  * libnss-mymachines permet la résolution DNS des noms des conteneurs
    depuis l'hôte et les conteneurs.
  * On peut aussi utiliser libnss-mymachines pour résoudre les noms des
    UID/GID des conteneurs depuis l'hôte (il lance les conteneurs en
    "private" par défaut, donc avec un range de UID/GID différent par
    conteneur).
  * Pour créer un conteneur, mon process est en gros "btrfs subvolume
    create /var/lib/machines/container-name; debootstrap; vi
    /etc/systemd/nspawn/container-name.nspawn; machinectl start
    container-name" + la conf dans le conteneur (activation de
    systemd-networkd, etc.).
  * La migration depuis LXC, c'était simplement déplacer le rootfs vers
    /var/lib/machines/container-name et créer le fichier de conf dans
    /etc/systemd/nspawn (qui contient principalement la "zone" pour le
    bridge).
  * Les containers sont gérés par des units systemd
    (systemd-nspawn@container-name.service), donc on peut définir
    l'ordonnancement (After/Before/Wants/etc.) comme pour n'importe quel
    autre service.

Globalement, ça ne fait "que" gérer des cgroups pour isoler les ressources.

Sylvain

Le 13/11/2020 à 19:15, Daniel Caillibaud a écrit :
> Bonjour,
>
> Je vous lis depuis qq temps mais c'est mon premier post ici, bonjour tout
> le monde !
>
> Sur un host debian devant héberger des vms debian, je cherche un
> orchestrateur kvm en cli me permettant :
> 1) chaque vm dans son lv, avec ce lv montable sur le host
> 2) conf réseau permettant de définir une (ou deux) interface dans la vm
>    sur le (ou les) bridges du host (un public et un privé, la plupart
>    des vms n'ont pas d'ip publique)
> 3) si possible pas de grub dans la vm, on la démarre avec noyau/initrd du
>    host
> 4) pas de nat (sauf snat pour que les vm privées puissent sortir sur
>    internet), ni dhcp, ni dnsmask, ni autre fioriture. Pas besoin de HA (ni
>    drbd ni ceph)
>
> J'ai testé, plus ou moins rapidement
>
> - libvirt+virsh : man virsh fait un peu peur, galère pour arriver à booter
>   une première VM et s'y connecter, pas réussi à configurer le réseau
>   proprement
>
> - ganeti : leur système de hook debootstrap semble sympa, mais idem, je
>   suis resté comme un idiot sur la conf réseau.
>
> - proxmox : la doc est pas mal, commandes cli claires, j'ai une vm qui boot
>   mais je réalise qu'avec un storage lvm-thin je peux pas monter son
>   filesystem sur le host, je me suis arrêté là.
>
> Le montage du lvm sur le host, c'est ce qui me permet du backup incrémental
> avec plein de snapshots sur le serveur de backup (j-1, j-2, …,
> month-12, merci btrfs), ne pas avoir ça serait une vraie galère (doubler
> toute la procédure de backup/snapshots, car j'ai encore des hosts en
> stretch/lxc2).
>
> Si c'est plus simple avec xen plutôt que kvm, why not, mais j'ai pas
> l'impression que j'arriverai mieux à mes fins…
>
> Je suis donc preneur de tout conseil, merci à ceux qui prendront un peu de
> temps pour en donner !
>
>
>
> PS: un peu plus d'infos sur le contexte
>
> J'utilise depuis pas mal d'années lxc en cli (vm debian sur host debian),
> tout marchait très bien
> - un lv par vm
> - création de vm simple avec
>   - pour le contenu copie de lv ou debootstrap sur un lv vide
>   - génération du /var/lib/lxc/lavm/config avec awk (y'a que l'ip qui
>     change)
> - config réseau très simple avec un bridge sur le host et ip/nic déclarée
>   dans la conf de la vm       (en fait deux, br0 pour l'interface
>   publique et br1 pour l'interface privée, sur vrack ovh), rien à modifier
>   dans la vm (le host crée un nic veth-lavm qui s'appelle veth0 dans la vm
>   et a la bonne ip)
>
> Mais depuis buster et lxc3, les choses se compliquent, y'a plein de
> services qui déconnent à cause de la nouvelle gestion des cgroup par
> systemd, et d'après mes lectures (nombreuses), pas tellement d'espoir, ma
> façon de faire avec un linux complet dans un conteneur n'est plus tellement
> dans l'esprit de lxc, le seul moyen d'y parvenir à peu près est de faire
> sauter pas mal d'isolations, lxc servirait alors plus à grand chose, autant
> tout faire tourner sur le host directement.
>

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Liste de diffusion du FRsAG
http://www.frsag.org/

Répondre à