Անցնել պարունակությանը

Incus

Այս հոդվածում

Տեղեկատվություն

Incus-ը բաց կոդով համակարգային կոնտեյներների և վիրտուալ մեքենաների կառավարիչ է: Այն LXD-ի fork-ն է և առաջարկում է պարզ, սակայն հզոր գործիք Linux կոնտեյներները և վիրտուալ մեքենաները միասնական հարթակի վրա կառավարելու համար:

Incus. Հիմնական հնարավորություններ

  • Կոնտեյներների և VM-ների կառավարում. Incus-ը թույլ է տալիս աշխատեցնել Linux համակարգային կոնտեյներներ և ամբողջական QEMU/KVM վիրտուալ մեքենաներ մեկ ինտերֆեյսի միջոցով:
  • Գործընթացների մեկուսացում. Կոնտեյներները աշխատում են մեկուսացված միջավայրում՝ սեփական ֆայլային համակարգերով, ցանցային ինտերֆեյսներով և գործընթացներով:
  • Ցանցային հնարավորություններ. Ներկառուցված աջակցություն տարբեր տեսակի ցանցերի համար՝ բրիջեր, NAT, VLAN-ներ, կոնտեյներների համար overlay ցանցեր:
  • Պահեստավորման կառավարում. Գրաֆիկական պահեստավորման ճկուն համակարգ, որը աջակցում է տարբեր backend-ների՝ dir, btrfs, ZFS, LVM:
  • Սնապշոտներ և միգրացիա. Կոնտեյների վիճակի սնապշոտների ստեղծում, հյուրընկալողների միջև live միգրացիա՝ ծառայությունները կանգնեցնելու առանց:
  • Կոնֆիգուրացիոն պրոֆիլներ. Կրկնակի օգտագործման պրոֆիլներ կոնտեյներների արագ տեղակայման համար նախապես սահմանված պարամետրերով:
  • Ռեսուրսների սահմանափակում. CPU, հիշողության, սկավառակի I/O և ցանցային թողունակության ճշգրիտ վերահսկողություն յուրաքանչյուր կոնտեյների համար:
  • REST API. Լիարժեք HTTP API ավտոմատացման և արտաքին համակարգերի հետ ինտեգրման համար:
  • Վեբ ինտերֆեյս. Ներկառուցված վեբ կառավարման վահանակ ինֆրակառուցվածքի վիզուալ վերահսկողության համար:
  • Պատկերների գրադարան. Տարբեր Linux դիստրոբյուտիվների պատրաստի պատկերների ընդարձակ հավաքածուի հասանելիություն:
  • Կլաստերավորում. Տարբեր հյուրընկալողները միավորելու հնարավորություն մեկ կլաստերի մեջ՝ բաշխված կառավարման համար:

Տեղակայման հնարավորություններ

ID Ծրագրային ապահովման անվանում Համատեղելի ՕՀ VM BM VGPU GPU Նվազագույն CPU (միջուկներ) Նվազագույն RAM (ԳԲ) Նվազագույն HDD/SSD (ԳԲ) Սեփական դոմեն Ակտիվ
234 Linux Containers Incus Debian 13 + + + + 2 2 50 Ոչ ՊԱՏՎԻՐԵԼ

Incus-ի հիմնական ուղիներ և ֆայլեր.

  • Հիմնական կոնֆիգուրացիոն ֆայլ. /etc/default/incus
  • Տվյալների թղթապանակ. /var/lib/incus
  • Պահեստավորման pool-ներ. /var/lib/incus/storage-pools/
  • Կոնտեյներներ. /var/lib/incus/containers/
  • Պատկերներ. /var/lib/incus/images/
  • Լոգ ֆայլ. /var/log/incus/incusd.log
  • Համակարգային ծառայություններ. /usr/lib/systemd/system/incus*.service
  • Sysctl կոնֆիգուրացիա. /etc/sysctl.d/50-incus.conf
  • Օգտատերի կոնֆիգուրացիա. /root/.config/incus/

Նշում

Եթե այլ կերպ նշված չէ, մենք ըստ լռելյայնի տեղադրում ենք ծրագրի վերջին թողարկման տարբերակը՝ զարգացնողի կայքից կամ օպերացիոն համակարգի պահոցներից:

Սկսել Incus-ի տեղակայումից հետո

Վճարումից հետո գրանցման ժամանակ նշված հասցեին կուղարկվի էլ. փոստի ծանուցում, որը հայտնում է, որ սերվերը պատրաստ է աշխատելու: Այն կներառի VPS IP հասցեն և մուտքի հավատարմագրերը: Մեր ընկերության հաճախորդները սարքավորումները կառավարում են Սերվերի կառավարման վահանակի և API միջոցով — Invapi:

Հաստատման տվյալները կարելի է գտնել կամ սերվերի կառավարման վահանակի Configuration >> Tags թերթիկում, կամ ուղարկված էլ. փոստում.

  • Incus վեբ ինտերֆեյսին մուտքի հղում. webpanel թեգում (8443 պորտ, HTTPS)

Կարևոր

Վեբ ինտերֆեյսին մուտք գործելու համար անհրաժեշտ է օգտագործել HTTPS և ընդունել ինքնագրված սերտիֆիկատը ձեր բրաուզերում:

Երբ առաջին անգամ մուտք եք գործում Incus վեբ ինտերֆեյս, բրաուզերը զգուշացնում է անվտանգ կապի մասին՝ ինքնագրված սերտիֆիկատի պատճառով: Շարունակելու համար անհրաժեշտ է ընդունել սերտիֆիկատը.

Սերտիֆիկատը ընդունելուց հետո բացվում է մուտքի էջը: Սեղմեք Login with TLS կոճակը՝ հաստատման գործընթացը սկսելու համար.

Համակարգը կուղղորդի ձեզ գոյություն ունեցող սերտիֆիկատ ավելացնելու էջ.

Ընտրեք Trust token թերթիկը և հետևեք հրահանգներին.

  1. Սերվերի տերմինալում կատարեք հրամանը՝ թոքեն ստեղծելու համար.

    incus config trust add myclient
    

  2. Համակարգը կստեղծի թոքեն, որը անհրաժեշտ է պատճենել.

  3. Տեղադրեք ստացված թոքենը համապատասխան տեքստային դաշտում հաստատման էջում և սեղմեք Import:

Հաջող հաստատումից հետո կբացվի հիմնական վեբ ինտերֆեյսի էջը՝ օրինակների ցանկով:

Նոր կոնտեյների ստեղծում վեբ ինտերֆեյսի միջոցով

Նոր կոնտեյներ ստեղծելու համար սեղմեք Create instance կոճակը ինտերֆեյսի վերին աջ անկյունում.

Բացվում է օրինակի ստեղծման ձևը՝ մի քանի կոնֆիգուրացիոն բաժիններով: Հիմնական պատկեր ընտրելու համար սեղմեք Browse images կոճակը: Բացվում է պատկերի ընտրության պատուհանը՝ դիստրոբյուտիվի, թողարկման, տարբերակի, ճարտարապետության և տեսակի ըստ ֆիլտրերով.

Հասանելի են հետևյալ կոնֆիգուրացիոն բաժինները.

  • Main configuration — կոնտեյների հիմնական պարամետրեր. անուն, նկարագրություն, օրինակի տեսակ (կոնտեյներ կամ վիրտուալ մեքենա), հիմնական պատկեր և վերագրված պրոֆիլներ;
  • Devices — կոնտեյների սարքերի կառավարում.
  • Disk — սկավառակի սարքի և մոնտաժման կետի կոնֆիգուրացիա;
  • Network — ցանցային ինտերֆեյսի կոնֆիգուրացիա;
  • GPU — գրաֆիկական արագացուցիչների միացում;
  • Proxy — պորտի փոխանցման կոնֆիգուրացիա հյուրընկալողի և կոնտեյների միջև;
  • Other — լրացուցիչ սարքերի տեսակներ;
  • Resource limits — ռեսուրսների սահմանափակում. պրոցեսոր (CPU), RAM, սկավառակի I/O գործողություններ;
  • Security policies — անվտանգության քաղաքականություններ. մեկուսացման կոնֆիգուրացիա, լիազորություններ և անվտանգության պրոֆիլներ (AppArmor, SELinux);
  • Snapshots — կոնտեյների վիճակի սնապշոտների կառավարում պահպանման և վերականգնման համար;
  • Migration — կոնտեյների միգրացիայի պարամետրեր հյուրընկալողների միջև;
  • Boot — boot կարգավորումներ. boot սարքերի հերթականություն, ավտոմատ միացում համակարգի միացման ժամանակ;
  • Cloud init — կոնտեյների ավտոմատ ինիցիալիզացիայի կոնֆիգուրացիա cloud-init-ի միջոցով (օգտատերեր, ցանց, փաթեթներ, սկրիպտներ):

Ընտրեք ցանկալի պատկերը՝ սեղմելով դրա կողքին գտնվող Select կոճակը.

Պատկերը ընտրելուց հետո լրացրեք հիմնական պարամետրերը.

  • Instance name — կոնտեյների անուն;
  • Description — նկարագրություն (ըստ ցանկության);
  • Instance type — օրինակի տեսակ (Container կամ Virtual Machine);
  • Profiles — կոնֆիգուրացիոն պրոֆիլներ:

Կոնտեյները անմիջապես սկսելու համար ստեղծումից հետո սեղմեք Create and start: Ստեղծելու համար՝ առանց միացնելու, օգտագործեք Create կոճակը:

Կոնտեյների կարգավիճակի մոնիտորինգ

Կոնտեյների տեղակայման ընթացքում ցուցադրվում է պատկերի ներբեռնման ընթացքը: "Setting up" կարգավիճակը՝ ներբեռնման ընթացքի ցուցմունքով, ցույց է տալիս օրինակի ստեղծման ընթացիկ ընթացքը: Ինստալյացիան ավարտելուց հետո կարգավիճակը կփոխվի "Running"-ի՝ կանաչ ցուցիչով.

Ծառայության կառավարում

Կարգավիճակի ստուգում.

systemctl status incus

Ծառայության վերագործարկում.

systemctl restart incus

Ծառայության կանգնեցում.

systemctl stop incus

Ծառայության միացում.

systemctl start incus

Լոգերի դիտում.

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

Սկզբնական ինֆրակառուցվածքի կարգավորում

Սերվերի տեղակայումից հետո խորհուրդ է տրվում կատարել Incus ինֆրակառուցվածքի սկզբնական կարգավորում:

Պահեստավորման pool-ի ստեղծում

Պահեստավորման pool-ը սահմանում է, որտեղ կպահպանվեն կոնտեյների տվյալները.

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

Ստեղծված պահեստավորման pool-երի ստուգում.

incus storage list

Pool-ի մասին մանրամասն տեղեկատվություն դիտելու համար.

incus storage show default

Ցանցի կոնֆիգուրացիա

Կոնտեյներների համար NAT բրիջի ստեղծում՝ ավտոմատ IPv4 հասցեավորմամբ.

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

Ցանցային կարգավորումների ստուգում.

incus network list

Ցանցային կոնֆիգուրացիայի դիտում.

incus network show incusbr0

Լռելյայն պրոֆիլի կոնֆիգուրացիա

default պրոֆիլը սահմանում է նոր կոնտեյներների հիմնական կոնֆիգուրացիան: Պրոֆիլին root սկավառակ ավելացնել.

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

Պրոֆիլին ցանցային ինտերֆեյս ավելացնել.

incus profile device add default eth0 nic network=incusbr0

Պրոֆիլի կոնֆիգուրացիայի ստուգում.

incus profile show default

Կոնտեյներների ստեղծում և կառավարում

Կոնտեյների ստեղծում

Debian 12 կոնտեյների ստեղծման օրինակ՝ ռեսուրսների սահմանափակումներով.

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

Հրամանի պարամետրեր.

  • images:debian/12 - պատկեր հանրային պահոցից
  • deb12 - կոնտեյների անուն
  • --profile default - լռելյայն պրոֆիլի օգտագործում
  • -c limits.cpu=2 - սահմանափակում 2 CPU կորիսների
  • -c limits.memory=2GiB - հիշողության սահմանափակում 2 GB

Կոնտեյներների դիտում

Բոլոր օրինակների ցանկ.

incus list

Արդյունքը կներառի տեղեկատվություն յուրաքանչյուր կոնտեյների կարգավիճակի, IP հասցեների և տեսակի մասին:

Կոնտեյների վիճակի կառավարում

Կոնտեյների միացում.

incus start <name>

Կոնտեյների կանգնեցում.

incus stop <name>

Կոնտեյների վերագործարկում.

incus restart <name>

Կոնտեյների ջնջում (պահանջում է կանգնեցում).

incus delete <name>

Աշխատող կոնտեյների ստիպողական ջնջում.

incus delete <name> --force

Կոնտեյնի մուտք

Միացում bash-ի միջոցով.

incus exec deb12 -- bash

Միացում TTY կոնսոլին.

incus console deb12

Կոնսոլից դուրս գալու համար օգտագործեք Ctrl+a q ստեղնակցությունը:

Պորտի փոխանցում

Կոնտեյների ներսում գտնվող ծառայություններին արտաքին ցանցից մուտք գործելու համար օգտագործվում է պորտի փոխանցումը՝ պրոքսի սարքի միջոցով.

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

Այս հրամանը փոխանցում է հյուրընկալողի 8080 պորտը կոնտեյների 80 պորտին:

Օրինակ՝ մի քանի պորտերի համար.

HTTP.

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

HTTPS.

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

SSH.

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

Կոնտեյների կոնֆիգուրացիայի կառավարում

Կոնֆիգուրացիայի դիտում

Կոնտեյների լիակատար ընդլայնված կոնֆիգուրացիայի դիտում.

incus config show <name> --expanded

Հիմնական կոնֆիգուրացիայի դիտում՝ առանց պրոֆիլների.

incus config show <name>

Պարամետրերի փոփոխություն

Կոնֆիգուրացիոն պարամետրերի սահմանում.

CPU սահմանափակում.

incus config set <name> limits.cpu=4

Հիշողության սահմանափակում.

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

Սկավառակի I/O սահմանափակում.

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

Կոնտեյների ավտոմատ միացում.

incus config set <name> boot.autostart=true

Սարքերի ավելացում

Սարքեր ավելացնելու ընդհանուր սինտաքսիս.

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

Օրինակներ.

Լրացուցիչ սկավառակի ավելացում.

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

Լրացուցիչ ցանցային ինտերֆեյսի ավելացում.

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

Հյուրընկալողի թղթապանակի մոնտաժում կոնտեյնում.

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

Սարքի հեռացում.

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

Աշխատանք սնապշոտների և միգրացիայի հետ

Սնապշոտների ստեղծում

Սնապշոտները թույլ են տալիս պահպանել կոնտեյների վիճակը՝ հետագա վերականգնման համար.

incus snapshot <name> <snapshot-name>

Օրինակ.

incus snapshot deb12 before-update

Կոնտեյների սնապշոտների ցանկ.

incus info <name>

Վերականգնում սնապշոտից

incus restore <name> <snapshot-name>

Օրինակ.

incus restore deb12 before-update

Սնապշոտի ջնջում.

incus delete <name>/<snapshot-name>

Անվանափոխում և պատճենում

Կոնտեյների անվանափոխում.

incus move <name> <newname>

Կոնտեյների պատճենում նույն հյուրընկալողի վրա.

incus copy <name> <newname>

Կոնտեյների պատճենում այլ Incus հյուրընկալողի վրա.

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

Հեռավոր հյուրընկալողների հետ աշխատելու համար նախ անհրաժեշտ է ավելացնել հեռավոր.

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

Պատկերների կառավարում

Պատկերների դիտում

Տեղական պատկերների ցանկ.

incus image list

Հեռավոր պահոցի պատկերների ցանկ.

incus image list images:

Որոշակի դիստրոբյուտիվի որոնում.

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

Պատկերների պատճենում

Պատկերի պատճենում հանրային պահոցից՝ ավտոմատ թարմացմամբ.

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

Պատկերի պատճենում՝ անվանափոխով.

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

Պատկերի ստեղծում կոնտեյներից

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

Պատկերների ջնջում

incus image delete <image-fingerprint>

կամ անվանափոխով.

incus image delete <alias>

Ցանցային փոխազդեցություն

Ցանցի կառավարում

Ցանցերի ցանկ.

incus network list

Ցանցային կոնֆիգուրացիայի դիտում.

incus network show <network-name>

Նոր ցանցի ստեղծում.

# Բրիջ ցանցի ստեղծում
incus network create mybr0 \
  ipv4.address=10.10.10.1/24 \
  ipv4.nat=true \
  ipv6.address=none


# macvlan ցանցի ստեղծում
incus network create mymacvlan \
  type=macvlan \
  parent=eth0

Ցանցի խմբագրում.

incus network edit <network-name>

Ցանցի ջնջում.

incus network delete <network-name>

Ցանցային փոխանցման կանոններ

Փոխանցման կանոնի ստեղծում պորտի փոխանցման համար.

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

Պահեստավորման կառավարում

Պահեստավորման pool-երի կառավարում

Pool-երի ցանկ.

incus storage list

Pool-ի տեղեկատվության դիտում.

incus storage show <pool-name>

Պահեստավորման pool-ի ստեղծում.

Dir-ի հիման վրա pool.

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

Btrfs pool.

incus storage create mybtrfs btrfs source=/dev/sdb

ZFS pool.

incus storage create myzfs zfs source=/dev/sdc

Pool-ի խմբագրում.

incus storage edit <pool-name>

Pool-ի ջնջում.

incus storage delete <pool-name>

Volume-ների կառավարում

Սեփական volume-ի ստեղծում.

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

Pool-ի volume-ների ցանկ.

incus storage volume list <pool-name>

Volume-ի միացում կոնտեյնին.

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

Volume-ի պատճենում.

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

Volume-ի ջնջում.

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

NAT և ռուտինգի կոնֆիգուրացիա

Որոշ դեպքերում կարող է անհրաժեշտ լինել NAT և ռուտինգի կանոնների ձեռքով կոնֆիգուրացիա՝ կոնտեյներին արտաքին ցանցին մուտք ապահովելու համար:

Անցում nftables-ի

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

IP փոխանցման ակտիվացում

sysctl -w net.ipv4.ip_forward=1

Մշտական կիրառման համար ավելացրեք /etc/sysctl.conf-ում.

net.ipv4.ip_forward=1

Incus-ի վերագործարկում փոփոխություններից հետո.

systemctl restart incus

NAT աղյուսակի կոնֆիգուրացիա

NAT աղյուսակի և POSTROUTING շղթայի ստեղծում.

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

Masquerade կանոնի ավելացում կոնտեյների ենթացանցի համար.

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

Նշում

Փոխարինեք ens1-ը ձեր արտաքին ցանցային ինտերֆեյսի անվանումով և 10.1.4.0/24-ը՝ ձեր Incus բրիջի ենթացանցով:

FORWARD շղթայի կոնֆիգուրացիա

Ֆիլտրի աղյուսակի և FORWARD շղթայի ստեղծում.

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

Կանոնների ավելացում՝ թույլատրելու համար.

Թույլատրել երթևեկությունը կոնտեյներներից դուրս.

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

Թույլատրել հաստատված/կապված երթևեկությունը հետ.

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

nftables կանոնների ստուգում

Բոլոր կանոնների դիտում.

nft list ruleset

Կանոնների պահպանում (Debian/Ubuntu-ի համար).

Փաթեթի տեղադրում կանոնները պահպանելու համար.

apt-get install nftables

Ընթացիկ կանոնների պահպանում.

nft list ruleset > /etc/nftables.conf

Ավտոմատ բեռնման ակտիվացում.

systemctl enable nftables

Նշում

Incus-ի բոլոր հնարավորությունների մասին մանրամասն տեղեկատվությունը պարունակվում է պաշտոնական զարգացնող փաստաթղթերում:

Incus-ով սերվերի պատվեր API-ի միջոցով

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