Alocare resurse pentru containere in LXD

Postat la Sun 29 April 2018 in tutoriale, lxd, lxc

Implicit containerele pornite in LXD au access la toate resursele disponibile: procesor, memorie, retea, spatiu de stocare.

Limitarile de resurse pot fi definite la nivel de profil sau instanta si aplicate la pornirea/initializarea containerelor.

Procesor

Din punct de vedere al resurselor CPU sunt suportate 4 moduri:

  • alocare X nuclee (core-uri)
  • alocare specifica nucleelor (1,3 sau 5)
  • alocare de procent de CPU
  • alocare timp de executie per procesor

Limtarea ca numar de nuclee:

lxc config set u1 limits.cpu 2

Limtarea specifica de nuclee:

lxc config set u1 limits.cpu 1,3

Alocare procentuala de resurse CPU:

lxc config set u1 limits.cpu.allowance 10%

Alocare timpului de executie la CPU:

lxc config set u1 limits.cpu.allowance 25ms/200ms

Ori daca dorim ca containerul sa aibe prioritatea minima la rulare:

lxc config set u1 limits.cpu.priority 0

Memorie

Limitarea memoriei disponibile pentru un container:

lxc config set u1 limits.memory 2GB

Dezactivarea memoriei swap (implicit este activata):

lxc config set u1 limits.memory.swap false

Disc

Limitarea spatiului de disc utilizat de un container se ajusta (cand folosim ZFS/btrfs):

lxc exec u1 -- df -h
Filesystem              Size  Used Avail Use% Mounted on
lxd001/containers/u1     21G  853M   20G   5% /

lxc config device set u1 root size 40GB

lxc exec u1 -- df -h
Filesystem              Size  Used Avail Use% Mounted on
lxd001/containers/u1     41G  853M   40G   3% /

Daca discul nu este specificat in configuratie, adica se mosteneste setarile de la profil, atunci putem ajusta prin:

lxc stop u1

lxc config device add u1 root disk path=/ pool=lxd001 size=40GB

lxc start u1

lxc exec u1 -- df -h
Filesystem              Size  Used Avail Use% Mounted on
lxd001/containers/u1     41G  853M   40G   3% /

De asemenea putem modifica si viteza se citire/scriere pe disc:

lxc config device set u1 root limits.read 30MB

lxc config device set u1 root limits.write 10MB

lxc config device set u1 root limits.read 20Iops

lxc config device set u1 root limits.write 10Iops

sau putem seta prioritatea de citire/scriere (0 la 10):

lxc config set u1 root limits.disk.priority 10

Retea

Setarile se aplica similar ca la disc:

lxc config device set u1 eth0 limits.ingress 50Mbit

lxc config device set u1 eth0 limits.egress 100Mbit

lxc config set u1 limits.network.priority 5

Toate aceste alocari de resurse se pot aplica si la nivel de profil, cu aplicare la toate containere ce il folosesc

lxc profile set dual limits.cpu 2

lxc profile set dual limits.memory 1GB

lxc profile set dual root size 15GB

Articolul face parte din seria Virtualizare cu LXD