Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux

Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux

Lxd ndiye meneja wa chombo cha kizazi kijacho, kwa hivyo inasema chanzo. Inatoa kiolesura cha mtumiaji sawa na mashine pepe, lakini hutumia vyombo vya Linux badala yake.

Msingi wa LXD ni daemon iliyobahatika (huduma inayoendeshwa na haki za mizizi) ambayo hutoa REST API kupitia soketi ya ndani ya unix, na pia kupitia mtandao ikiwa usanidi unaofaa umesakinishwa. Wateja, kama vile zana ya mstari wa amri iliyotolewa na LXD, hufanya maombi kupitia API hii ya REST. Hii inamaanisha kuwa iwe unafikia mpangishi wa karibu au mwenyeji wa mbali, kila kitu hufanya kazi sawa.

Katika nakala hii, hatutakaa kwa undani juu ya dhana za LXD; hatutazingatia uwezo wote unaopatikana ulioainishwa kwenye nyaraka, pamoja na utekelezaji wa hivi karibuni katika matoleo ya hivi karibuni ya LXD ya msaada wa mashine za mtandaoni za QEMU sambamba na vyombo. Badala yake, tutajifunza misingi tu ya usimamizi wa kontena - kusanidi hifadhi, kuweka mtandao, kuendesha kontena, kutumia vikomo vya rasilimali, na jinsi ya kutumia vijipicha ili upate ufahamu wa kimsingi wa LXD na kutumia vyombo kwenye Linux.

Kwa habari kamili, tafadhali rejelea chanzo rasmi:

Навигация

Ufungaji wa LXD ^

Kufunga LXD kwenye usambazaji wa Ubuntu ^

Katika kifurushi cha usambazaji cha Ubuntu 19.10 lxd ina matangazo kifurushi cha snap:

apt search lxd

lxd/eoan 1:0.7 all
  Transitional package - lxd -> snap (lxd)

Hii inamaanisha kuwa vifurushi viwili vitasakinishwa mara moja, kimoja kama kifurushi cha mfumo na kingine kama kifurushi cha haraka. Kusakinisha vifurushi viwili kwenye mfumo kunaweza kusababisha tatizo ambapo kifurushi cha mfumo kinaweza kuwa yatima ikiwa kifurushi cha snap kitaondolewa na msimamizi wa kifurushi cha snap.

Tafuta kifurushi lxd kwenye hazina ya snap unaweza kutumia amri ifuatayo:

snap find lxd

Name             Version        Summary
lxd              3.21           System container manager and API
lxd-demo-server  0+git.6d54658  Online software demo sessions using LXD
nova             ocata          OpenStack Compute Service (nova)
nova-hypervisor  ocata          OpenStack Compute Service - KVM Hypervisor (nova)
distrobuilder    1.0            Image builder for LXC and LXD
fabrica          0.1            Build snaps by simply pointing a web form to...
satellite        0.1.2          Advanced scalable Open source intelligence platform

Kwa kuendesha amri list unaweza kuhakikisha kwamba mfuko lxd bado haijasakinishwa:

snap list

Name  Version    Rev   Tracking  Publisher   Notes
core  16-2.43.3  8689  stable    canonicalβœ“  core

Licha ya ukweli kwamba LXD ni kifurushi cha snap, lazima iwekwe kupitia kifurushi cha mfumo lxd, ambayo itaunda kikundi kinacholingana kwenye mfumo, huduma muhimu ndani /usr/bin nk

sudo apt update
sudo apt install lxd

Wacha tuhakikishe kuwa kifurushi kimewekwa kama kifurushi cha snap:

snap list

Name  Version    Rev    Tracking  Publisher   Notes
core  16-2.43.3  8689   stable    canonicalβœ“  core
lxd   3.21       13474  stable/…  canonicalβœ“  -

Kufunga LXD kwenye usambazaji wa Arch Linux ^

Ili kusanikisha kifurushi cha LXD kwenye mfumo, unahitaji kuendesha amri zifuatazo, ya kwanza itasasisha orodha ya vifurushi kwenye mfumo unaopatikana kwenye ghala, ya pili itasanikisha kifurushi moja kwa moja:

sudo pacman -Syyu && sudo pacman -S lxd

Baada ya kufunga kifurushi, ili kudhibiti LXD na mtumiaji wa kawaida, lazima iongezwe kwenye kikundi cha mfumo lxd:

sudo usermod -a -G lxd user1

Hebu tuhakikishe mtumiaji user1 imeongezwa kwa kikundi lxd:

id -Gn user1

user1 adm dialout cdrom floppy sudo audio dip video plugdev netdev lxd

Ikiwa kikundi lxd haionekani kwenye orodha, basi unahitaji kuamilisha kipindi cha mtumiaji tena. Ili kufanya hivyo, unahitaji kuondoka na kuingia chini ya mtumiaji sawa.

Washa ndani systemd kupakia huduma ya LXD wakati wa kuanzisha mfumo:

sudo systemctl enable lxd

Wacha tuanze huduma:

sudo systemctl start lxd

Kuangalia hali ya huduma:

sudo systemctl status lxd

Hifadhi LXD (Hifadhi) ^

Kabla ya uanzishaji kuanza, tunahitaji kuelewa jinsi hifadhi katika LXD inavyopangwa kimantiki.

Hifadhi (kuhifadhi) lina kutoka kwa moja au zaidi Dimbwi la Kuhifadhi ambayo hutumia mojawapo ya mifumo ya faili inayotumika kama vile ZFS, BTRFS, LVM au saraka za kawaida. Kila Dimbwi la Kuhifadhi imegawanywa katika juzuu (Kiasi cha Uhifadhi) ambayo ina picha, vyombo, au data kwa madhumuni mengine.

  • Picha - hizi ni usambazaji uliokusanywa maalum bila kinu cha Linux na zinapatikana kutoka kwa vyanzo vya nje
  • Vyombo - hizi ni usambazaji uliowekwa kutoka kwa picha, tayari kwa matumizi
  • Vijipicha - hizi ni snapshots za hali ya vyombo ambavyo unaweza kurudi

Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux

Ili kudhibiti uhifadhi katika LXD, tumia amri lxc storage cheti ambacho unaweza kupata kwa kutaja ufunguo - lxc storage --help

Amri ifuatayo inaonyesha orodha ya yote Dimbwi la Kuhifadhi katika hifadhi ya LXD:

lxc storage list

+---------+-------------+--------+--------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |             SOURCE             | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool |             | btrfs  | /dev/loop1                     | 2       |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool |             | btrfs  | /var/lib/lxd/disks/ssdpool.img | 4       |
+---------+-------------+--------+--------------------------------+---------+

Ili kutazama orodha ya yote Kiasi cha Uhifadhi katika waliochaguliwa Dimbwi la Kuhifadhi hutumikia timu lxc storage volume list:

lxc storage volume list hddpool

+-------+----------------------------------+-------------+---------+
| TYPE  |          NAME                    | DESCRIPTION | USED BY |
+-------+----------------------------------+-------------+---------+
| image | ebd565585223487526ddb3607f515... |             | 1       |
+-------+----------------------------------+-------------+---------+

lxc storage volume list ssdpool

+-----------+----------------------------------+-------------+---------+
|   TYPE    |            NAME                  | DESCRIPTION | USED BY |
+-----------+----------------------------------+-------------+---------+
| container | alp3                             |             | 1       |
+-----------+----------------------------------+-------------+---------+
| container | jupyter                          |             | 1       |
+-----------+----------------------------------+-------------+---------+
| image     | ebd565585223487526ddb3607f515... |             | 1       |
+-----------+----------------------------------+-------------+---------+

Pia, ikiwa kwa Dimbwi la Kuhifadhi Wakati wa kuunda, mfumo wa faili wa BTRFS ulichaguliwa, kisha pata orodha Kiasi cha Uhifadhi au ndogo katika tafsiri ya BTRFS, unaweza kutumia zana ya mfumo huu wa faili:

sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/hddpool

ID 257 gen 818 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3

sudo btrfs subvolume list -p /var/lib/lxd/storage-pools/ssdpool

ID 257 gen 1820 parent 5 top level 5 path images/ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
ID 260 gen 1819 parent 5 top level 5 path containers/jupyter
ID 263 gen 1820 parent 5 top level 5 path containers/alp3

Kuanzisha LXD ^

Kabla ya kuunda na kutumia vyombo, lazima ufanye uanzishaji wa jumla wa LXD ambao huunda na kusanidi mtandao na hifadhi. Hii inaweza kufanywa kwa mikono kwa kutumia amri za mteja za kawaida ambazo zinapatikana kwenye orodha kwa kupiga amri lxc --help au kutumia kichawi cha uanzishaji lxd init kujibu maswali machache.

Kuchagua mfumo wa faili kwa Dimbwi la Kuhifadhi ^

Wakati wa uanzishaji, LXD huuliza maswali kadhaa, ikiwa ni pamoja na kuamua aina ya mfumo wa faili kwa chaguo-msingi Dimbwi la Kuhifadhi. Kwa chaguo-msingi, mfumo wa faili wa BTRFS huchaguliwa kwa ajili yake. Haitawezekana kubadili FS nyingine baada ya uumbaji. Ili kuchagua FS inapendekezwa Jedwali la kulinganisha la kipengele:

Feature
Saraka
Btrfs
LVM
ZFS
CEPH

Uhifadhi wa picha ulioboreshwa
hapana
ndiyo
ndiyo
ndiyo
ndiyo

Uundaji wa mfano ulioboreshwa
hapana
ndiyo
ndiyo
ndiyo
ndiyo

Uundaji wa muhtasari ulioboreshwa
hapana
ndiyo
ndiyo
ndiyo
ndiyo

Uhamishaji wa picha ulioboreshwa
hapana
ndiyo
hapana
ndiyo
ndiyo

Uhamisho wa mfano ulioboreshwa
hapana
ndiyo
hapana
ndiyo
ndiyo

Nakili kwa kuandika
hapana
ndiyo
ndiyo
ndiyo
ndiyo

Msingi wa kuzuia
hapana
hapana
ndiyo
hapana
ndiyo

Uundaji wa papo hapo
hapana
ndiyo
ndiyo
ndiyo
ndiyo

Dereva wa hifadhi inayoweza kutumika ndani ya kontena
ndiyo
ndiyo
hapana
hapana
hapana

Rejesha kutoka kwa vijipicha vya zamani (sio hivi karibuni)
ndiyo
ndiyo
ndiyo
hapana
ndiyo

Viwango vya kuhifadhi
ndiyo(*)
ndiyo
ndiyo
ndiyo
hapana

Kuanzisha mtandao na Dimbwi la Hifadhi kwa kutumia mchawi ^

Amri inayofuata tutakayoangalia inapendekeza kusanidi vipengee kuu vya LXD kwa kujibu maswali rahisi kwa kutumia mchawi wa uanzishaji.

Amri ya kukimbia lxc init na ingiza majibu ya maswali baada ya koloni kama inavyoonyeshwa kwenye mfano hapa chini au ubadilishe kulingana na hali yako:

lxd init

Would you like to use LXD clustering? (yes/no) [default=no]: 
Do you want to configure a new storage pool? (yes/no) [default=yes]: 
Name of the new storage pool [default=default]: ssdpool         
Name of the storage backend to use (lvm, btrfs, dir) [default=btrfs]: 
Create a new BTRFS pool? (yes/no) [default=yes]: 
Would you like to use an existing block device? (yes/no) [default=no]: 
Size in GB of the new loop device (1GB minimum) [default=15GB]: 10GB
Would you like to connect to a MAAS server? (yes/no) [default=no]: 
Would you like to create a new local network bridge? (yes/no) [default=yes]: 
What should the new bridge be called? [default=lxdbr0]: 
What IPv4 address should be used? (CIDR subnet notation, β€œauto” or β€œnone”) [default=auto]: 10.0.5.1/24
Would you like LXD to NAT IPv4 traffic on your bridge? [default=yes]: 
What IPv6 address should be used? (CIDR subnet notation, β€œauto” or β€œnone”) [default=auto]: none
Would you like LXD to be available over the network? (yes/no) [default=no]: 
Would you like stale cached images to be updated automatically? (yes/no) [default=yes] no
Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]: 

Kuunda Dimbwi la Hifadhi ya ziada ^

Katika hatua ya awali tuliumba Dimbwi la Kuhifadhi ambayo ilipewa jina ssdpool na faili ambayo iko kwenye mfumo wangu kwa /var/lib/lxd/disks/ssdpool.img. Anwani hii ya mfumo wa faili inalingana na kiendeshi cha SSD kwenye Kompyuta yangu.

Hatua zifuatazo, kupanua uelewa wa jukumu lililochezwa na Dimbwi la Kuhifadhi kwenye hazina, tutaunda ya pili Dimbwi la Kuhifadhi ambayo itakuwa kimwili iko kwenye aina tofauti ya disk, HDD. Shida ni kwamba LXD haikuruhusu kuunda Dimbwi la Kuhifadhi nje ya anwani /var/lib/lxd/disks/ na hata viungo vya mfano havitafanya kazi, tazama majibu ya msanidi programu. Tunaweza kukwepa kizuizi hiki wakati wa uanzishaji/umbizo Dimbwi la Kuhifadhi kwa kubainisha thamani kama kifaa cha kuzuia badala ya njia ya faili ya loopback kwa kubainisha hii katika ufunguo source.

Kwa hivyo, kabla ya kuunda Dimbwi la Kuhifadhi unahitaji kufafanua faili ya loopback au kizigeu kilichopo kwenye mfumo wako wa faili ambayo itatumia. Ili kufanya hivyo, tutaunda na kutumia faili ambayo tutaweka kikomo kwa ukubwa hadi 10GB:

dd if=/dev/zero of=/mnt/work/lxd/hddpool.img bs=1MB count=10000

10000+0 records in
10000+0 records out
10000000000 bytes (10 GB, 9,3 GiB) copied, 38,4414 s, 260 MB/s

Wacha tuunganishe faili ya loopback kwa kifaa cha bure cha kurudi nyuma:

sudo losetup --find --show /mnt/work/lxd/hddpool.img

/dev/loop1

Shukrani kwa ufunguo --show kutekeleza amri inarudi kwenye skrini jina la kifaa ambacho faili yetu ya loopback imeunganishwa. Ikihitajika, tunaweza kuonyesha orodha ya vifaa vyote vyenye shughuli nyingi za aina hii ili kuhakikisha kuwa vitendo vyetu ni sahihi:

losetup -l

NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE                      DIO LOG-SEC
/dev/loop1         0      0         0  0 /mnt/work/lxd/hddpool.img        0     512
/dev/loop0         0      0         1  0 /var/lib/lxd/disks/ssdpool.img   0     512

Kutoka kwenye orodha unaweza kupata kwamba kifaa kina /dev/loop1 loopback faili pamoja /mnt/work/lxd/hddpool.img, na kwenye kifaa /dev/loop0 loopback faili pamoja /var/lib/lxd/disks/ssdpool.img ambayo inalingana na chaguo-msingi Dimbwi la Kuhifadhi.

Amri ifuatayo inaunda mpya Dimbwi la Kuhifadhi katika LXD kulingana na faili ya kitanzi ambayo tumetayarisha hivi punde. LXD itaunda faili ya kitanzi /mnt/work/lxd/hddpool.img katika kifaa /dev/loop1 kwa mfumo wa faili wa BTRFS:

lxc storage create hddpool btrfs size=10GB source=/dev/loop1

Wacha tuonyeshe orodha ya yote Dimbwi la Kuhifadhi kwa skrini:

lxc storage list

+---------+-------------+--------+--------------------------------+---------+
|  NAME   | DESCRIPTION | DRIVER |             SOURCE             | USED BY |
+---------+-------------+--------+--------------------------------+---------+
| hddpool |             | btrfs  | /dev/loop1                     | 0       |
+---------+-------------+--------+--------------------------------+---------+
| ssdpool |             | btrfs  | /var/lib/lxd/disks/ssdpool.img | 0       |
+---------+-------------+--------+--------------------------------+---------+

Kuongeza Saizi ya Dimbwi la Kuhifadhi ^

Baada ya uumbaji Dimbwi la Kuhifadhi, ikiwa ni lazima, inaweza kupanuliwa. Kwa Dimbwi la Kuhifadhi kulingana na mfumo wa faili wa BTRFS, endesha amri zifuatazo:

sudo truncate -s +5G /mnt/work/lxd/hddpool.img
sudo losetup -c /dev/loop1
sudo btrfs filesystem resize max /var/lib/lxd/storage-pools/hddpool

Uingizaji kiotomatiki wa faili ya kitanzi kwenye sehemu ya kifaa cha kurudi nyuma ^

Tuna shida moja ndogo, wakati wa kuanzisha upya mfumo wa mwenyeji, faili /mnt/work/lxd/hddpool.img "itaruka" nje ya kifaa /dev/loop1 na huduma ya LXD itaanguka wakati wa kupakia kwa sababu haitaiona kwenye kifaa hiki. Ili kutatua tatizo hili unahitaji kuunda huduma ya mfumo ambayo itaingiza faili hii kwenye kifaa /dev/loop1 wakati mfumo wa mwenyeji unapoanza.

Hebu tuunde kitengo aina ya faili huduma Π² /etc/systemd/system/ kwa mfumo wa uanzishaji wa SystemD:

cat << EOF | sudo tee -a /etc/systemd/system/lxd-hddpool.service
[Unit]
Description=Losetup LXD Storage Pool (hddpool)
After=local-fs.target

[Service]
Type=oneshot
ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img
RemainAfterExit=true

[Install]
WantedBy=local-fs.target
EOF

Washa huduma:

sudo systemctl enable lxd-hddpool

Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service β†’ /etc/systemd/system/lxd-hddpool.service.

Baada ya kuanzisha upya mfumo wa mwenyeji, tunaangalia hali ya huduma:

systemctl status lxd-hddpool.service 

● lxd-hddpool.service - Losetup LXD Storage Pool (hddpool)
     Loaded: loaded (/etc/systemd/system/lxd-hddpool.service; enabled; vendor preset: disabled)
     Active: active (exited) since Wed 2020-04-08 03:43:53 MSK; 1min 37s ago
    Process: 711 ExecStart=/sbin/losetup /dev/loop1 /mnt/work/lxd/hddpool.img (code=exited, status=0/SUCCESS)
   Main PID: 711 (code=exited, status=0/SUCCESS)

Π°ΠΏΡ€ 08 03:43:52 manjaro systemd[1]: Starting Losetup LXD Storage Pool (hddpool)...
Π°ΠΏΡ€ 08 03:43:53 manjaro systemd[1]: Finished Losetup LXD Storage Pool (hddpool).

Kutoka kwa pato tunaweza kuthibitisha kuwa hali ya huduma iko kazi, licha ya ukweli kwamba utekelezaji wa hati yetu kutoka kwa amri moja ulikamilishwa, chaguo lilituruhusu kufanya hivi. RemainAfterExit=true.

Usalama. Haki za Vyombo ^

Kwa kuwa michakato yote ya kontena huendeshwa kwa kutengwa kwenye mfumo wa mwenyeji kwa kutumia kernel yake, ili kulinda zaidi ufikiaji wa michakato ya kontena kwa mfumo wa mwenyeji, LXD inatoa fursa ya mchakato, ambapo:

  • Vyombo vya upendeleo - haya ni vyombo ambavyo michakato ya UID na GID inalingana na mmiliki sawa na kwenye mfumo wa mwenyeji. Kwa mfano, mchakato unaoendeshwa katika chombo chenye UID ya 0 una haki zote za ufikiaji sawa na mchakato kwenye mfumo wa seva pangishi na UID ya 0. Kwa maneno mengine, mtumiaji wa mizizi kwenye kontena ana haki zote sio tu katika chombo, lakini pia kwenye mfumo wa mwenyeji ikiwa anaweza kwenda nje ya nafasi ya majina ya kontena.

  • Vyombo visivyo na upendeleo - haya ni vyombo ambamo michakato ni ya mmiliki wa UID na GID yenye nambari kutoka 0 hadi 65535, lakini kwa mfumo wa seva pangishi mmiliki amefunikwa kwa kutumia sehemu zilizoongezwa za SubUID na SubGID, mtawalia. Kwa mfano, mtumiaji aliye na UID=0 kwenye kontena ataonekana kwenye mfumo wa mwenyeji kama SubUID + UID. Hii inalinda mfumo wa seva pangishi kwa sababu ikiwa mchakato wowote katika kontena unaweza kuepuka nafasi yake ya jina iliyotengwa, inaweza tu kuwasiliana na mfumo wa seva pangishi kama mchakato wa UID/GID isiyojulikana, ya juu sana.

Kwa chaguomsingi, vyombo vipya vilivyoundwa vina hadhi isiyo ya haki na kwa hivyo ni lazima tufafanue SubUID na SubGID.

Wacha tuunde faili mbili za usanidi ambazo tutaweka kinyago cha SubUID na SubGID, mtawaliwa:

sudo touch /etc{/subuid,/subgid}
sudo usermod --add-subuids 1000000-1065535 root 
sudo usermod --add-subgids 1000000-1065535 root

Ili kutekeleza mabadiliko, huduma ya LXD lazima ianzishwe upya:

sudo systemctl restart lxd

Inaunda swichi ya mtandao pepe ^

Kwa kuwa tulianzisha mtandao hapo awali kwa kutumia mchawi wa uanzishaji lxd init na kuunda kifaa cha mtandao lxdbr0, basi katika sehemu hii tutafahamiana tu na mitandao katika LXD na jinsi ya kuunda swichi ya kawaida (daraja) kwa kutumia amri ya mteja.

Mchoro ufuatao unaonyesha jinsi swichi (daraja) inavyounganisha seva pangishi na vyombo kwenye mtandao:

Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux

Vyombo vinaweza kuwasiliana kupitia mtandao na vyombo vingine au mwenyeji ambamo vyombo hivi vinahudumiwa. Ili kufanya hivyo, unahitaji kuunganisha kadi za mtandao za vyombo na swichi ya kawaida. Tutaunda swichi kwanza, na violesura vya mtandao vya chombo vitaunganishwa katika sura zinazofuata, baada ya chombo chenyewe kuundwa.

Amri ifuatayo inaunda swichi na subnet 10.0.5.0/24 na anwani ya IPv4 10.0.5.1/24, na pia inajumuisha ipv4.nat ili vyombo viweze kupata Mtandao kupitia mwenyeji kwa kutumia huduma ya NAT:

lxc network create lxdbr0 ipv4.address=10.0.5.1/24 ipv4.nat=true ipv6.address=none

Kuangalia orodha ya vifaa vya mtandao vinavyopatikana katika LXD:

lxc network list

+--------+----------+---------+-------------+---------+
|  NAME  |   TYPE   | MANAGED | DESCRIPTION | USED BY |
+--------+----------+---------+-------------+---------+
| eno1   | physical | NO      |             | 0       |
+--------+----------+---------+-------------+---------+
| lxdbr0 | bridge   | YES     |             | 0       |
+--------+----------+---------+-------------+---------+

Unaweza pia kuthibitisha kuwa kifaa cha mtandao kimeundwa kwa kutumia zana ya kawaida ya usambazaji wa Linux - ip link au ip addr:

ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether bc:ee:7b:5a:6b:44 brd ff:ff:ff:ff:ff:ff
    altname enp0s25
    inet6 fe80::9571:11f3:6e0c:c07b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: lxdbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether c2:38:90:df:cb:59 brd ff:ff:ff:ff:ff:ff
    inet 10.0.5.1/24 scope global lxdbr0
       valid_lft forever preferred_lft forever
    inet6 fe80::c038:90ff:fedf:cb59/64 scope link 
       valid_lft forever preferred_lft forever
5: veth3ddab174@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master lxdbr0 state UP group default qlen 1000
    link/ether ca:c3:5c:1d:22:26 brd ff:ff:ff:ff:ff:ff link-netnsid 0

Wasifu wa Usanidi ^

Kila kontena katika LXD ina usanidi wake na inaweza kuipanua kwa usanidi uliotangazwa kimataifa unaoitwa wasifu wa usanidi. Utumiaji wa wasifu wa usanidi kwenye kontena una modeli ya kuteleza, mfano ufuatao unaonyesha hii:

Vipengele vya msingi vya LXD - mifumo ya vyombo vya Linux

Katika mfano huu, profaili tatu zimeundwa katika mfumo wa LXD: default, hddpool ΠΈ hostfs. Profaili zote tatu zinatumika kwenye chombo ambacho kina usanidi wa ndani (eneo la kijivu). Wasifu default ina kifaa root ambayo ina parameta pool ni sawa na ssdpool, lakini kutokana na muundo wa usanidi wa kuteleza, tunaweza kutumia wasifu kwenye chombo hddpool ambayo ina parameta pool itabatilisha parameta sawa kutoka kwa wasifu default na chombo kitapokea usanidi wa kifaa root na parameter pool sawa hddpool, na wasifu hostfs huongeza tu kifaa kipya kwenye kontena.

Ili kuona orodha ya wasifu unaopatikana wa usanidi, tumia amri ifuatayo:

lxc profile list

+---------+---------+
|  NAME   | USED BY |
+---------+---------+
| default | 1       |
+---------+---------+
| hddroot | 0       |
+---------+---------+
| ssdroot | 1       |
+---------+---------+

Orodha kamili ya amri zinazopatikana za kufanya kazi na wasifu zinaweza kupatikana kwa kuongeza ufunguo --help:

lxc profile --help

Description:
  Manage profiles

Usage:
  lxc profile [command]

Available Commands:
  add         Add profiles to instances
  assign      Assign sets of profiles to instances
  copy        Copy profiles
  create      Create profiles
  delete      Delete profiles
  device      Manage instance devices
  edit        Edit profile configurations as YAML
  get         Get values for profile configuration keys
  list        List profiles
  remove      Remove profiles from instances
  rename      Rename profiles
  set         Set profile configuration keys
  show        Show profile configurations
  unset       Unset profile configuration keys

Kuhariri wasifu wako ^

Wasifu wa usanidi chaguo-msingi default haina usanidi wa kadi ya mtandao kwa chombo na vyombo vyote vilivyoundwa hivi karibuni havina mtandao, kwao ni muhimu kuunda vifaa vya mtandao vya ndani (vya kujitolea) na amri tofauti, lakini tunaweza kuunda kifaa cha mtandao wa kimataifa katika usanidi. wasifu ambao utashirikiwa kati ya vyombo vyote kwa kutumia wasifu huu. Kwa njia hii, mara baada ya amri ya kuunda chombo kipya, watakuwa na mtandao na upatikanaji wa mtandao. Wakati huo huo, hakuna vikwazo, tunaweza kuunda kifaa cha mtandao wa ndani baadaye ikiwa ni lazima.

Amri ifuatayo itaongeza kifaa kwenye wasifu wa usanidi eth0 aina nic imeunganishwa kwenye mtandao lxdbr0:

lxc profile device add default eth0 nic network=lxdbr0 name=eth0

Ni muhimu kutambua kwamba kwa kuwa kwa kweli tuliongeza kifaa kwenye wasifu wa usanidi, ikiwa tulibainisha anwani ya IP tuli kwenye kifaa, basi vyombo vyote ambavyo vitatumia wasifu huu vitashiriki anwani sawa ya IP. Ikiwa kuna haja ya kuunda chombo na anwani ya IP ya tuli iliyotengwa kwa chombo, basi unapaswa kuunda usanidi wa kifaa cha mtandao kwenye ngazi ya chombo (usanidi wa ndani) na parameter ya anwani ya IP, na si kwa kiwango cha wasifu.

Wacha tuangalie wasifu:

lxc profile show default

config: {}
description: Default LXD profile
devices:
  eth0:
    name: eth0
    network: lxdbr0
    type: nic
  root:
    path: /
    pool: ssdpool
    type: disk
name: default
used_by: []

Katika wasifu huu tunaweza kuona kwamba kwa vyombo vyote vilivyoundwa hivi karibuni vifaa viwili vitaundwa:

  • eth0 - Aina ya kifaa nic iliyounganishwa na swichi (daraja la mtandao) lxdbr0
  • root - Aina ya kifaa disk ambayo hutumia bwawa la kuhifadhia ssdpool

Kuunda wasifu mpya ^

Ili kutumia iliyoundwa hapo awali Dimbwi la Kuhifadhi vyombo, tengeneza wasifu wa usanidi ssdroot ambayo tutaongeza kifaa kama disk na sehemu ya mlima / (mizizi) kwa kutumia iliyoundwa hapo awali Dimbwi la Kuhifadhi - ssdpool:

lxc profile create ssdroot
lxc profile device add ssdroot root disk path=/ pool=ssdpool

Vile vile, tunaunda kifaa kama disk, lakini katika kesi hii kwa kutumia Dimbwi la Kuhifadhi - hddpool:

lxc profile create hddroot
lxc profile device add hddroot root disk path=/ pool=hddpool

Kuangalia wasifu wa usanidi:

lxc profile show ssdroot

config: {}
description: ""
devices:
  root:
    path: /
    pool: ssdpool
    type: disk
name: ssdroot
used_by: []

lxc profile show hddroot

config: {}
description: ""
devices:
  root:
    path: /
    pool: hddpool
    type: disk
name: hddroot
used_by: []

Hifadhi ya picha ^

Vyombo huundwa kutoka kwa picha ambazo ni usambazaji maalum uliokusanywa ambao hauna kernel ya Linux. Kwa hiyo, kabla ya kuendesha chombo, ni lazima kupelekwa kutoka kwa picha hii. Chanzo cha picha ni hifadhi ya ndani ambamo picha hupakuliwa kutoka hazina za nje.

Hifadhi za picha za mbali ^

Kwa chaguo-msingi, LXD imesanidiwa kupokea picha kutoka kwa vyanzo vitatu vya mbali:

  • ubuntu: (kwa picha za Ubuntu thabiti)
  • ubuntu-kila siku: (kwa picha za kila siku za Ubuntu)
  • Picha: (kwa rundo la distros zingine)

lxc remote list

+-----------------+------------------------------------------+--------+--------+
|      NAME       |                   URL                    | PUBLIC | STATIC |
+-----------------+------------------------------------------+--------+--------+
| images          | https://images.linuxcontainers.org       | YES    | NO     |
+-----------------+------------------------------------------+--------+--------+
| local (default) | unix://                                  | NO     | YES    |
+-----------------+------------------------------------------+--------+--------+
| ubuntu          | https://cloud-images.ubuntu.com/releases | YES    | YES    |
+-----------------+------------------------------------------+--------+--------+
| ubuntu-daily    | https://cloud-images.ubuntu.com/daily    | YES    | YES    |
+-----------------+------------------------------------------+--------+--------+

Kwa mfano, hifadhi ubuntu: ina picha zifuatazo:

lxc image -c dasut list ubuntu: | head -n 11

+----------------------------------------------+--------------+----------+------------+
|                   DESCRIPTION                | ARCHITECTURE |   SIZE   |   TYPE     |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150728)  | x86_64       | 153.72MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150819)  | x86_64       | 152.91MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150906)  | x86_64       | 154.69MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+
| ubuntu 12.04 LTS amd64 (release) (20150930)  | x86_64       | 153.86MB | CONTAINER  |
+----------------------------------------------+--------------+----------+------------+

Ili kuonyesha idadi ndogo ya safu wima tulitumia chaguo -c na vigezo dasut, na pia kupunguza urefu wa orodha na amri head.

Kuchuja kunapatikana ili kuonyesha orodha ya picha. Amri ifuatayo itaorodhesha usanifu wote wa usambazaji unaopatikana AlpineLinux:

lxc image -c ldast list images:alpine/3.11

+------------------------------+--------------------------------------+--------------+
|            ALIAS             |             DESCRIPTION              | ARCHITECTURE |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11 (3 more)         | Alpine 3.11 amd64 (20200220_13:00)   | x86_64       |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/arm64 (1 more)   | Alpine 3.11 arm64 (20200220_13:00)   | aarch64      |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/armhf (1 more)   | Alpine 3.11 armhf (20200220_13:00)   | armv7l       |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/i386 (1 more)    | Alpine 3.11 i386 (20200220_13:01)    | i686         |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/ppc64el (1 more) | Alpine 3.11 ppc64el (20200220_13:00) | ppc64le      |
+------------------------------+--------------------------------------+--------------+
| alpine/3.11/s390x (1 more)   | Alpine 3.11 s390x (20200220_13:00)   | s390x        |
+------------------------------+--------------------------------------+--------------+

Hazina ya picha ya ndani ^

Ili kuanza kutumia kontena, unahitaji kuongeza picha kutoka hazina ya kimataifa hadi ya ndani local:. Sasa hazina ya ndani haina tupu, amri itahakikisha hii lxc image list. Ikiwa mbinu list usibainishe hazina, basi hazina ya ndani itatumika kwa chaguo-msingi - local:

lxc image list local:

+-------+-------------+--------+-------------+--------------+------+------+
| ALIAS | FINGERPRINT | PUBLIC | DESCRIPTION | ARCHITECTURE | TYPE | SIZE |
+-------+-------------+--------+-------------+--------------+------+------+

Picha kwenye hazina inadhibitiwa kwa kutumia njia zifuatazo:

Timu
Description

picha ya lxc pak
Dhibiti lakabu za picha

picha ya lxc nakala
Nakili picha kati ya seva

picha ya lxc kufuta
Futa picha

picha ya lxc hariri
Badilisha sifa za picha

picha ya lxc kuuza nje
Hamisha na kupakua picha

picha ya lxc kuagiza
Ingiza picha kwenye duka la picha

picha ya lxc info
Onyesha habari muhimu kuhusu picha

picha ya lxc orodha
Orodhesha picha

picha ya lxc kunawirisha
Onyesha upya picha

picha ya lxc Onyesha
Onyesha sifa za picha

Nakili picha kwenye hazina ya ndani kutoka kwa ile ya kimataifa images::

lxc image copy images:alpine/3.11/amd64 local: --alias=alpine3

Image copied successfully!

Wacha tuonyeshe orodha ya picha zote zinazopatikana kwa sasa kwenye hazina ya ndani local::

lxc image -c lfdatsu list local:

+---------+--------------+------------------------------------+--------------+
|  ALIAS  | FINGERPRINT  |            DESCRIPTION             | ARCHITECTURE |
+---------+--------------+------------------------------------+--------------+
| alpine3 | 73a3093d4a5c | Alpine 3.11 amd64 (20200220_13:00) | x86_64       |
+---------+--------------+------------------------------------+--------------+

Usanidi wa LXD ^

Kwa kuongezea hali ya maingiliano, LXD pia inasaidia hali ya usanidi isiyoingiliana, hii ndio wakati usanidi umeainishwa katika mfumo wa faili ya YAML, umbizo maalum ambalo hukuruhusu kusakinisha usanidi mzima mara moja, kupita utekelezaji. ya amri nyingi za maingiliano ambazo zilijadiliwa hapo juu katika makala hii, ikiwa ni pamoja na usanidi wa mtandao, uundaji wa wasifu wa usanidi, nk. Hatutashughulikia eneo hili hapa, unaweza kuliangalia peke yako. katika nyaraka.

Amri ya mwingiliano inayofuata lxc config ambayo tutaangalia inakuwezesha kuweka usanidi. Kwa mfano, ili kuhakikisha kuwa picha zilizopakuliwa kwenye hazina ya ndani hazisasishwi kiotomatiki kutoka kwa hazina za kimataifa, tunaweza kuwezesha tabia hii kwa amri ifuatayo:

lxc config set images.auto_update_cached=false

Kuunda na kusimamia chombo ^

Ili kuunda chombo tumia amri lxc init ambayo maadili hupitishwa Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ:ΠΎΠ±Ρ€Π°Π· na kisha kitambulisho kinachohitajika cha chombo. Hifadhi inaweza kubainishwa kama ya ndani local: ndivyo ilivyo yoyote ya kimataifa. Ikiwa hazina haijabainishwa, basi kwa chaguo-msingi hazina ya ndani inatumiwa kutafuta picha. Ikiwa picha imebainishwa kutoka kwa hazina ya kimataifa, basi picha hiyo itapakuliwa kwanza kwenye hazina ya ndani na kisha kutumika kuunda kontena.

Wacha tuendeshe amri ifuatayo kuunda chombo chetu cha kwanza:

lxc init alpine3 alp --storage=hddpool --profile=default --profile=hddroot

Wacha tuangalie funguo za amri tunazotumia hapa kwa mpangilio:

  • alpine3 - Lakabu (lakabu) imebainishwa kwa picha ambayo ilipakiwa hapo awali kwenye hazina ya ndani. Ikiwa lakabu haikuundwa kwa picha hii, basi unaweza kurejelea picha hiyo kila wakati Fingerprint ambayo inaonyeshwa kwenye jedwali.
  • alp - Inaweka kitambulisho cha kontena
  • --storage - Ufunguo huu unaonyesha ni wapi Dimbwi la Kuhifadhi chombo kitaundwa
  • --profile β€” Vifunguo hivi hutiririsha usanidi kutoka kwa wasifu zilizoundwa hapo awali hadi kwenye kontena

Tunazindua chombo, ambacho huanza kuzindua mfumo wa init wa usambazaji:

lxc start alp

Unaweza pia kutumia amri lxc launch ambayo hukuruhusu kuchanganya timu lxc init ΠΈ lxc start katika operesheni moja.

Kuangalia hali ya chombo:

lxc list -c ns46tb
+------+---------+------------------+------+-----------+--------------+
| NAME |  STATE  |       IPV4       | IPV6 |   TYPE    | STORAGE POOL |
+------+---------+------------------+------+-----------+--------------+
| alp  | RUNNING | 10.0.5.46 (eth0) |      | CONTAINER | hddpool      |
+------+---------+------------------+------+-----------+--------------+

Kuangalia usanidi wa kontena:

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200326_13:39)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200326_13:39"
  image.type: squashfs
  volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
  volatile.eth0.host_name: vethb1fe71d8
  volatile.eth0.hwaddr: 00:16:3e:5f:73:3e
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  root:
    path: /
    pool: hddpool
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Katika sehemu profiles tunaweza kuhakikisha kuwa chombo hiki kinatumia wasifu mbili za usanidi - default ΠΈ hddroot. Katika sehemu devices tunaweza tu kugundua kifaa kimoja kwa sababu kifaa cha mtandao kiliundwa katika kiwango cha wasifu default. Ili kuona vifaa vyote vinavyotumiwa na chombo unahitaji kuongeza ufunguo --expanded:

lxc config show alp --expanded

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200326_13:39)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200326_13:39"
  image.type: squashfs
  volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
  volatile.eth0.host_name: vethb1fe71d8
  volatile.eth0.hwaddr: 00:16:3e:5f:73:3e
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  eth0:
    name: eth0
    network: lxdbr0
    type: nic
  root:
    path: /
    pool: hddpool
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Kuweka anwani ya IP tuli ^

Ikiwa tutajaribu kuweka anwani ya IP kwa kifaa cha mtandao eth0 timu lxc config device set alp iliyokusudiwa kwa usanidi wa kontena, basi tutapokea hitilafu ambayo itaripoti kwamba kifaa hakipo kwa sababu kifaa eth0 ambayo hutumiwa na chombo ni ya wasifu default:

lxc config device set alp eth0 ipv4.address 10.0.5.5

Error: The device doesn't exist

Bila shaka tunaweza kuweka anwani ya IP tuli eth0 vifaa katika wasifu, lakini itakuwa sawa kwa vyombo vyote ambavyo vitatumia wasifu huu. Kwa hivyo, wacha tuongeze kifaa kilichowekwa kwenye chombo:

lxc config device add alp eth0 nic name=eth0 nictype=bridged parent=lxdbr0 ipv4.address=10.0.5.5

Kisha unahitaji kuanzisha tena chombo:

lxc restart alp

Ikiwa tutaangalia usanidi wa chombo sasa, hatuhitaji kutumia chaguo --expanded kuona kifaa cha mtandao eth0, kwa kuwa tuliiumba kwa kiwango cha chombo na ilishuka juu ya kifaa sawa kutoka kwa wasifu default:

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200326_13:39)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200326_13:39"
  image.type: squashfs
  volatile.base_image: ebd565585223487526ddb3607f5156e875c15a89e21b61ef004132196da6a0a3
  volatile.eth0.host_name: veth2a1dc59d
  volatile.eth0.hwaddr: 00:16:3e:0e:e2:71
  volatile.idmap.base: "0"
  volatile.idmap.current: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.idmap.next: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.idmap: '[{"Isuid":true,"Isgid":false,"Hostid":1000000,"Nsid":0,"Maprange":65536},{"Isuid":false,"Isgid":true,"Hostid":1000000,"Nsid":0,"Maprange":65536}]'
  volatile.last_state.power: RUNNING
devices:
  eth0:
    ipv4.address: 10.0.5.5
    name: eth0
    nictype: bridged
    parent: lxdbr0
    type: nic
  root:
    path: /
    pool: hddpool
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Kuondoa chombo ^

Ili kuondoa chombo, tumia amri lxc delete, lakini kabla ya kuondoa chombo, lazima ikomeshwe kwa kutumia amri lxc stop:

lxc stop alp

lxc list

+------+---------+-------------------+------+-----------+-----------+
| NAME |  STATE  |       IPV4        | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+-------------------+------+-----------+-----------+
| alp  | STOPPED | 10.0.5.10 (eth0)  |      | CONTAINER | 0         |
+------+---------+-------------------+------+-----------+-----------+

Baada ya sisi kuthibitisha kuwa hali ya kontena imekuwa Imepigwa, inaweza kuondolewa kutoka Dimbwi la Kuhifadhi:

lxc delete alp

Ufikiaji wa chombo ^

Ili kutekeleza amri kwenye chombo moja kwa moja, kupitisha miunganisho ya mtandao, tumia amri lxc exec ambayo hutekeleza amri kwenye chombo bila kuzindua ganda la mfumo. Ikiwa unahitaji kutekeleza amri kwenye ganda kwa kutumia mifumo ya ganda kama vile viwezo, uelekezaji wa faili (bomba), n.k., basi unahitaji kuzindua ganda waziwazi na kupitisha amri kama ufunguo, kwa mfano:

lxc exec alp -- /bin/sh -c "echo $HOME"

Amri ilitumia herufi maalum ya kutoroka kwa mhusika maalum $ ili kutofautiana $HOME haikufasiriwa kwenye mashine ya mwenyeji, lakini ilitafsiriwa tu ndani ya kontena.

Inawezekana pia kuanza hali ya ganda inayoingiliana, na kisha kumaliza kikao kwa kutekeleza hotkey CTRL+D:

lxc exec alp -- /bin/sh

Usimamizi wa rasilimali za kontena ^

Katika LXD, unaweza kudhibiti rasilimali za kontena kwa kutumia seti maalum ya usanidi. Orodha kamili ya vigezo vya usanidi wa kontena inaweza kupatikana katika nyaraka.

Kizuizi cha rasilimali ya RAM ^

Parameter limits.memory hupunguza kiwango cha RAM kinachopatikana kwenye kontena. Thamani ni nambari na moja ya viambishi tamati vinavyopatikana.

Wacha tuweke kikomo cha RAM cha chombo hadi 256 MB:

lxc config set alp limits.memory 256MB

Pia, kuna vigezo vingine vya kuzuia kumbukumbu:

  • limits.memory.enforce
  • limits.memory.hugepages
  • limits.memory.swap
  • limits.memory.swap.priority

Timu lxc config show hukuruhusu kuonyesha usanidi mzima wa kontena, ikijumuisha kikomo cha rasilimali kilichotumika ambacho kiliwekwa:

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200220_13:00)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200220_13:00"
  image.type: squashfs
  limits.memory: 256MB
  volatile.base_image: 73a3093d4a5ce0148fd84b95369b3fbecd19a537ddfd2e2d20caa2eef0e8fd60
  volatile.eth0.host_name: veth75b6df07
  volatile.eth0.hwaddr: 00:16:3e:a1:e7:46
  volatile.idmap.base: "0"
  volatile.idmap.current: '[]'
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""

Kikomo cha rasilimali za CPU ^

Kuna njia kadhaa za kupunguza rasilimali za CPU. aina ya vikwazo:

  • limit.cpu - hufunga kontena kwa cores moja au zaidi za CPU
  • limits.cpu.allowance - inasimamia upendeleo wa kipanga ratiba cha CFS wakati kikomo cha muda kimepita, au utaratibu wa kugawana rasilimali wa CPU kwa jumla wakati asilimia imepita
  • limits.cpu.priority - kipaumbele cha kiratibu wakati matukio mengi ya kushiriki seti ya vichakataji hupewa asilimia sawa ya vichakataji

lxc config set alp limits.cpu.allowance 40%

lxc config show alp

architecture: x86_64
config:
  image.architecture: amd64
  image.description: Alpine 3.11 amd64 (20200220_13:00)
  image.os: Alpine
  image.release: "3.11"
  image.serial: "20200220_13:00"
  image.type: squashfs
  limits.cpu.allowance: 40%
  limits.memory: 256MB
  volatile.base_image: 73a3093d4a5ce0148fd84b95369b3fbecd19a537ddfd2e2d20caa2eef0e8fd60
  volatile.eth0.host_name: veth75b6df07
  volatile.eth0.hwaddr: 00:16:3e:a1:e7:46
  volatile.idmap.base: "0"
  volatile.idmap.current: '[]'
  volatile.idmap.next: '[]'
  volatile.last_state.idmap: '[]'
  volatile.last_state.power: RUNNING
devices: {}
ephemeral: false
profiles:
- default
stateful: false
description: ""

Kizuizi cha nafasi ya diski ^

Mbali na vikwazo vile limits.read, limits.write tunaweza pia kuweka kikomo cha nafasi ya diski inayotumiwa na kontena (inafanya kazi tu na ZFS au BTRFS):

lxc config device set alp root size=2GB

Baada ya ufungaji, katika parameter devices.root.size Tunaweza kuthibitisha kikomo kilichowekwa:

lxc config show alp
...
devices:
  root:
    path: /
    pool: hddpool
    size: 2GB
    type: disk
ephemeral: false
profiles:
- default
- hddroot
stateful: false
description: ""

Kuangalia upendeleo wa diski iliyotumiwa tunaweza kupata kutoka kwa amri lxc info:

lxc info alp
...
Resources:
  Processes: 5
  Disk usage:
    root: 1.05GB
  CPU usage:
    CPU usage (in seconds): 1
  Memory usage:
    Memory (current): 5.46MB
  Network usage:
    eth0:
      Bytes received: 802B
      Bytes sent: 1.59kB
      Packets received: 4
      Packets sent: 14
    lo:
      Bytes received: 0B
      Bytes sent: 0B
      Packets received: 0
      Packets sent: 0

Licha ya ukweli kwamba tumeweka kikomo kwa kifaa cha mizizi ya chombo hadi 2GB, huduma za mfumo kama vile df hataona kizuizi hiki. Ili kufanya hivyo, tutafanya mtihani mdogo na kujua jinsi inavyofanya kazi.

Wacha tuunde kontena 2 mpya zinazofanana Dimbwi la Kuhifadhi (hddpool):

lxc init alpine3 alp1 --storage=hddpool --profile=default --profile=hddroot
lxc init alpine3 alp2 --storage=hddpool --profile=default --profile=hddroot

lxc list
+------+---------+------------------+------+-----------+-----------+
| NAME |  STATE  |       IPV4       | IPV6 |   TYPE    | SNAPSHOTS |
+------+---------+------------------+------+-----------+-----------+
| alp1 | RUNNING | 10.0.5.46 (eth0) |      | CONTAINER | 0         |
+------+---------+------------------+------+-----------+-----------+
| alp2 | RUNNING | 10.0.5.30 (eth0) |      | CONTAINER | 0         |
+------+---------+------------------+------+-----------+-----------+

Wacha tuunde faili ya 1GB kwenye moja ya vyombo:

lxc exec alp1 -- dd if=/dev/urandom of=file.img bs=1M count=1000

Wacha tuhakikishe kuwa faili imeundwa:

lxc exec alp1 -- ls -lh
total 1000M  
-rw-r--r--    1 root     root     1000.0M Mar 27 10:16 file.img

Ikiwa tunatazama kwenye chombo cha pili, angalia uwepo wa faili katika eneo moja, basi faili hii haitakuwapo, ambayo inatarajiwa, kwani vyombo vinaundwa peke yao. Kiasi cha Uhifadhi katika huo huo Dimbwi la Kuhifadhi:

lxc exec alp2 -- ls -lh
total 0

Lakini wacha tulinganishe maadili ambayo hutoa df kwenye chombo kimoja na kingine:

lxc exec alp1 -- df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
/dev/loop1           btrfs           9.3G   1016.4M      7.8G  11% /
...

lxc exec alp2 -- df -hT
Filesystem           Type            Size      Used Available Use% Mounted on
/dev/loop1           btrfs           9.3G   1016.4M      7.8G  11% /
...

Kifaa /dev/loop1 imewekwa kama kizigeu cha mizizi Dimbwi la Kuhifadhi ambayo vyombo hivi hutumia, kwa hivyo hugawana ujazo wake kati ya mbili.

Takwimu za matumizi ya rasilimali ^

Unaweza kuona takwimu za matumizi ya rasilimali kwa kontena kwa kutumia amri:

lxc info alp

Name: alp
Location: none
Remote: unix://
Architecture: x86_64
Created: 2020/04/08 18:05 UTC
Status: Running
Type: container
Profiles: default, hddroot
Pid: 19219
Ips:
  eth0: inet    10.0.5.5        veth2a1dc59d
  eth0: inet6   fe80::216:3eff:fe0e:e271        veth2a1dc59d
  lo:   inet    127.0.0.1
  lo:   inet6   ::1
Resources:
  Processes: 5
  Disk usage:
    root: 495.62kB
  CPU usage:
    CPU usage (in seconds): 1
  Memory usage:
    Memory (current): 4.79MB
  Network usage:
    eth0:
      Bytes received: 730B
      Bytes sent: 1.59kB
      Packets received: 3
      Packets sent: 14
    lo:
      Bytes received: 0B
      Bytes sent: 0B
      Packets received: 0
      Packets sent: 0

Kufanya kazi na snapshots ^

LXD ina uwezo wa kuunda vijipicha na kurejesha hali ya kontena kutoka kwao.

Ili kuunda snapshot, endesha amri ifuatayo:

lxc snapshot alp snapshot1

Timu lxc snapshot hakuna ufunguo unaopatikana list, kwa hivyo, ili kutazama orodha ya vijipicha unahitaji kutumia amri inayoonyesha habari ya jumla kuhusu kontena:

lxc info alp
...
...
Snapshots:
  snapshot1 (taken at 2020/04/08 18:18 UTC) (stateless)

Unaweza kurejesha chombo kutoka kwa picha kwa kutumia amri lxc restore kubainisha chombo ambacho urejesho utafanywa na lakabu ya muhtasari:

lxc restore alp snapshot1

Amri ifuatayo inatumika kufuta picha ndogo. Tafadhali kumbuka kuwa sintaksia ya amri haifanani na zingine zote; hapa unahitaji kubainisha mkwaju wa mbele baada ya jina la kontena. Ikiwa kufyeka kumeachwa, basi amri ya kufuta picha inatafsiriwa kama amri ya kufuta kontena!

lxc delete alp/snapshot1

Katika mfano hapo juu, tuliangalia kile kinachoitwa snapshots zisizo na uraia. LXD ina aina nyingine ya snapshots - stateful, ambayo huokoa hali ya sasa ya michakato yote katika chombo. Kuna idadi ya vipengele vya kuvutia na muhimu vinavyohusishwa na vijipicha vya hali ya juu.

Nini kingine? ^

  • Moduli inapatikana kwa watengenezaji wa Python PyLXD ambayo hutoa API kwa LXD

SASISHA 10.04.2020/15/00 XNUMX:XNUMX: Uelekezaji ulioongezwa

Chanzo: mapenzi.com

Kuongeza maoni