
Në këtë artikull do të shqyrtojmë parimin e funksionimit , si dhe do të ketë një pjesë praktike me lidhjen e tyre me Docker.
Rreth problemeve të përbashkëta me Docker dhe mundësive për zgjidhjen e tyre tashmë , sot do të përshkruaj shkurtimisht implementimin nga Kata Containers. Kata Containers është një ambient ekzekutimi (runtime) i sigurt për kontenierët, i bazuar në makina virtuale të lehta. Puna me to ndodh ashtu si me kontenierët e tjerë, por ka një izolim më të besueshëm duke përdorur teknologjinë e virtualizimit të harduerit. Projekti filloi në vitin 2017, dhe komuniteti i njëjtë përfundoi bashkimin e ideve më të mira nga Intel Clear Containers dhe Hyper.sh RunV, pas së cilës puna vazhdoi për mbështetje të arkitekturave të ndryshme, duke përfshirë AMD64, ARM, IBM p- dhe z-series. Gjithashtu mbështetet puna brenda hiper të vizorëve QEMU, Firecracker, si dhe ka integrim me containerd. Kodi është në dispozicion në në përputhje me licencën MIT.
Përgjegjësi kryesore
- Puna me një bërthamë të veçantë, kështu që sigurohet izolimi i rrjetit, memories dhe operacioneve të hyrjes-daljes, ka mundësi për të detyruar përdorimin e izolimit harduerik duke u bazuar në zgjerimet e virtualizimit
- Mbështetje për standardet industriale, duke përfshirë OCI (formati i konteinerëve), Kubernetes CRI
- Performancë e qëndrueshme e konteinerëve të zakonshëm Linux, rritje e izolimit pa kostot e performancës që ndikon tek makinat virtuale të zakonshme
- Eliminimi i nevojës për të ekzekutuar konteinerët brenda makinave virtuale të plota, ndërfaqet standarde e lehtësojnë integrimin dhe nisjen
Instalimi
Ka opsionet e instalimit, do të shqyrtoj instalimin nga repository-t, të bazuara në sistemin operativ CentOS 7.
E rëndësishme: mbështetje e Kata Containers funksionon vetëm në harduer, kalimi i virtualizimit nuk punon gjithmonë, gjithashtu duhet mbështetje sse4.1 nga procesori.
Instalimi i Kata Containers është mjaft i thjeshtë:
Instalojmë utilitat për të punuar me repository-t:
# yum -y install yum-utilsĂaktivizojmĂ« Selinux (mĂ« saktĂ« - ta konfigurojmĂ«, por pĂ«r thjeshtĂ«si unĂ« e çaktivizoj):
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/configLidhim repository-n dhe realizojmë instalimin
# 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-shimKonfigurimi
Unë do të bëj konfigurimin për të punuar me docker, instalimi i tij është standard, nuk do ta përshkruaj më në detaje:
# 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 369ce74a3cBëjmë ndryshime në daemon.json:
# cat <<EOF > /etc/docker/daemon.json
{
"default-runtime": "kata-runtime",
"runtimes": {
"kata-runtime": {
"path": "/usr/bin/kata-runtime"
}
}
}
EOFRikthejmë docker-in:
# service docker restartKontrolli i funksionalitetit
NĂ«se aktivizoni kontejnerin para riparimit tĂ« docker-it â mund tĂ« shihni se uname jep versionin e bĂ«rthamĂ«s qĂ« Ă«shtĂ« aktivizuar nĂ« sistemin kryesor:
# 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/LinuxPas riparimit â versioni i bĂ«rthamĂ«s duket kĂ«shtu:
# 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/LinuxKomanda të tjera!
# 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.050sTestim të shpejtë ngarkese
PĂ«r tĂ« vlerĂ«suar humbjet nga virtualizimi â aktivizoj sysbench, si shembuj kryesorĂ« .
Aktivizimi i sysbench me Docker+containerd
Testi i procesorit
sysbench 1.0: benchmark i vlerësimit të sistemit multi-threaded
Duke e ekzekutuar testin me opsionet e mëposhtme:
Numri i thread-eve: 1
Iniciarizimi i gjeneratorit të numrave të rastësishëm nga koha aktuale
Limitet e numrave prim: 20000
Duke inicializuar thread-et punuese...
Thread-et e filluara!
Statistikat e përgjithshme:
koha totale: 36.7335s
numri total i ngjarjeve: 10000
koha totale e kaluar në ekzekutimin e ngjarjeve: 36.7173s
koha e përgjigjes:
min: 3.43ms
avg: 3.67ms
max: 8.34ms
përafërsisht 95 percentili: 3.79ms
Drejtësia e thread-eve:
ngjarje (avg/stddev): 10000.0000/0.00
koha e ekzekutimit (avg/stddev): 36.7173/0.00Testi i memories operative
sysbench 1.0: testi i vlerësimit të sistemit me shumë drejtime
Duke e ekzekutuar testin me opsionet në vazhdim:
Numri i drejtimeve: 1
Inizializimi i gjeneratorit të numrave të rastit nga koha aktuale
Inizializimi i drejtimeve të punës...
Drejtime të nisura!
Operacione të kryera: 104857600 (2172673.64 ops/sec)
102400.00 MiB të transferuara (2121.75 MiB/sec)
Statistika të përgjithshme:
koha totale: 48.2620s
numri total i ngjarjeve: 104857600
koha totale e marrë nga ekzekutimi i ngjarjeve: 17.4161s
koha e përgjigjes:
min: 0.00ms
avg: 0.00ms
max: 0.17ms
përafërsisht 95 përqind: 0.00ms
Ndershmëria e drejtimeve:
ngjarjet (avg/standard deviat): 104857600.0000/0.00
koha e ekzekutimit (avg/standard deviat): 17.4161/0.00Lansimi i sysbench duke përdorur Docker+Kata Containers
Testi i procesorit
sysbench 1.0: testi i vlerësimit të sistemit me shumë drejtime
Duke e ekzekutuar testin me opsionet në vazhdim:
Numri i drejtimeve: 1
Inizializimi i gjeneratorit të numrave të rastit nga koha aktuale
Limiti i numrave prim: 20000
Inizializimi i drejtimeve të punës...
Drejtime të nisura!
Statistika të përgjithshme:
koha totale: 36.5747s
numri total i ngjarjeve: 10000
koha totale e marrë nga ekzekutimi i ngjarjeve: 36.5594s
koha e përgjigjes:
min: 3.43ms
avg: 3.66ms
max: 4.93ms
përafërsisht 95 përqind: 3.77ms
Ndërshtmëria e drejtimeve:
ngjarjet (avg/standard deviat): 10000.0000/0.00
koha e ekzekutimit (avg/standard deviat): 36.5594/0.00Testi i memories operative
sysbench 1.0: vlerësimi i sistemit me shumë_threads
Duke e ekzekutuar testin me opsionet vijues:
Numri i threads: 1
Inicimi i gjeneratorit të numrave të rastësishëm nga koha aktuale
Inicimi i threads të punës...
Threads e nisura!
Operacione të kryera: 104857600 (2450366.94 ops/sec)
102400.00 MiB të transferuara (2392.94 MiB/sec)
Statistikat e përgjithshme:
koha totale: 42.7926s
numri total i ngjarjeve: 104857600
koha totale e kaluar në ekzekutimin e ngjarjeve: 16.1512s
koha e përgjigjes:
minimum: 0.00ms
mesatar: 0.00ms
maksimum: 0.43ms
përafërsisht 95 percentile: 0.00ms
Drejtësia e threads:
ngjarjet (mesatar/standard): 104857600.0000/0.00
koha e ekzekutimit (mesatar/standard): 16.1512/0.00Në princip, situata tashmë është e qartë, por është më optimal të ekzekutohen testet disa herë, duke hequr devijimet dhe mesatarizuar rezultatet, prandaj nuk po bëj më shumë teste për momentin.
Përfundimet
MegjithĂ«se nisja e konteinerĂ«ve tĂ« tillĂ« merr rreth pesĂ« deri nĂ« dhjetĂ« herĂ« mĂ« shumĂ« kohĂ« (koha tipike e nisjes sĂ« komandave tĂ« ngjashme duke pĂ«rdorur containerd Ă«shtĂ« mĂ« pak se njĂ« e treta e sekondĂ«s) â ato gjithsesi funksionojnĂ« mjaft shpejt, nĂ«se e marrim parasysh kohĂ«n absolut tĂ« nisjes (mĂ« sipĂ«r ka shembuj, komandat ekzekutohen mesatarisht pĂ«r tre sekonda). NdĂ«rsa rezultatet e testit tĂ« shpejtĂ« pĂ«r CPU dhe RAM tregojnĂ« rezultate praktikisht identike, qĂ« nuk mund tĂ« mos gĂ«zojnĂ«, veçanĂ«risht nĂ« dritĂ«n e faktit qĂ« izolimi sigurohet pĂ«rmes njĂ« mekanizmi tĂ« tillĂ« tĂ« provuar si kvm.
Ankandi
Artikulli është një përmbledhje, por ofron mundësinë për të provuar një runtime alternativ. Nuk janë mbuluar shumë fusha të aplikimeve, për shembull, në faqe është përshkruar mundësia e nisjes së Kubernetes mbi Kata Containers. Shtesë, gjithashtu mund të kryhen një sërë testesh, të orientuara drejt gjetjes së problemeve të sigurisë, vendosjes së kufizimeve dhe gjërave interesante të tjera.
Ju lutem, të gjithë ata që e lexuan dhe rrotulluan deri këtu të marrin pjesë në anketën, nga e cila do të varet botimi i ardhshëm mbi këtë temë.
Vetëm përdoruesit e regjistruar mund të marrin pjesë në anketë. , ju lutemi.
A duhet të vazhdojmë të publikojmë artikuj për Kata Containers?
80,0%Po, shkruaj edhe më tepër!28
20,0%Jo, nuk Ă«shtĂ« nevojaâŠ7
35 përdorues kanë votuar. 7 përdorës kanë abstenuar.
Burimi: habr.com
