Ga naar inhoud

Incus

In dit artikel

Informatie

Incus is een open-source beheerder voor systeemcontainers en virtuele machines. Het is een fork van LXD en biedt een eenvoudig maar krachtig hulpmiddel voor het beheren van Linux-containers en virtuele machines op een geünificeerd platform.

Incus. Belangrijkste functies

  • Beheer van containers en VM's: Incus stelt u in staat om Linux-systeemcontainers en volledige QEMU/KVM-virtuele machines via één interface uit te voeren.
  • Procesisolatie: Containers werken in een geïsoleerde omgeving met hun eigen bestandssystemen, netwerkinterfaces en processen.
  • Netwerkmogelijkheden: Ingebouwde ondersteuning voor verschillende soorten netwerken: bruggen, NAT, VLAN's, overlay-netwerken voor containers.
  • Opslagbeheer: Flexibel systeem voor opslagpools met ondersteuning voor verschillende backends: dir, btrfs, ZFS, LVM.
  • Momentopnames en migratie: Aanmaken van momentopnames van de containerstatus, live migratie tussen hosts zonder services te stoppen.
  • Configuratieprofielen: Herbruikbare profielen voor snelle implementatie van containers met vooraf gedefinieerde parameters.
  • Beperking van resources: Nauwkeurige controle over CPU, geheugen, schijf-I/O en netwerkbandbreedte voor elke container.
  • REST API: Volledig uitgeruste HTTP-API voor automatisering en integratie met externe systemen.
  • Webinterface: Ingebouwd webbeheerpaneel voor visuele infrastructuurcontrole.
  • Afbeeldingsbibliotheek: Toegang tot een uitgebreide collectie kant-en-klare afbeeldingen van verschillende Linux-distributies.
  • Clustering: Mogelijkheid om meerdere hosts samen te voegen tot één cluster voor gedistribueerd beheer.

Implementatiefuncties

ID Softwarenaam Compatibel OS VM BM VGPU GPU Min CPU (Kernen) Min RAM (GB) Min HDD/SSD (GB) Aangepast Domein Actief
234 Linux Containers Incus Debian 13 + + + + 2 2 50 Nee BESTELLEN

Belangrijkste Incus-pad en bestanden:

  • Hoofconfiguratiebestand: /etc/default/incus
  • Gegevensmap: /var/lib/incus
  • Opslagpools: /var/lib/incus/storage-pools/
  • Containers: /var/lib/incus/containers/
  • Afbeeldingen: /var/lib/incus/images/
  • Logboekbestand: /var/log/incus/incusd.log
  • Systeemdiensten: /usr/lib/systemd/system/incus*.service
  • Sysctl-configuratie: /etc/sysctl.d/50-incus.conf
  • Gebruikersconfiguratie: /root/.config/incus/

Opmerking

Tenzij anders vermeld, installeren we standaard de nieuwste releaseversie van de software van de website van de ontwikkelaar of de repositories van het besturingssysteem.

Aan de slag na het implementeren van Incus

Na betaling wordt er een e-mailmelding verzonden naar het bij registratie opgegeven e-mailadres, waarin wordt aangegeven dat de server klaar is voor gebruik. Hierin staan het IP-adres van de VPS en de inloggegevens voor toegang. Klanten van ons bedrijf beheren apparatuur via het Server Management Panel en APIInvapi.

Inloggegevens zijn te vinden in het tabblad Configuration >> Tags van het serverbeheerpaneel of in de verzonden e-mail:

  • Link voor toegang tot de Incus-webinterface: in tag webpanel (poort 8443, HTTPS)

Let op

Om toegang te krijgen tot de webinterface, moet u HTTPS gebruiken en het zelfondertekende certificaat in uw browser accepteren.

Bij het eerste bezoek aan de Incus-webinterface waarschuwt de browser voor een onveilige verbinding vanwege het zelfondertekende certificaat. U moet het certificaat accepteren om door te gaan:

Na het accepteren van het certificaat opent de inlogpagina. Klik op de knop Login with TLS om het authenticatieproces te starten:

Het systeem doorverwijst u naar de pagina voor het toevoegen van een bestaand certificaat:

Selecteer het tabblad Trust token en volg de instructies:

  1. Voer in de serverterminal het volgende commando uit om een token te genereren:

    incus config trust add myclient
    

  2. Het systeem genereert een token dat gekopieerd moet worden:

  3. Plak het verkregen token in het bijbehorende tekstveld op de authenticatiepagina en klik op Import.

Na succesvolle authenticatie opent de hoofdpagina van de webinterface met de lijst van instanties.

Een nieuwe container maken via de webinterface

Om een nieuwe container te maken, klikt u op de knop Create instance in de rechterbovenhoek van de interface:

Er opent zich een formulier voor het maken van een instantie met verschillende configuratiesecties. Om een basisafbeelding te selecteren, klikt u op de knop Browse images. Er opent zich een venster voor het selecteren van afbeeldingen met filters op distributie, release, variant, architectuur en type:

De volgende configuratiesecties zijn beschikbaar:

  • Main configuration — basisparameters van de container: naam, beschrijving, instantietype (container of virtuele machine), basisafbeelding en toegewezen profielen;
  • Devices — apparaatbeheer voor de container:
  • Disk — configuratie van schijfapparaat en mountpunt;
  • Network — configuratie van netwerkinterface;
  • GPU — aansluiten van grafische accelerators;
  • Proxy — configuratie van poortdoorsturing tussen host en container;
  • Other — aanvullende apparaattypen;
  • Resource limits — beperking van resources: processor (CPU), RAM, schijf-I/O-bewerkingen;
  • Security policies — beveiligingsbeleidsregels: configuratie van isolatie, rechten en beveiligingsprofielen (AppArmor, SELinux);
  • Snapshots — beheer van momentopnames van de containerstatus voor back-up en herstel;
  • Migration — parameters voor migratie van containers tussen hosts;
  • Boot — opstartinstellingen: volgorde van opstartapparaten, automatisch opstarten bij systeemstart;
  • Cloud init — configuratie van automatische initialisatie van containers via cloud-init (gebruikers, netwerk, pakketten, scripts).

Selecteer de gewenste afbeelding door op de knop Select ernaast te klikken:

Vul na het selecteren van een afbeelding de basisparameters in:

  • Instance name — naam van de container;
  • Description — beschrijving (optioneel);
  • Instance type — instantietype (Container of Virtual Machine);
  • Profiles — configuratieprofielen.

Om de container direct na het maken te starten, klikt u op Create and start. Om te maken zonder te starten, gebruikt u de knop Create.

Monitoring van de containerstatus

Tijdens het implementeren van de container wordt de voortgang van het downloaden van de afbeelding weergegeven. De status "Setting up" met aangegeven downloadvoortgang toont de huidige voortgang van het maken van de instantie. Na voltooiing van de installatie verandert de status in "Running" met een groene indicator:

Beheer van diensten

Status controleren:

systemctl status incus

Dienst herstarten:

systemctl restart incus

Dienst stoppen:

systemctl stop incus

Dienst starten:

systemctl start incus

Logboeken bekijken:

journalctl -u incus -f
tail -f /var/log/incus/incusd.log

Initiële infrastructuurconfiguratie

Na het implementeren van de server wordt aanbevolen om de initiële infrastructuurconfiguratie van Incus uit te voeren.

Een opslagpool maken

Een opslagpool definieert waar de containergegevens worden opgeslagen:

incus storage create default dir source=/var/lib/incus/storage-pools/default

Gemaakte opslagpools controleren:

incus storage list

Om gedetailleerde informatie over een pool te bekijken:

incus storage show default

Netwerkconfiguratie

Een NAT-brug maken voor containers met automatische IPv4-adressering:

incus network create incusbr0 ipv4.address=auto ipv6.address=none

Netwerkinstellingen controleren:

incus network list

Netwerkconfiguratie bekijken:

incus network show incusbr0

Het standaardprofiel configureren

Het profiel default definieert de basisconfiguratie voor nieuwe containers. Een rootschijf toevoegen aan het profiel:

incus profile device add default root disk path=/ pool=default

Een netwerkinterface toevoegen aan het profiel:

incus profile device add default eth0 nic network=incusbr0

Profielconfiguratie controleren:

incus profile show default

Containers maken en beheren

Een container maken

Voorbeeld van het maken van een Debian 12-container met resourcebeperkingen:

incus launch images:debian/12 deb12 --profile default \
  -c limits.cpu=2 -c limits.memory=2GiB

Commandoparameters:

  • images:debian/12 - afbeelding uit openbare repository
  • deb12 - naam van de container
  • --profile default - gebruik van standaardprofiel
  • -c limits.cpu=2 - beperking tot 2 CPU-kernen
  • -c limits.memory=2GiB - geheugenbeperking van 2 GB

Containers bekijken

Lijst van alle instanties:

incus list

De uitvoer bevat informatie over de status, IP-adressen en het type van elke container.

Beheer van de containerstatus

Een container starten:

incus start <name>

Een container stoppen:

incus stop <name>

Een container herstarten:

incus restart <name>

Een container verwijderen (vereist stoppen):

incus delete <name>

Een draaiende container forceren verwijderen:

incus delete <name> --force

Toegang tot containers

Verbinden via bash:

incus exec deb12 -- bash

Verbinden met de TTY-console:

incus console deb12

Om de console te verlaten, gebruikt u de toetsencombinatie Ctrl+a q.

Poortdoorsturing

Om toegang te krijgen tot services binnen een container vanuit een extern netwerk, wordt poortdoorsturing gebruikt via een proxy-apparaat:

incus config device add deb12 web proxy \
  listen=tcp:0.0.0.0:8080 connect=tcp:127.0.0.1:80

Dit commando stuurt hostpoort 8080 door naar containerpoort 80.

Voorbeeld voor meerdere poorten:

HTTP:

incus config device add mycontainer http proxy \
  listen=tcp:0.0.0.0:80 connect=tcp:127.0.0.1:80

HTTPS:

incus config device add mycontainer https proxy \
  listen=tcp:0.0.0.0:443 connect=tcp:127.0.0.1:443

SSH:

incus config device add mycontainer ssh proxy \
  listen=tcp:0.0.0.0:2222 connect=tcp:127.0.0.1:22

Containerconfiguratie beheren

Configuratie bekijken

Volledige uitgebreide containerconfiguratie bekijken:

incus config show <name> --expanded

Basisconfiguratie bekijken zonder profielen:

incus config show <name>

Parameters wijzigen

Configuratieparameters instellen:

CPU-beperking:

incus config set <name> limits.cpu=4

Geheugenbeperking:

incus config set <name> limits.memory=4GiB

Schijf-I/O-beperking:

incus config set <name> limits.disk.priority=5

Automatisch opstarten van container:

incus config set <name> boot.autostart=true

Apparaten toevoegen

Algemene syntaxis voor het toevoegen van apparaten:

incus config device add <name> <device-name> <type> key=value

Voorbeelden:

Een extra schijf toevoegen:

incus config device add mycontainer data disk \
  source=/data/mycontainer pool=default

Een extra netwerkinterface toevoegen:

incus config device add mycontainer eth1 nic \
  network=incusbr1 name=eth1

Een directory op de host in een container mounten:

incus config device add mycontainer shared disk \
  source=/host/path path=/container/path

Een apparaat verwijderen:

incus config device remove <name> <device-name>

Werken met momentopnames en migratie

Momentopnames maken

Momentopnames stellen u in staat om de containerstatus op te slaan voor later herstel:

incus snapshot <name> <snapshot-name>

Voorbeeld:

incus snapshot deb12 before-update

Lijst van containermomentopnames:

incus info <name>

Herstellen vanuit een momentopname

incus restore <name> <snapshot-name>

Voorbeeld:

incus restore deb12 before-update

Een momentopname verwijderen:

incus delete <name>/<snapshot-name>

Hernoemen en kopiëren

Een container hernoemen:

incus move <name> <newname>

Een container kopiëren op dezelfde host:

incus copy <name> <newname>

Een container kopiëren naar een andere Incus-host:

incus copy <name> <remote>:<newname>

Om met externe hosts te werken, moet u eerst een remote toevoegen:

incus remote add myremote https://remote-ip:8443

Afbeeldingen beheren

Afbeeldingen bekijken

Lijst van lokale afbeeldingen:

incus image list

Lijst van afbeeldingen in externe repository:

incus image list images:

Zoeken naar een specifieke distributie:

incus image list images: debian
incus image list images: ubuntu

Afbeeldingen kopiëren

Een afbeelding kopiëren uit openbare repository met automatische update:

incus image copy images:debian/12 local: --auto-update

Een afbeelding kopiëren met alias:

incus image copy images:debian/12 local: --alias debian12

Een afbeelding maken vanuit een container

incus publish <container-name> --alias my-custom-image

Afbeeldingen verwijderen

incus image delete <image-fingerprint>

of via alias:

incus image delete <alias>

Netwerkinteractie

Netwerkbeheer

Lijst van netwerken:

incus network list

Netwerkconfiguratie bekijken:

incus network show <network-name>

Een nieuw netwerk maken:

# Een bruggennetwerk maken
incus network create mybr0 \
  ipv4.address=10.10.10.1/24 \
  ipv4.nat=true \
  ipv6.address=none


# Een macvlan-netwerk maken
incus network create mymacvlan \
  type=macvlan \
  parent=eth0

Een netwerk bewerken:

incus network edit <network-name>

Een netwerk verwijderen:

incus network delete <network-name>

Netwerkdoorstuuringsregels

Een doorstuuringsregel maken voor poortdoorsturing:

incus network forward create incusbr0 <external-ip>
incus network forward port add incusbr0 <external-ip> tcp 80 <container-ip> 80

Opslagbeheer

Opslagpools beheren

Lijst van pools:

incus storage list

Poolinformatie bekijken:

incus storage show <pool-name>

Een opslagpool maken:

Dir-gebaseerde pool:

incus storage create mypool dir source=/var/lib/incus/pools/mypool

Btrfs-pool:

incus storage create mybtrfs btrfs source=/dev/sdb

ZFS-pool:

incus storage create myzfs zfs source=/dev/sdc

Een pool bewerken:

incus storage edit <pool-name>

Een pool verwijderen:

incus storage delete <pool-name>

Volumes beheren

Een aangepast volume maken:

incus storage volume create <pool-name> <volume-name>

Lijst van volumes in een pool:

incus storage volume list <pool-name>

Een volume aan een container koppelen:

incus config device add <container> <device-name> disk \
  pool=<pool-name> \
  source=<volume-name> \
  path=/mount/path

Een volume kopiëren:

incus storage volume copy <pool>/<volume> <pool>/<new-volume>

Een volume verwijderen:

incus storage volume delete <pool-name> <volume-name>

NAT- en routingconfiguratie

In sommige gevallen kan handmatige configuratie van NAT- en routingregels vereist zijn om containers netwerktoegang tot het externe netwerk te bieden.

Overschakelen naar nftables

update-alternatives --set iptables /usr/sbin/iptables-nft
update-alternatives --set ip6tables /usr/sbin/ip6tables-nft
update-alternatives --set arptables /usr/sbin/arptables-nft
update-alternatives --set ebtables /usr/sbin/ebtables-nft

IP-forwarding inschakelen

sysctl -w net.ipv4.ip_forward=1

Voor permanente toepassing, toevoegen aan /etc/sysctl.conf:

net.ipv4.ip_forward=1

Incus herstarten na wijzigingen:

systemctl restart incus

NAT-tabel configureren

NAT-tabel en POSTROUTING-keten maken:

nft add table ip nat
nft add chain ip nat POSTROUTING '{ type nat hook postrouting priority srcnat; }'

Masquerade-regel toevoegen voor containersubnet:

nft add rule ip nat POSTROUTING oifname "ens1" ip saddr 10.1.4.0/24 counter masquerade

Opmerking

Vervang ens1 door de naam van uw externe netwerkinterface en 10.1.4.0/24 door uw Incus-brugsubnet.

FORWARD-keten configureren

Filtertabel en FORWARD-keten maken:

nft add table ip filter
nft add chain ip filter FORWARD '{ type filter hook forward priority 0; policy accept; }'

Regels toevoegen om verkeer toe te staan:

Verkeer van containers naar buiten toestaan:

nft insert rule ip filter FORWARD iifname "incusbr0" oifname "ens1" accept

Gevestigd/gerelateerd verkeer terug toestaan:

nft insert rule ip filter FORWARD iifname "ens1" oifname "incusbr0" ct state established,related accept

nftables-regels controleren

Alle regels bekijken:

nft list ruleset

Regels opslaan (voor Debian/Ubuntu):

Pakket installeren voor het opslaan van regels:

apt-get install nftables

Huidige regels opslaan:

nft list ruleset > /etc/nftables.conf

Automatisch laden inschakelen:

systemctl enable nftables

Opmerking

Gedetailleerde informatie over alle Incus-mogelijkheden is te vinden in de officiële ontwikkelaarsdocumentatie.

Een server met Incus bestellen via de API

question_mark
Is there anything I can help you with?
question_mark
AI Assistant ×