Hierdie artikel sal bespreek hoe dit werk
Oor algemene probleme met Docker en hul oplossings reeds
Belangrike kenmerke
- Deur met 'n aparte kern te werk en sodoende netwerk-, geheue- en I/O-isolasie te verskaf, is dit moontlik om die gebruik van hardeware-isolasie te dwing gebaseer op virtualisasie-uitbreidings
- Ondersteuning vir industriestandaarde, insluitend OCI (houerformaat), Kubernetes CRI
- Konsekwente werkverrigting van gewone Linux-houers, verhoogde isolasie sonder die werkverrigtingbokoste van gewone VM's
- Elimineer die behoefte om houers binne volwaardige virtuele masjiene te laat loop, generiese koppelvlakke vereenvoudig integrasie en bekendstelling
installasie
Daar is
Dit is belangrik om: Kata Containers-werk word slegs op hardeware ondersteun, virtualisasie-aanstuur werk ook nie altyd nie benodig sse4.1 ondersteuning van die verwerker.
Die installering van Kata-houers is redelik eenvoudig:
Installeer nutsprogramme om met bewaarplekke te werk:
# yum -y install yum-utils
Deaktiveer Selinux (dit is meer korrek om te konfigureer, maar vir eenvoud deaktiveer ek dit):
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Ons koppel die bewaarplek en voer die installasie uit
# 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
aanpassing
Ek sal opstel om met docker te werk, die installasie daarvan is tipies, ek sal dit nie in meer besonderhede beskryf nie:
# 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
Ons maak veranderinge aan daemon.json:
# cat <<EOF > /etc/docker/daemon.json
{
"default-runtime": "kata-runtime",
"runtimes": {
"kata-runtime": {
"path": "/usr/bin/kata-runtime"
}
}
}
EOF
Herbegin koppelaar:
# service docker restart
Funksionele toetsing
As u die houer begin voordat u docker herbegin, kan u sien dat uname die weergawe van die kern sal gee wat op die hoofstelsel loop:
# 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
Na 'n herbegin lyk die kernweergawe soos volg:
# 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
Meer spanne!
# 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
Vinnige vragtoetsing
Om die verliese van virtualisasie te bepaal - ek hardloop sysbench, as die belangrikste voorbeelde
Begin sysbench met Docker+containerd
Verwerker toets
sysbench 1.0: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Prime numbers limit: 20000
Initializing worker threads...
Threads started!
General statistics:
total time: 36.7335s
total number of events: 10000
total time taken by event execution: 36.7173s
response time:
min: 3.43ms
avg: 3.67ms
max: 8.34ms
approx. 95 percentile: 3.79ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 36.7173/0.00
RAM toets
sysbench 1.0: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Initializing worker threads...
Threads started!
Operations performed: 104857600 (2172673.64 ops/sec)
102400.00 MiB transferred (2121.75 MiB/sec)
General statistics:
total time: 48.2620s
total number of events: 104857600
total time taken by event execution: 17.4161s
response time:
min: 0.00ms
avg: 0.00ms
max: 0.17ms
approx. 95 percentile: 0.00ms
Threads fairness:
events (avg/stddev): 104857600.0000/0.00
execution time (avg/stddev): 17.4161/0.00
Begin sysbench met Docker+Kata Containers
Verwerker toets
sysbench 1.0: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Prime numbers limit: 20000
Initializing worker threads...
Threads started!
General statistics:
total time: 36.5747s
total number of events: 10000
total time taken by event execution: 36.5594s
response time:
min: 3.43ms
avg: 3.66ms
max: 4.93ms
approx. 95 percentile: 3.77ms
Threads fairness:
events (avg/stddev): 10000.0000/0.00
execution time (avg/stddev): 36.5594/0.00
RAM toets
sysbench 1.0: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Initializing worker threads...
Threads started!
Operations performed: 104857600 (2450366.94 ops/sec)
102400.00 MiB transferred (2392.94 MiB/sec)
General statistics:
total time: 42.7926s
total number of events: 104857600
total time taken by event execution: 16.1512s
response time:
min: 0.00ms
avg: 0.00ms
max: 0.43ms
approx. 95 percentile: 0.00ms
Threads fairness:
events (avg/stddev): 104857600.0000/0.00
execution time (avg/stddev): 16.1512/0.00
In beginsel is die situasie reeds duidelik, maar dit is meer optimaal om die toetse verskeie kere uit te voer, uitskieters te verwyder en die uitslae te gemiddelde, so ek doen nog nie meer toetse nie.
Bevindinge
Ten spyte van die feit dat sulke houers ongeveer vyf tot tien keer langer neem om te begin (tipiese looptyd vir soortgelyke opdragte wanneer containerd gebruik word is minder as 'n derde van 'n sekonde), werk hulle steeds redelik vinnig as ons die absolute begintyd neem (daar is voorbeelde hierbo, opdragte wat in gemiddeld drie sekondes uitgevoer word). Wel, die resultate van 'n vinnige toets van SVE en RAM toon amper dieselfde resultate, wat nie anders kan as om bly te wees nie, veral in die lig van die feit dat isolasie verskaf word deur so 'n goed bestuurde meganisme soos kvm.
aankondiging
Die artikel is 'n resensie, maar dit gee jou die geleentheid om die alternatiewe looptyd te voel. Baie toepassingsareas word nie gedek nie, byvoorbeeld die webwerf beskryf die moontlikheid om Kubernetes bo-op Kata Containers te laat loop. Boonop kan u ook 'n reeks toetse uitvoer wat daarop gefokus is om sekuriteitsprobleme te vind, beperkings op te stel en ander interessante dinge.
Ek vra almal wat hier gelees en teruggedraai het om deel te neem aan die opname, waarvan toekomstige publikasies oor hierdie onderwerp sal afhang.
Slegs geregistreerde gebruikers kan aan die opname deelneem.
Moet ek voortgaan om artikels oor Kata Containers te publiseer?
-
80,0%Ja, skryf meer!28
-
20,0%Nee, moenie...7
35 gebruikers het gestem. 7 gebruikers het buite stemming gebly.
Bron: will.com