Dësen Artikel wäert diskutéieren wéi et funktionnéiert
Iwwer allgemeng Probleemer mat Docker an hir Léisunge scho
Schlëssel Features
- Schafft mat engem getrennten Kär, sou datt Netzwierk, Erënnerung an I / O Isolatioun ubitt, ass et méiglech d'Benotzung vun Hardware Isolatioun ze zwéngen baséiert op Virtualiséierungsextensiounen
- Ënnerstëtzung fir Industrienormen abegraff OCI (Containerformat), Kubernetes CRI
- Konsequent Leeschtung vu reguläre Linux Container, erhéicht Isolatioun ouni d'Performance Overhead vu reguläre VMs
- Eliminéiert d'Noutwendegkeet fir Container a vollwäertege virtuelle Maschinnen ze lafen, generesch Schnëttplazen vereinfachen d'Integratioun a starten
Kader
et ginn
wichteg: Kata Container Aarbecht gëtt nëmmen op Hardware ënnerstëtzt, Virtualiséierung Forwarding funktionnéiert och net ëmmer brauch sse4.1 Ënnerstëtzung vum Prozessor.
Kata Container installéieren ass ganz einfach:
Installéiert Utilities fir mat Repositories ze schaffen:
# yum -y install yum-utils
Selinux auszeschalten (et ass méi korrekt ze konfiguréieren, awer fir Einfachheet deaktivéieren ech et):
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Mir verbannen de Repository a maachen d'Installatioun
# 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
Upassung
Ech wäert opstellen fir mam Docker ze schaffen, seng Installatioun ass typesch, ech wäert et net méi am Detail beschreiwen:
# 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
Mir maachen Ännerungen op daemon.json:
# cat <<EOF > /etc/docker/daemon.json
{
"default-runtime": "kata-runtime",
"runtimes": {
"kata-runtime": {
"path": "/usr/bin/kata-runtime"
}
}
}
EOF
Restart Docker:
# service docker restart
Funktionell Kontroll
Wann Dir de Container ufänkt ier Dir Docker nei start, kënnt Dir gesinn datt uname d'Versioun vum Kernel gëtt, deen um Haaptsystem leeft:
# 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
No engem Restart gesäit d'Kernel Versioun esou aus:
# 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
Méi Équipen!
# 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
Schnell Laaschttest
Fir d'Verloschter vun der Virtualiséierung ze bewäerten - ech lafen sysbench, als Haaptbeispiller
Lafen sysbench mat Docker + Container
Prozessor Test
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 Test
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
Lafen sysbench mat Docker + Kata Container
Prozessor Test
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 Test
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
Am Prinzip ass d'Situatioun scho kloer, awer et ass méi optimal fir d'Tester e puer Mol auszeféieren, Auslänner ze läschen an d'Resultater duerchschnëttlech ze maachen, also maachen ech nach net méi Tester.
Conclusiounen
Trotz der Tatsaach, datt esou Container ongeféier fënnef bis zéng Mol méi laang daueren fir opzemaachen (déi typesch Zäit fir ähnlech Kommandoen ze lafen wann Dir Containerd benotzt ass manner wéi en Drëttel vun enger Sekonn), funktionéiere se ëmmer nach zimlech séier wa mir déi absolut Startzäit huelen ( et gi Beispiller uewendriwwer, Kommandoen ausgefouert an engem Duerchschnëtt vun dräi Sekonnen). Gutt, d'Resultater vun engem séieren Test vu CPU a RAM weisen bal déiselwecht Resultater, déi net nëmme kënne freeën, besonnesch am Liicht vun der Tatsaach datt d'Isolatioun mat sou engem gutt lafende Mechanismus wéi kvm geliwwert gëtt.
Announcement
Den Artikel ass eng Iwwerpréiwung, awer et gëtt Iech d'Méiglechkeet déi alternativ Runtime ze fillen. Vill Applikatiounsberäicher sinn net ofgedeckt, zum Beispill beschreift de Site d'Fäegkeet Kubernetes uewen op Kata Container ze lafen. Zousätzlech kënnt Dir och eng Serie vun Tester ausféieren, déi op Sécherheetsprobleemer fokusséiert sinn, Restriktiounen setzen an aner interessant Saachen.
Ech bieden all déi, déi hei gelies an zréckgewéckelt hunn, un der Ëmfro deelzehuelen, op där zukünfteg Publikatiounen zu dësem Thema ofhänken.
Nëmme registréiert Benotzer kënnen un der Ëmfro deelhuelen.
Soll ech weider Artikelen iwwer Kata Container publizéieren?
-
80,0%Jo, schreift méi!28
-
20,0%Nee, net ... 7
35 Benotzer hunn gestëmmt. 7 Benotzer hu sech enthalen.
Source: will.com