Kuerz Iwwersiicht an Opstellung vu Kata Container

Kuerz Iwwersiicht an Opstellung vu Kata Container
Dësen Artikel wäert diskutéieren wéi et funktionnéiert Kata Container, an et gëtt och e prakteschen Deel mat hirer Verbindung mat Docker.

Iwwer allgemeng Probleemer mat Docker an hir Léisunge scho geschriwwe gouf, Haut wäert ech d'Ëmsetzung vu Kata Containers kuerz beschreiwen. Kata Containers ass eng sécher Container Runtime baséiert op liichte virtuelle Maschinnen. Mat hinnen ze schaffen ass d'selwecht wéi mat anere Container, awer zousätzlech gëtt et eng méi zouverléisseg Isolatioun mat der Hardwarevirtualiséierungstechnologie. De Projet huet am Joer 2017 ugefaang, wéi d'Communautéit mam selwechten Numm d'Fusioun vun de beschten Iddien vun Intel Clear Containers an Hyper.sh RunV ofgeschloss huet, duerno ass d'Aarbecht weider op Ënnerstëtzung fir verschidden Architekturen, dorënner AMD64, ARM, IBM p- an z. -Serie. Zousätzlech gëtt d'Aarbecht bannent den Hypervisoren QEMU, Firecracker ënnerstëtzt, an et gëtt och Integratioun mat Containerd. De Code ass verfügbar op GitHub ënner der MIT Lizenz.

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 vill Installatiounsoptiounen, wäert ech iwwerleeën d'Installatioun vun de Repositories, baséiert op dem Centos 7 Betribssystem.
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 huelen dës Optioun.

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. Umellen, wann ech glift.

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

Setzt e Commentaire