Nodweddion sylfaenol LXD - systemau cynhwysydd Linux

Nodweddion sylfaenol LXD - systemau cynhwysydd Linux

LXD yw rheolwr cynhwysydd system y genhedlaeth nesaf, felly mae'n dweud ffynhonnell. Mae'n cynnig rhyngwyneb defnyddiwr tebyg i beiriannau rhithwir, ond mae'n defnyddio cynwysyddion Linux yn lle hynny.

craidd LXD yn daemon breintiedig (gwasanaeth sy'n rhedeg gyda hawliau gwraidd) sy'n darparu API REST trwy soced unix lleol, yn ogystal â thrwy'r rhwydwaith os gosodir y cyfluniad priodol. Mae cleientiaid, fel yr offeryn llinell orchymyn a ddarperir gyda LXD, yn gwneud ceisiadau trwy'r API REST hwn. Mae hyn yn golygu, p'un a ydych chi'n cyrchu gwesteiwr lleol neu westeiwr o bell, mae popeth yn gweithio yr un peth.

Yn yr erthygl hon, ni fyddwn yn canolbwyntio'n fanwl ar gysyniadau LXD; ni fyddwn yn ystyried yr holl alluoedd sydd ar gael a amlinellir yn y ddogfennaeth, gan gynnwys gweithredu diweddar yn y fersiynau diweddaraf o LXD o gefnogaeth ar gyfer peiriannau rhithwir QEMU ochr yn ochr â chynwysyddion. Yn lle hynny, byddwn yn dysgu hanfodion rheoli cynwysyddion yn unig - sefydlu pyllau storio, rhwydweithio, rhedeg cynhwysydd, cymhwyso terfynau adnoddau, a sut i ddefnyddio cipluniau fel y gallwch gael dealltwriaeth sylfaenol o LXD a defnyddio cynwysyddion ar Linux.

Am wybodaeth gyflawn, cyfeiriwch at y ffynhonnell swyddogol:

Navigation

Gosod LXD ^

Gosod LXD ar ddosbarthiadau Ubuntu ^

Yn y pecyn dosbarthu Ubuntu 19.10 lxd wedi darlledu ar pecyn snap:

apt search lxd

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

Mae hyn yn golygu y bydd dau becyn yn cael eu gosod ar unwaith, un fel pecyn system a'r llall fel pecyn snap. Gall gosod dau becyn ar system greu rhywfaint o broblem lle gallai'r pecyn system ddod yn amddifad os caiff y pecyn snap ei ddileu gan y rheolwr pecyn snap.

Dod o hyd i becyn lxd yn y storfa snap gallwch ddefnyddio'r gorchymyn canlynol:

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

Trwy redeg y gorchymyn list gallwch wneud yn siŵr bod y pecyn lxd heb ei osod eto:

snap list

Name  Version    Rev   Tracking  Publisher   Notes
core  16-2.43.3  8689  stable    canonical✓  core

Er gwaethaf y ffaith bod LXD yn becyn snap, rhaid ei osod trwy'r pecyn system lxd, a fydd yn creu'r grŵp cyfatebol yn y system, y cyfleustodau angenrheidiol yn /usr/bin ac ati

sudo apt update
sudo apt install lxd

Gadewch i ni sicrhau bod y pecyn wedi'i osod fel pecyn snap:

snap list

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

Gosod LXD ar ddosbarthiadau Arch Linux ^

I osod y pecyn LXD ar y system, mae angen i chi redeg y gorchmynion canlynol, bydd y cyntaf yn diweddaru'r rhestr o becynnau ar y system sydd ar gael yn y storfa, bydd yr ail yn gosod y pecyn yn uniongyrchol:

sudo pacman -Syyu && sudo pacman -S lxd

Ar ôl gosod y pecyn, er mwyn rheoli LXD gan ddefnyddiwr rheolaidd, rhaid ei ychwanegu at y grŵp system lxd:

sudo usermod -a -G lxd user1

Gadewch i ni wneud yn siŵr y defnyddiwr user1 ychwanegu at y grŵp lxd:

id -Gn user1

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

Os yw'r grŵp lxd Nid yw'n weladwy yn y rhestr, yna mae angen i chi actifadu'r sesiwn defnyddiwr eto. I wneud hyn, mae angen i chi allgofnodi a mewngofnodi o dan yr un defnyddiwr.

Ysgogi i mewn systemd llwytho'r gwasanaeth LXD wrth gychwyn y system:

sudo systemctl enable lxd

Rydyn ni'n dechrau'r gwasanaeth:

sudo systemctl start lxd

Gwirio statws y gwasanaeth:

sudo systemctl status lxd

Storio LXD (Storio) ^

Cyn dechrau cychwyn, mae angen inni ddeall sut mae'r storfa yn LXD wedi'i threfnu'n rhesymegol.

Storio (storio) yn cynnwys o un neu fwy Pwll Storio sy'n defnyddio un o'r systemau ffeiliau a gefnogir megis ZFS, BTRFS, LVM neu gyfeiriaduron rheolaidd. Pob Pwll Storio wedi'i rannu'n gyfrolau (Cyfrol Storio) sy'n cynnwys delweddau, cynwysyddion, neu ddata at ddibenion eraill.

  • Delweddau - mae'r rhain yn ddosbarthiadau sydd wedi'u cydosod yn arbennig heb y cnewyllyn Linux ac ar gael o ffynonellau allanol
  • Cynhwyswyr - mae'r rhain yn ddosbarthiadau wedi'u defnyddio o ddelweddau, yn barod i'w defnyddio
  • Cipluniau - mae'r rhain yn gipluniau o gyflwr y cynwysyddion y gallwch ddychwelyd iddynt

Nodweddion sylfaenol LXD - systemau cynhwysydd Linux

I reoli storio yn LXD, defnyddiwch y gorchymyn lxc storage tystysgrif y gallwch ei chael trwy nodi'r allwedd - lxc storage --help

Mae'r gorchymyn canlynol yn dangos rhestr o'r cyfan Pwll Storio mewn storfa LXD:

lxc storage list

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

I weld rhestr o'r cyfan Cyfrol Storio yn y dethol Pwll Storio yn gwasanaethu'r tîm 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       |
+-----------+----------------------------------+-------------+---------+

Hefyd, os o blaid Pwll Storio Wrth greu, dewiswyd system ffeiliau BTRFS, yna mynnwch restr Cyfrol Storio neu isgyfrolau yn y dehongliad BTRFS, gallwch ddefnyddio pecyn cymorth y system ffeiliau hon:

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

Cychwyn LXD ^

Cyn creu a defnyddio cynwysyddion, rhaid i chi gyflawni cychwyniad LXD cyffredinol sy'n creu ac yn ffurfweddu'r rhwydwaith a'r storfa. Gellir gwneud hyn â llaw gan ddefnyddio gorchmynion cleient safonol sydd ar gael yn y rhestr trwy ffonio'r gorchymyn lxc --help neu ddefnyddio'r dewin cychwyn lxd init gan ateb ychydig o gwestiynau.

Dewis system ffeiliau ar gyfer Storage Pool ^

Wrth gychwyn, mae LXD yn gofyn sawl cwestiwn, gan gynnwys pennu'r math o system ffeiliau ar gyfer y rhagosodiad Pwll Storio. Yn ddiofyn, dewisir system ffeiliau BTRFS ar ei gyfer. Bydd yn amhosibl newid i FS arall ar ôl creu. Awgrymir dewis FS tabl cymharu nodwedd:

nodwedd
Cyfeiriadur
Btrfs
LVM
ZFS
CEPH

Storfa delwedd wedi'i optimeiddio
dim
ie
ie
ie
ie

Creu enghraifft wedi'i optimeiddio
dim
ie
ie
ie
ie

Creu ciplun wedi'i optimeiddio
dim
ie
ie
ie
ie

Trosglwyddo delwedd wedi'i optimeiddio
dim
ie
dim
ie
ie

Trosglwyddo enghraifft wedi'i optimeiddio
dim
ie
dim
ie
ie

Copi ar ysgrifennu
dim
ie
ie
ie
ie

Yn seiliedig ar bloc
dim
dim
ie
dim
ie

Clonio ar unwaith
dim
ie
ie
ie
ie

Gyrrwr storio y gellir ei ddefnyddio y tu mewn i gynhwysydd
ie
ie
dim
dim
dim

Adfer o gipluniau hŷn (nid y diweddaraf)
ie
ie
ie
dim
ie

Cwotâu storio
ydw(*)
ie
ie
ie
dim

Cychwyn y rhwydwaith a'r Pwll Storio gan ddefnyddio'r dewin ^

Mae'r gorchymyn nesaf y byddwn yn edrych arno yn awgrymu sefydlu prif gydrannau LXD trwy ateb cwestiynau syml gan ddefnyddio'r dewin cychwyn.

Rhedeg gorchymyn lxc init a rhowch yr atebion i'r cwestiynau ar ôl y colon fel y dangosir yn yr enghraifft isod neu newidiwch nhw yn ôl eich amodau:

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]: 

Creu Pwll Storio ychwanegol ^

Yn y cam blaenorol rydym yn creu Pwll Storio a gafodd yr enw ssdpool ac mae ei ffeil wedi'i lleoli ar fy system yn /var/lib/lxd/disks/ssdpool.img. Mae'r cyfeiriad system ffeiliau hwn yn cyfateb i'r gyriant SSD ffisegol yn fy PC.

Y camau gweithredu canlynol, i ehangu dealltwriaeth o'r rôl a chwaraeir gan Pwll Storio yn yr ystorfa, byddwn yn creu ail un Pwll Storio a fydd yn cael eu lleoli'n gorfforol ar fath gwahanol o ddisg, HDD. Y broblem yw nad yw LXD yn caniatáu ichi greu Pwll Storio allan o gyfeiriad /var/lib/lxd/disks/ ac ni fydd cysylltiadau symbolaidd hyd yn oed yn gweithio, gweler ymateb y datblygwr. Gallwn osgoi'r cyfyngiad hwn wrth gychwyn / fformatio Pwll Storio trwy nodi'r gwerth fel dyfais bloc yn lle'r llwybr i'r ffeil loopback trwy nodi hyn yn yr allwedd source.

Felly, cyn creu Pwll Storio mae angen i chi ddiffinio ffeil loopback neu raniad presennol ar eich system ffeiliau y bydd yn ei ddefnyddio. I wneud hyn, byddwn yn creu ac yn defnyddio ffeil y byddwn yn cyfyngu ei maint i 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

Gadewch i ni gysylltu'r ffeil loopback i ddyfais loopback am ddim:

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

/dev/loop1

Diolch i'r allwedd --show mae gweithredu'r gorchymyn yn dychwelyd i'r sgrin enw'r ddyfais y mae ein ffeil loopback wedi'i chysylltu â hi. Os oes angen, gallwn arddangos rhestr o'r holl ddyfeisiau prysur o'r math hwn i sicrhau bod ein gweithredoedd yn gywir:

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

O'r rhestr gallwch ddarganfod bod gan y ddyfais /dev/loop1 ffeil loopback wedi'i chynnwys /mnt/work/lxd/hddpool.img, ac yn y ddyfais /dev/loop0 ffeil loopback wedi'i chynnwys /var/lib/lxd/disks/ssdpool.img sy'n cyfateb i'r rhagosodiad Pwll Storio.

Mae'r gorchymyn canlynol yn creu un newydd Pwll Storio yn LXD yn seiliedig ar y ffeil loopback yr ydym newydd ei baratoi. Bydd LXD yn fformatio'r ffeil loopback /mnt/work/lxd/hddpool.img yn y ddyfais /dev/loop1 ar gyfer system ffeiliau BTRFS:

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

Gadewch i ni arddangos rhestr o'r cyfan Pwll Storio i sgrinio:

lxc storage list

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

Cynyddu Maint y Pwll Storio ^

Ar ôl y greadigaeth Pwll Storio, os oes angen, gellir ei ehangu. Canys Pwll Storio yn seiliedig ar system ffeiliau BTRFS, rhedeg y gorchmynion canlynol:

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

Mewnosod ffeil loopback yn awtomatig i slot dyfais loopback ^

Mae gennym un broblem fach, wrth ailgychwyn y system gwesteiwr, y ffeil /mnt/work/lxd/hddpool.img yn "hedfan" allan o'r ddyfais /dev/loop1 a bydd y gwasanaeth LXD yn chwalu wrth lwytho oherwydd ni fydd yn ei weld yn y ddyfais hon. I ddatrys y broblem hon mae angen i chi greu gwasanaeth system a fydd yn mewnosod y ffeil hon yn y ddyfais /dev/loop1 pan fydd y system gwesteiwr yn cychwyn.

Gadewch i ni greu uned math o ffeil gwasanaeth в /etc/systemd/system/ ar gyfer system gychwyn 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

Ysgogi'r gwasanaeth:

sudo systemctl enable lxd-hddpool

Created symlink /etc/systemd/system/local-fs.target.wants/lxd-hddpool.service → /etc/systemd/system/lxd-hddpool.service.

Ar ôl ailgychwyn y system westeiwr, rydym yn gwirio statws y gwasanaeth:

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).

O'r allbwn gallwn wirio bod y cyflwr gwasanaeth weithgar, er gwaethaf y ffaith bod gweithredu ein sgript o un gorchymyn wedi'i gwblhau, roedd yr opsiwn yn caniatáu inni wneud hyn RemainAfterExit=true.

Diogelwch. Breintiau Cynhwysydd ^

Gan fod yr holl brosesau cynhwysydd mewn gwirionedd yn rhedeg ar eu pennau eu hunain ar y system letyol gan ddefnyddio ei gnewyllyn, er mwyn amddiffyn ymhellach fynediad prosesau cynhwysydd i'r system westeiwr, mae LXD yn cynnig braint proses, lle:

  • Cynwysyddion Breintiedig - cynwysyddion yw'r rhain lle mae prosesau gyda UID a GID yn cyfateb i'r un perchennog ag ar y system letyol. Er enghraifft, mae gan broses sy'n rhedeg mewn cynhwysydd gyda UID o 0 yr un hawliau mynediad â phroses ar y system westeiwr gyda UID o 0. Mewn geiriau eraill, mae gan y defnyddiwr gwraidd yn y cynhwysydd yr holl hawliau nid yn unig yn y cynhwysydd, ond hefyd ar y system gwesteiwr os gall fynd y tu allan i ofod enw ynysig y cynhwysydd.

  • Cynwysyddion di-freintiedig - mae'r rhain yn gynwysyddion lle mae prosesau'n perthyn i berchennog yr UID a'r GID gyda rhif o 0 i 65535, ond ar gyfer y system westeiwr mae'r perchennog yn cael ei guddio gan ddefnyddio'r darnau SubUID a SubGID ychwanegol, yn y drefn honno. Er enghraifft, bydd defnyddiwr gyda UID=0 mewn cynhwysydd yn cael ei weld ar y system westeiwr fel SubUID + UID. Mae hyn yn amddiffyn y system letyol oherwydd os bydd unrhyw broses yn y cynhwysydd yn gallu dianc o'i ofod enw ynysig, dim ond fel proses gyda UID/GID uchel iawn anhysbys y gall gyfathrebu â'r system letyol.

Yn ddiofyn, mae gan gynwysyddion sydd newydd eu creu statws di-freintiedig ac felly mae'n rhaid i ni ddiffinio SubUID a SubGID.

Gadewch i ni greu dwy ffeil ffurfweddu lle byddwn yn gosod y mwgwd ar gyfer SubUID a SubGID, yn y drefn honno:

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

I gymhwyso'r newidiadau, rhaid ailgychwyn y gwasanaeth LXD:

sudo systemctl restart lxd

Creu switsh rhwydwaith rhithwir ^

Ers i ni gychwyn y rhwydwaith yn flaenorol gan ddefnyddio'r dewin cychwyn lxd init a chreu dyfais rhwydwaith lxdbr0, yna yn yr adran hon byddwn yn dod yn gyfarwydd â rhwydweithio yn LXD a sut i greu switsh rhithwir (pont) gan ddefnyddio'r gorchymyn cleient.

Mae’r diagram canlynol yn dangos sut mae switsh (pont) yn cysylltu’r gwesteiwr a’r cynwysyddion â rhwydwaith:

Nodweddion sylfaenol LXD - systemau cynhwysydd Linux

Gall cynwysyddion gyfathrebu trwy rwydwaith â chynwysyddion eraill neu'r gwesteiwr y mae'r cynwysyddion hyn yn cael eu gwasanaethu arno. I wneud hyn, mae angen i chi gysylltu cardiau rhwydwaith rhithwir y cynwysyddion â switsh rhithwir. Byddwn yn creu switsh yn gyntaf, a bydd rhyngwynebau rhwydwaith y cynhwysydd yn cael eu cysylltu mewn penodau dilynol, ar ôl i'r cynhwysydd ei hun gael ei greu.

Mae'r gorchymyn canlynol yn creu switsh gydag is-rwydwaith 10.0.5.0/24 a chyfeiriad IPv4 10.0.5.1/24, a hefyd yn cynnwys ipv4.nat fel y gall cynwysyddion gael mynediad i'r Rhyngrwyd trwy'r gwesteiwr gan ddefnyddio'r gwasanaeth NAT:

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

Gwirio'r rhestr o ddyfeisiau rhwydwaith sydd ar gael yn LXD:

lxc network list

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

Gallwch hefyd wirio bod dyfais rhwydwaith wedi'i chreu gan ddefnyddio offeryn safonol y dosbarthiad Linux - ip link neu 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

Proffil Ffurfweddu ^

Mae gan bob cynhwysydd yn LXD ei ffurfweddiad ei hun a gall ei ymestyn gyda chyfluniadau datganedig byd-eang o'r enw proffiliau cyfluniad. Mae gan gymhwyso proffiliau cyfluniad i gynhwysydd fodel rhaeadru, mae'r enghraifft ganlynol yn dangos hyn:

Nodweddion sylfaenol LXD - systemau cynhwysydd Linux

Yn yr enghraifft hon, mae tri phroffil wedi'u creu yn y system LXD: default, hddpool и hostfs. Mae'r tri phroffil yn cael eu cymhwyso i gynhwysydd sydd â chyfluniad lleol (ardal lwyd). Proffil default mae ganddo ddyfais root sydd â pharamedr pool yn hafal ssdpool, ond diolch i'r model cais cyfluniad rhaeadru, gallwn gymhwyso proffil i'r cynhwysydd hddpool sydd â pharamedr pool bydd yn diystyru'r un paramedr o'r proffil default a bydd y cynhwysydd yn derbyn cyfluniad y ddyfais root gyda pharamedr pool cyfartal hddpool, a'r proffil hostfs yn syml yn ychwanegu dyfais newydd i'r cynhwysydd.

I weld y rhestr o broffiliau cyfluniad sydd ar gael, defnyddiwch y gorchymyn canlynol:

lxc profile list

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

Gellir cael rhestr gyflawn o'r gorchmynion sydd ar gael ar gyfer gweithio gyda phroffil trwy ychwanegu'r allwedd --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

Wrthi'n golygu eich proffil ^

Proffil cyfluniad diofyn default nid oes ganddo gyfluniad cerdyn rhwydwaith ar gyfer y cynhwysydd ac nid oes gan bob cynhwysydd sydd newydd ei greu rwydwaith, ar eu cyfer mae angen creu dyfeisiau rhwydwaith lleol (ymroddedig) gyda gorchymyn ar wahân, ond gallwn greu dyfais rhwydwaith byd-eang yn y ffurfweddiad proffil a fydd yn cael ei rannu rhwng yr holl gynwysyddion sy'n defnyddio'r proffil hwn. Fel hyn, yn syth ar ôl y gorchymyn i greu cynhwysydd newydd, bydd ganddynt rwydwaith gyda mynediad rhwydwaith. Ar yr un pryd, nid oes unrhyw gyfyngiadau; gallwn bob amser greu dyfais rhwydwaith lleol yn ddiweddarach os oes angen.

Bydd y gorchymyn canlynol yn ychwanegu'r ddyfais at y proffil cyfluniad eth0 типа nic gysylltiedig â'r rhwydwaith lxdbr0:

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

Mae'n bwysig nodi, ers i ni ychwanegu'r ddyfais at y proffil cyfluniad mewn gwirionedd, pe baem yn nodi cyfeiriad IP statig yn y ddyfais, yna bydd yr holl gynwysyddion a fydd yn defnyddio'r proffil hwn yn rhannu'r un cyfeiriad IP. Os oes angen creu cynhwysydd gyda chyfeiriad IP statig wedi'i ddyrannu ar gyfer y cynhwysydd, yna dylech greu cyfluniad dyfais rhwydwaith ar lefel y cynhwysydd (cyfluniad lleol) gyda'r paramedr cyfeiriad IP, ac nid ar lefel y proffil.

Gadewch i ni wirio'r proffil:

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: []

Yn y proffil hwn gallwn weld y bydd dwy ddyfais yn cael eu creu ar gyfer pob cynhwysydd sydd newydd ei greu:

  • eth0 - Math o ddyfais nic wedi'i gysylltu â switsh (pont rhwydwaith) lxdbr0
  • root - Math o ddyfais disk sy'n defnyddio pwll storio ssdpool

Creu proffiliau newydd ^

I'w ddefnyddio a grëwyd yn flaenorol Pwll Storio cynwysyddion, creu proffil cyfluniad ssdroot y byddwn yn ychwanegu dyfais fel disk gyda pwynt mount / (gwraidd) gan ddefnyddio'r a grëwyd yn flaenorol Pwll Storio - ssdpool:

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

Yn yr un modd, rydym yn creu dyfais fel disk, ond yn yr achos hwn gan ddefnyddio Pwll Storio - hddpool:

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

Wrthi'n gwirio proffiliau cyfluniad:

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: []

Ystorfa ddelweddau ^

Crëir cynwysyddion o ddelweddau sy'n ddosbarthiadau wedi'u cydosod yn arbennig nad oes ganddynt gnewyllyn Linux. Felly, cyn rhedeg y cynhwysydd, rhaid ei ddefnyddio o'r ddelwedd hon. Mae ffynhonnell y delweddau yn ystorfa leol lle mae delweddau'n cael eu llwytho i lawr o gadwrfeydd allanol.

Storfeydd delwedd o bell ^

Yn ddiofyn, mae LXD wedi'i ffurfweddu i dderbyn delweddau o dair ffynhonnell anghysbell:

  • ubuntu: (ar gyfer delweddau Ubuntu sefydlog)
  • ubuntu-dyddiol: (ar gyfer delweddau Ubuntu dyddiol)
  • delweddau: (ar gyfer criw o distros eraill)

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    |
+-----------------+------------------------------------------+--------+--------+

Er enghraifft, ystorfa ubuntu: mae ganddo'r lluniau canlynol:

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  |
+----------------------------------------------+--------------+----------+------------+

I ddangos nifer cyfyngedig o golofnau fe wnaethom ddefnyddio'r opsiwn -c gyda pharamedrau dasut, a hefyd yn cyfyngu hyd y rhestr gyda'r gorchymyn head.

Mae hidlo ar gael i ddangos rhestr o ddelweddau. Bydd y gorchymyn canlynol yn rhestru'r holl bensaernïaeth ddosbarthu sydd ar gael 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        |
+------------------------------+--------------------------------------+--------------+

Ystorfa ddelweddau lleol ^

I ddechrau defnyddio'r cynhwysydd, mae angen ichi ychwanegu delwedd o'r ystorfa fyd-eang i'r un leol local:. Nawr bod y storfa leol yn wag, bydd y gorchymyn yn sicrhau hyn lxc image list. Os bydd y dull list peidiwch â nodi ystorfa, yna bydd y gadwrfa leol yn cael ei defnyddio yn ddiofyn - local:

lxc image list local:

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

Rheolir delweddau yn y storfa gan ddefnyddio'r dulliau canlynol:

Tîm
Disgrifiad

delwedd lxc alias
Rheoli arallenwau delwedd

delwedd lxc copïo
Copïo delweddau rhwng gweinyddwyr

delwedd lxc dileu
Dileu delweddau

delwedd lxc golygu
Golygu priodweddau delwedd

delwedd lxc allforio
Allforio a lawrlwytho delweddau

delwedd lxc mewnforio
Mewnforio delweddau i'r storfa ddelweddau

delwedd lxc info
Dangos gwybodaeth ddefnyddiol am ddelweddau

delwedd lxc rhestr
Rhestru lluniau

delwedd lxc adnewyddu
Adnewyddu lluniau

delwedd lxc Dangos
Dangos priodweddau delwedd

Copïwch y ddelwedd i'r gadwrfa leol o'r un fyd-eang images::

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

Image copied successfully!

Gadewch i ni arddangos rhestr o'r holl ddelweddau sydd ar gael ar hyn o bryd yn y gadwrfa leol local::

lxc image -c lfdatsu list local:

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

Ffurfweddiad LXD ^

Yn ogystal â'r modd rhyngweithiol, mae LXD hefyd yn cefnogi modd gosod cyfluniad nad yw'n rhyngweithiol, dyma pan nodir y ffurfweddiad ar ffurf ffeil YAML, fformat arbennig sy'n eich galluogi i osod y cyfluniad cyfan ar unwaith, gan osgoi'r gweithrediad o lawer o orchmynion rhyngweithiol a drafodwyd uchod yn yr erthygl hon, gan gynnwys cyfluniad rhwydwaith, creu proffiliau cyfluniad, ac ati. Ni fyddwn yn ymdrin â'r maes hwn yma, gallwch ei wirio ar eich pen eich hun. mewn dogfennaeth.

Gorchymyn rhyngweithiol nesaf lxc config y byddwn yn edrych arno yn caniatáu ichi osod y cyfluniad. Er enghraifft, er mwyn sicrhau nad yw delweddau wedi'u llwytho i lawr i'r ystorfa leol yn cael eu diweddaru'n awtomatig o'r ystorfeydd byd-eang, gallwn alluogi'r ymddygiad hwn gyda'r gorchymyn canlynol:

lxc config set images.auto_update_cached=false

Creu a rheoli cynhwysydd ^

I greu cynhwysydd defnyddiwch y gorchymyn lxc init y mae gwerthoedd yn cael eu trosglwyddo iddo репозиторий:образ ac yna'r ID dymunol ar gyfer y cynhwysydd. Gellir nodi bod yr ystorfa yn lleol local: felly hefyd unrhyw un byd-eang. Os nad yw'r ystorfa wedi'i nodi, yna yn ddiofyn defnyddir y gadwrfa leol i chwilio am y ddelwedd. Os yw'r ddelwedd wedi'i nodi o'r gadwrfa fyd-eang, yna bydd y ddelwedd yn cael ei lawrlwytho i'r ystorfa leol yn gyntaf ac yna'n cael ei defnyddio i greu'r cynhwysydd.

Gadewch i ni redeg y gorchymyn canlynol i greu ein cynhwysydd cyntaf:

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

Edrychwn ar yr allweddi gorchymyn a ddefnyddiwn yma mewn trefn:

  • alpine3 — Mae alias (alias) wedi'i nodi ar gyfer y ddelwedd a uwchlwythwyd yn flaenorol i'r gadwrfa leol. Os na chafodd yr alias ei greu ar gyfer y ddelwedd hon, yna gallwch chi bob amser gyfeirio at y ddelwedd wrth ei Olion Bysedd sy'n cael ei arddangos yn y tabl.
  • alp — Yn gosod y dynodwr ar gyfer y cynhwysydd
  • --storage — Mae'r allwedd hon yn dangos ym mha Pwll Storio bydd cynhwysydd yn cael ei greu
  • --profile — Mae'r rhaeadru allweddi hyn yn cymhwyso cyfluniad o broffiliau cyfluniad a grëwyd yn flaenorol i'r cynhwysydd

Rydyn ni'n lansio'r cynhwysydd, sy'n dechrau lansio system init y dosbarthiad:

lxc start alp

Gallwch hefyd ddefnyddio'r gorchymyn lxc launch sy'n eich galluogi i gyfuno timau lxc init и lxc start mewn un llawdriniaeth.

Gwirio cyflwr y cynhwysydd:

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

Gwirio cyfluniad y cynhwysydd:

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: ""

Yn yr adran profiles gallwn sicrhau bod y cynhwysydd hwn yn defnyddio dau broffil cyfluniad − default и hddroot. Yn adran devices dim ond un ddyfais y gallwn ei chanfod oherwydd bod y ddyfais rhwydwaith wedi'i chreu ar lefel y proffil default. Er mwyn gweld yr holl ddyfeisiau a ddefnyddir gan y cynhwysydd mae angen i chi ychwanegu allwedd --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: ""

Gosod cyfeiriad IP statig ^

Os byddwn yn ceisio gosod cyfeiriad IP ar gyfer dyfais rhwydwaith eth0 tîm lxc config device set alp a fwriedir ar gyfer y ffurfweddiad cynhwysydd, yna byddwn yn derbyn gwall a fydd yn adrodd nad yw'r ddyfais yn bodoli oherwydd bod y ddyfais eth0 sy'n cael ei ddefnyddio gan y cynhwysydd yn perthyn i'r proffil default:

lxc config device set alp eth0 ipv4.address 10.0.5.5

Error: The device doesn't exist

Wrth gwrs gallwn osod cyfeiriad IP sefydlog ar gyfer eth0 dyfeisiau yn y proffil, ond bydd yr un peth ar gyfer pob cynhwysydd a fydd yn defnyddio'r proffil hwn. Felly, gadewch i ni ychwanegu dyfais sy'n ymroddedig i'r cynhwysydd:

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

Yna mae angen i chi ailgychwyn y cynhwysydd:

lxc restart alp

Os edrychwn ar gyfluniad y cynhwysydd nawr, nid oes angen i ni ddefnyddio'r opsiwn --expanded i weld y ddyfais rhwydwaith eth0, ers i ni ei greu ar lefel y cynhwysydd a'i fod yn rhaeadru dros yr un ddyfais o'r proffil 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: ""

Tynnu cynhwysydd ^

I gael gwared ar gynhwysydd, defnyddiwch y gorchymyn lxc delete, ond cyn tynnu'r cynhwysydd, rhaid ei atal rhag defnyddio'r gorchymyn lxc stop:

lxc stop alp

lxc list

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

Ar ôl i ni wirio bod cyflwr y cynhwysydd wedi dod AROS, gellir ei ddileu o Pwll Storio:

lxc delete alp

Mynediad cynhwysydd ^

I weithredu gorchmynion mewn cynhwysydd yn uniongyrchol, gan osgoi cysylltiadau rhwydwaith, defnyddiwch y gorchymyn lxc exec sy'n gweithredu gorchmynion yn y cynhwysydd heb lansio cragen y system. Os oes angen i chi weithredu gorchymyn mewn cragen gan ddefnyddio patrymau cregyn fel newidynnau, ailgyfeiriadau ffeil (pibell), ac ati, yna mae angen i chi lansio'r gragen yn benodol a phasio'r gorchymyn fel allwedd, er enghraifft:

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

Defnyddiodd y gorchymyn gymeriad dianc arbennig am gymeriad arbennig $ fel bod y newidyn $HOME ni chafodd ei ddehongli ar y peiriant gwesteiwr, ond fe'i dehonglwyd y tu mewn i'r cynhwysydd yn unig.

Mae hefyd yn bosibl cychwyn y modd cragen rhyngweithiol, ac yna gorffen y sesiwn trwy weithredu hotkey CTRL+D:

lxc exec alp -- /bin/sh

Rheoli adnoddau cynhwysydd ^

Yn LXD, gallwch reoli adnoddau cynhwysydd gan ddefnyddio set arbennig o gyfluniad. Gellir dod o hyd i restr gyflawn o baramedrau cyfluniad cynhwysydd mewn dogfennaeth.

Cyfyngiad adnoddau RAM ^

Paramedr limits.memory yn cyfyngu ar faint o RAM sydd ar gael i'r cynhwysydd. Mae'r gwerth yn rhif ac yn un o ôl-ddodiaid sydd ar gael.

Gadewch i ni osod terfyn RAM y cynhwysydd i 256 MB:

lxc config set alp limits.memory 256MB

Hefyd, mae paramedrau eraill ar gyfer cyfyngu ar y cof:

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

Tîm lxc config show yn caniatáu ichi arddangos ffurfweddiad y cynhwysydd cyfan, gan gynnwys y terfyn adnoddau cymhwysol a osodwyd:

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: ""

Terfyn adnoddau CPU ^

Mae sawl ffordd o gyfyngu ar adnoddau CPU. mathau o gyfyngiadau:

  • limit.cpu - yn clymu cynhwysydd i un neu fwy o greiddiau CPU
  • limits.cpu.allowance - yn rheoli naill ai cwotâu amserlennu CFS pan fydd y terfyn amser wedi mynd heibio, neu fecanwaith rhannu adnoddau CPU cyffredinol pan fydd y ganran wedi mynd heibio
  • limits.cpu.priority - blaenoriaeth amserlennydd pan roddir yr un ganran o broseswyr i achosion lluosog sy'n rhannu set o broseswyr

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: ""

Cyfyngiad gofod disg ^

Yn ogystal â chyfyngiadau o'r fath limits.read, limits.write gallwn hefyd gyfyngu ar faint o ofod disg a ddefnyddir gan y cynhwysydd (dim ond yn gweithio gyda ZFS neu BTRFS):

lxc config device set alp root size=2GB

Ar ôl gosod, yn y paramedr devices.root.size Gallwn wirio'r terfyn a osodwyd:

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

I weld y cwotâu disg a ddefnyddir gallwn gael o'r gorchymyn 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

Er gwaethaf y ffaith ein bod wedi gosod terfyn ar gyfer dyfais gwraidd y cynhwysydd i 2GB, mae cyfleustodau system fel df ni fydd yn gweld y cyfyngiad hwn. I wneud hyn, byddwn yn cynnal prawf bach ac yn darganfod sut mae'n gweithio.

Gadewch i ni greu 2 gynhwysydd union yr un fath newydd yn yr un peth Pwll Storio (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         |
+------+---------+------------------+------+-----------+-----------+

Gadewch i ni greu ffeil 1GB yn un o'r cynwysyddion:

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

Gadewch i ni sicrhau bod y ffeil yn cael ei chreu:

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

Os edrychwn yn yr ail gynhwysydd, gwiriwch am fodolaeth ffeil yn yr un lleoliad, yna ni fydd y ffeil hon yno, a ddisgwylir, gan fod cynwysyddion yn cael eu creu yn eu pennau eu hunain. Cyfrol Storio yn yr un Pwll Storio:

lxc exec alp2 -- ls -lh
total 0

Ond gadewch i ni gymharu'r gwerthoedd y mae'n eu cynhyrchu df ar un a'r cynhwysydd arall:

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% /
...

Dyfais /dev/loop1 wedi'i osod fel y rhaniad gwraidd Pwll Storio y mae'r cynwysyddion hyn yn eu defnyddio, felly maent yn rhannu ei gyfaint rhwng dau.

Ystadegau defnydd adnoddau ^

Gallwch weld ystadegau defnydd adnoddau ar gyfer cynhwysydd gan ddefnyddio'r gorchymyn:

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

Gweithio gyda chipluniau ^

Mae gan LXD y gallu i greu cipluniau ac adfer cyflwr y cynhwysydd oddi wrthynt.

I greu ciplun, rhedwch y gorchymyn canlynol:

lxc snapshot alp snapshot1

Y tîm lxc snapshot dim allwedd ar gael list, felly, i weld y rhestr o gipluniau mae angen i chi ddefnyddio'r gorchymyn sy'n dangos gwybodaeth gyffredinol am y cynhwysydd:

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

Gallwch chi adfer cynhwysydd o giplun gan ddefnyddio'r gorchymyn lxc restore nodi'r cynhwysydd y bydd y gwaith adfer yn cael ei wneud ar ei gyfer a'r alias ciplun:

lxc restore alp snapshot1

Defnyddir y gorchymyn canlynol i ddileu ciplun. Sylwch nad yw cystrawen y gorchymyn yn debyg i bob un arall; yma mae angen i chi nodi slaes ymlaen ar ôl enw'r cynhwysydd. Os caiff y slaes ei hepgor, yna dehonglir y gorchymyn i ddileu ciplun fel gorchymyn i ddileu cynhwysydd!

lxc delete alp/snapshot1

Yn yr enghraifft uchod, buom yn edrych ar y cipluniau hyn a elwir yn ddi-wladwriaeth. Mae gan LXD fath arall o gipluniau - stateful, sy'n arbed cyflwr presennol yr holl brosesau yn y cynhwysydd. Mae yna nifer o nodweddion diddorol a defnyddiol sy'n gysylltiedig â chipluniau urddasol.

Beth arall? ^

  • Mae modiwl ar gael i ddatblygwyr Python PyLXD sy'n darparu API i LXD

DIWEDDARIAD 10.04.2020/15/00 XNUMX:XNUMX: Ychwanegwyd llywio

Ffynhonnell: hab.com

Ychwanegu sylw