
Այս հոդվածում կքննարկվի աշխատանքի սկզբունքը , ինչպես նաև կլինի իրացման գործնական մասը Docker-ի հետ սերտ համագործակցությամբ։
Docker-ի հետ կապված ընդհանուր խնդիրների եւ դրանց լուծման տարբերակների մասին արդեն , այսօր ես կարճ կբացատրեմ Kata Containers-ի իրականացման մասին։ Kata Containers-ը անվտանգ կատարողական միջավայր է, որը հիմնված է թեթևացված վիրտուալ մեքենաների վրա։ Նրանց հետ աշխատանքը տեղի է ունենում ինչպես մյուս կոնտեյներների հետ, սակայն լրացուցիչ ապահովված է ավելի վստահ ուսումնական միջավայր, օգտագործելով սարքավորումների վիրտუალացման տեխնոլոգիան։ Նախագիծը սկսել է 2017 թվականին, այդ ժամանակ նույնանուն համայնքը ավարտեց Intel Clear Containers և Hyper.sh RunV-ից լավագույն գաղափարների միացումը, այլևս աշխատելով տարբեր ճարտարապետությունների աջակցման վրա, այդ թվում AMD64, ARM, IBM p- և z-series։ Բացի դրանից, աջակցվում է QEMU, Firecracker հիպերվիզորների հետ աշխատելը, ինչպես նաև կա ինտեգրում containerd-ի հետ։ Կոդը հասանելի է MIT լիցեզիայի տակ է:
Հիմնական հնարավորություններ
- Ատոմական միջուկի հետ աշխատանքը, ապահովելով ցանցի, հիշողության և մուտքային/ելքային գործողությունների իզոլացիա, հնարավորություն է տալիս հարկադրված օգտագործելու սարքավորումների իզոլացիա վիրտուալացման ընդլայնման հիման վրա։
- Արդյունաբերական ստանդարտների աջակցություն, ներառյալ OCI (կոնտեյներների ձևաչափ), Kubernetes CRI。
- Linux-ի սովորական կոնտեյներների կայուն կատարողականություն, իզոլացիայի բարձրացում առանց ծախսերի, որր ազդում են սովորական վիրտուալ մեքենաների կատարողականության վրա։
- Առաջարկում է անհրաժեշտությունը կոնտեյներների սկսել լիարժեք վիրտուալ մեքենաներ, համանման ինտերֆեյսները հեշտացնում են ինտեգրումը և գործարկումը։
Տեղադրում
Կա տեղադրումի տարբերակներ, ես կներկայացնեմ տեղադրման գործընթացը Centos 7 օպերացիոն համակարգից։
Կարեւոր: Kata Containers-ի աշխատանքը աջակցվում է միայն սարքերում, վիրտուալացման փոխանցումը միշտ չէ, որ աշխատում է, իսկ նաև պետք է աջակցություն sse4.1 շրջանակից։
Kata Containers-ի տեղադրումը բավականին պարզ է՝
Տեղադրում ենք ռեպոզիտորիաների հետ աշխատելու գործիքները՝
# yum -y install yum-utilsԱնջատում ենք Selinux-ը (ճիշտ կլինի՝ կարգավորել, բայց պարզության համար ես անջատում եմ)։
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/configԽնդրում ենք միացնել ռեպոզիտորիան և անցնել տեղադրմանը
# source /etc/os-release
# ARCH=$(arch)
# BRANCH="${BRANCH:-stable-1.10}"
# yum-config-manager --add-repo "http://download.opensuse.org/repositories/home:/katacontainers:/releases:/${ARCH}:/${BRANCH}/CentOS_${VERSION_ID}/home:katacontainers:releases:${ARCH}:${BRANCH}.repo"
# yum -y install kata-runtime kata-proxy kata-shimՀավելված
Ես կիրականացնեմ կարգավորումը Docker-ի հետ աշխատելու համար, դրա տեղադրումը սովորական է, ես դա չեմ նկարագրի մանրամասն։
# rpm -qa | grep docker
docker-ce-cli-19.03.6-3.el7.x86_64
docker-ce-19.03.6-3.el7.x86_64
# docker -v
Docker version 19.03.6, build 369ce74a3cՓոխումներ ենք կատարում daemon.json-ում՝
# cat <<EOF > /etc/docker/daemon.json
{
"default-runtime": "kata-runtime",
"runtimes": {
"kata-runtime": {
"path": "/usr/bin/kata-runtime"
}
}
}
EOFՎերադարձնում ենք docker-ը՝
# service docker restartԱվելի շատ տեղեկություններ
Եթե իջեցնենք կոնտեյներ ավտոակտիվացումից առաջ, կարելի է տեսնել, որ uname-ը ցույց կտա հիմնական համակարգում աշխատող kernel-ի տարբերակը՝
# docker run busybox uname -a
Linux 19efd7188d06 3.10.0-1062.12.1.el7.x86_64 #1 SMP Tue Feb 4 23:02:59 UTC 2020 x86_64 GNU/LinuxՎերադարձնելուց հետո kernel-ի տարբերակը հետևյալն է՝
# docker run busybox uname -a
Linux 9dd1f30fe9d4 4.19.86-5.container #1 SMP Sat Feb 22 01:53:14 UTC 2020 x86_64 GNU/LinuxԵթե կան այլ հրահանգներ։
# time docker run busybox mount
kataShared on / type 9p (rw,dirsync,nodev,relatime,mmap,access=client,trans=virtio)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev type tmpfs (rw,nosuid,size=65536k,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666)
sysfs on /sys type sysfs (ro,nosuid,nodev,noexec,relatime)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,relatime,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (ro,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (ro,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (ro,nosuid,nodev,noexec,relatime,blkio)
cgroup on /sys/fs/cgroup/memory type cgroup (ro,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/devices type cgroup (ro,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/perf_event type cgroup (ro,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (ro,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/freezer type cgroup (ro,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/pids type cgroup (ro,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/cpuset type cgroup (ro,nosuid,nodev,noexec,relatime,cpuset)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
shm on /dev/shm type tmpfs (rw,nosuid,nodev,noexec,relatime,size=65536k)
kataShared on /etc/resolv.conf type 9p (rw,dirsync,nodev,relatime,mmap,access=client,trans=virtio)
kataShared on /etc/hostname type 9p (rw,dirsync,nodev,relatime,mmap,access=client,trans=virtio)
kataShared on /etc/hosts type 9p (rw,dirsync,nodev,relatime,mmap,access=client,trans=virtio)
proc on /proc/bus type proc (ro,relatime)
proc on /proc/fs type proc (ro,relatime)
proc on /proc/irq type proc (ro,relatime)
proc on /proc/sys type proc (ro,relatime)
tmpfs on /proc/acpi type tmpfs (ro,relatime)
tmpfs on /proc/timer_list type tmpfs (rw,nosuid,size=65536k,mode=755)
tmpfs on /sys/firmware type tmpfs (ro,relatime)
real 0m2.381s
user 0m0.066s
sys 0m0.039s# time docker run busybox free -m
total used free shared buff/cache available
Mem: 1993 30 1962 0 1 1946
Swap: 0 0 0
real 0m3.297s
user 0m0.086s
sys 0m0.050sԱրագ ծանրաբեռնման թեստավորում
Վիրտուալացման կորուստները գնահատելու համար ես запускаю sysbench-ը, հիմնական օրինակներն են .
Docker+containerd-ի օգտագործմամբ sysbench գործարկում
Գործարկումը պրոցեսորի
sysbench 1.0: բազմաթիրախային համակարգի գնահատման չափանիշ
Թեստը իրականացնում ենք հետևյալ պարամետրերով:
Թիրախների թիվ: 1
Ռավանդեցման թվերի սերնդարարի սկսում ընթացիկ ժամանակից
Հիմնական թվեր սահմանափակումը: 20000
Սկսվում են աշխատակիցների թիրախները...
Թիրախները սկսվել են!
Ընդհանուր վիճակագրություն:
ընդհանուր ժամանակ: 36.7335s
դեպքերի ընդհանուր թիվ: 10000
դեպքերի իրականացման համար ծախսված ընդհանուր ժամանակը: 36.7173s
արձագանքման ժամանակը:
նվազ: 3.43ms
միջին: 3.67ms
առավելագույն: 8.34ms
մոտավորապես 95 %-ի տոկոսազանգված: 3.79ms
Թիրախների արդարություն:
դեպքեր (միջին/ստանդարտ շեղում): 10000.0000/0.00
իրականացման ժամանակ (միջին/ստանդարտ շեղում): 36.7173/0.00Համակարգային հիշողության թեստ
sysbench 1.0: multiplexes համակարգի գնահատման չափանիշ
Թեստը իրականացնում ենք հետևյալ պարամետրերով:
Թիրախների թիվ: 1
Ռավանդեցման թվերի սերնդարարի սկսում ընթացիկ ժամանակից
Սկսվում են աշխատակիցների թիրախները...
Ապրանքներ իրականացվել են: 104857600 (2172673.64 ops/դակը)
102400.00 MiB փոխանցվել է (2121.75 MiB/վրկ)
Ընդհանուր վիճակագրություն:
ընդհանուր ժամանակ: 48.2620s
դեպքերի ընդհանուր թիվ: 104857600
դեպքերի իրականացման համար ծախսված ընդհանուր ժամանակը: 17.4161s
արձագանքման ժամանակը:
նվազ: 0.00ms
միջին: 0.00ms
առավելագույն: 0.17ms
մոտավորապես 95 %-ի տոկոսազանգված: 0.00ms
Թիրախների արդարություն:
դեպքեր (միջին/ստանդարտ շեղում): 104857600.0000/0.00
իրականացման ժամանակ (միջին/ստանդարտ շեղում): 17.4161/0.00sysbench-ի գործարկում Docker+Kata Containers-ով
Գործարկումը պրոցեսորի
sysbench 1.0: բազմաթիրախային համակարգի գնահատման չափանիշ
Թեստը իրականացնում ենք հետևյալ պարամետրերով:
Թիրախների թիվ: 1
Ռավանդեցման թվերի սերնդարարի սկսում ընթացիկ ժամանակից
Հիմնական թվեր սահմանափակումը: 20000
Սկսվում են աշխատակիցների թիրախները...
Թիրախները սկսվել են!
Ընդհանուր վիճակագրություն:
ընդհանուր ժամանակ: 36.5747s
դեպքերի ընդհանուր թիվ: 10000
դեպքերի իրականացման համար ծախսված ընդհանուր ժամանակը: 36.5594s
արձագանքման ժամանակը:
նվազ: 3.43ms
միջին: 3.66ms
առավելագույն: 4.93ms
մոտավորապես 95 %-ի տոկոսազանգված: 3.77ms
Թիրախների արդարություն:
դեպքեր (միջին/ստանդարտ շեղում): 10000.0000/0.00
իրականացման ժամանակ (միջին/ստանդարտ շեղում): 36.5594/0.00Համակարգային հիշողության թեստ
sysbench 1.0: բազմաթիրախային համակարգի գնահատման չափանիշ
Թեստը իրականացնում ենք հետևյալ պարամետրերով:
Թիրախների թիվ: 1
Ռավանդեցման թվերի սերնդարարի սկսում ընթացիկ ժամանակից
Սկսվում են աշխատակիցների թիրախները...
Թիրախները սկսվել են!
Ապրանքներ իրականացվել են: 104857600 (2450366.94 ops/դակը)
102400.00 MiB փոխանցվել է (2392.94 MiB/վրկ)
Ընդհանուր վիճակագրություն:
ընդհանուր ժամանակ: 42.7926s
դեպքերի ընդհանուր թիվ: 104857600
դեպքերի իրականացման համար ծախսված ընդհանուր ժամանակը: 16.1512s
արձագանքման ժամանակը:
նվազ: 0.00ms
միջին: 0.00ms
առավելագույն: 0.43ms
մոտ aproximadamente 95 %-ի տոկոսազանգված: 0.00ms
Թիրախների արդարություն:
դեպքեր (միջին/ստանդարտ շեղում): 104857600.0000/0.00
իրականացման ժամանակ (միջին/ստանդարտ շեղում): 16.1512/0.00Ընդհանուր առմամբ իրավիճակը արդեն պարզ է, բայց առավելագույն արդյունավետ է մի քանի անգամ անցկացնել թեստերը, հեռացնելով արտահայտությունները և միջինացնելով արդյունքները, այնպես որ այժմ չեմ անում ավելի շատ թեստեր.
Արդուկները
Իրատեսական է, որ նման կոնտեյներների գործարկումը պահանջում է մոտավորապես հինգ-տասը անգամ ավելի ժամանակ (containerd-ով նման հրամանների տիպիկ գործարկման ժամանակը — քիչ է երրորդից երկրորդ) — նրանք դեռ բավական արագ են գործում, եթե վերցնենք գործարկման ընդհանուր ժամանակը (վերը ներկայացված օրինակում ժամանակակից մաքսիմում 3 վայրկյանում իրականացվում են հրամաններ): Բայց արագ CPU և RAM թեստի արդյունքները ցույց են տալիս փաստորեն նույն արդյունքները, ինչը չի կարող չուրախացնել, հատկապես հաշվի առնելով, որ մեկուսացումը ապահովում է նման լավ իրականացված մեխանիզմ, ինչպիսին KVM-ն է.
Հայտարարություն
Մանկարային հոդված, սակայն հնարավորություն է տալիս ձեռք մեկնել այլընտրանքային runtime-ին: Շատ կիրառական ոլորտներ չեն ընդգրկվել, օրինակ, կայքում նկարագրված է Kubernetes-ի գործարկման հնարավորությունը Kata Containers-ի վրա: Դրանից բացի, կարելի է անցկացնել մի շարք թեստեր, որոնք ուղղված են բացահայտելու անվտանգության խնդիրները, սահմանափակումների ստեղծմանը և այլ հետաքրքիր բաների:
Հրավեր եմ անում բոլորին, ովքեր ավարտել են կարդալ/րում այստեղ մասնակցել հարցմանը, որը որոշելու է այս թեմայի շուրջ ապագա հրապարակումները:
Պատասխանելու համար պետք է գրանցված օգտվող լինել։ , խնդրում եմ։
Վնասում է շարունակել հրապարակել հոդվածներ Kata Containers-ի մասին:
80,0%Այո, գրիր ևս! 28
20,0%Ոչ, մի արեք… 7
Գիտեք, 35 օգտակից է քվեարկել: 7 օգտակից abstain:
Ընտանիք: habr.com
