Īss Kata konteineru pārskats un iestatīŔana

Īss Kata konteineru pārskats un iestatīŔana
Šajā rakstā tiks apspriests, kā tas darbojas Kata konteineri, un būs arī praktiskā daļa ar to savienojumu ar Docker.

Par izplatÄ«tākajām problēmām ar Docker un jau to risinājumiem bija uzrakstÄ«ts, Å”odien es Ä«si aprakstīŔu ievieÅ”anu no Kata Containers. Kata Containers ir droÅ”s konteinera izpildlaiks, kura pamatā ir vieglas virtuālās maŔīnas. Darbs ar tiem ir tāds pats kā ar citiem konteineriem, taču papildus tiek nodroÅ”ināta uzticamāka izolācija, izmantojot aparatÅ«ras virtualizācijas tehnoloÄ£iju. Projekts sākās 2017. gadā, kad tāda paÅ”a nosaukuma kopiena pabeidza Intel Clear Containers un Hyper.sh RunV labāko ideju apvienoÅ”anu, pēc tam tika turpināts darbs pie dažādu arhitektÅ«ru, tostarp AMD64, ARM, IBM p- un z, atbalsta. - sērija. Turklāt darbs tiek atbalstÄ«ts hipervizoros QEMU, Firecracker, un ir arÄ« integrācija ar konteineru. Kods ir pieejams GitHub saskaņā ar MIT licenci.

Galvenās iezīmes

  • Strādājot ar atseviŔķu kodolu, tādējādi nodroÅ”inot tÄ«kla, atmiņas un I/O izolāciju, ir iespējams piespiest izmantot aparatÅ«ras izolāciju, kuras pamatā ir virtualizācijas paplaÅ”inājumi
  • Atbalsts nozares standartiem, tostarp OCI (konteinera formāts), Kubernetes CRI
  • Š”Ń‚Š°Š±ŠøŠ»ŃŒŠ½Š°Ń ŠæŃ€Š¾ŠøŠ·Š²Š¾Š“ŠøŃ‚ŠµŠ»ŃŒŠ½Š¾ŃŃ‚ŃŒ обычных контейнеров Linux, ŠæŠ¾Š²Ń‹ŃˆŠµŠ½ŠøŠµ ŠøŠ·Š¾Š»ŃŃ†ŠøŠø без наклаГных расхоГов, Š²Š»ŠøŃŃŽŃ‰ŠøŃ… на ŠæŃ€Š¾ŠøŠ·Š²Š¾Š“ŠøŃ‚ŠµŠ»ŃŒŠ½Š¾ŃŃ‚ŃŒ обычных Š²ŠøŃ€Ń‚ŃƒŠ°Š»ŃŒŠ½Ń‹Ń… машин
  • Novērst nepiecieÅ”amÄ«bu palaist konteinerus pilnvērtÄ«gās virtuālās maŔīnās, vispārÄ«gās saskarnes vienkārÅ”o integrāciju un palaiÅ”anu

UzstādīŔana

Ir daudz вариантов ŃƒŃŃ‚Š°Š½Š¾Š²ŠŗŠø, я Ń€Š°ŃŃŠ¼Š¾Ń‚Ń€ŃŽ ŃƒŃŃ‚Š°Š½Š¾Š²ŠŗŃƒ ŠøŠ· репозиториев, на основе операционной системы Centos 7.
Tas ir svarÄ«gi: Kata Containers darbs tiek atbalstÄ«ts tikai aparatÅ«rā, ne vienmēr darbojas arÄ« virtualizācijas pāradresācija nepiecieÅ”ams sse4.1 atbalsts no procesora.

Kata konteineru instalēŔana ir pavisam vienkārÅ”a:

Instalējiet utilītas darbam ar krātuvēm:

# yum -y install yum-utils

Atspējot Selinux (pareizāk ir konfigurēt, bet vienkārŔības labad es to atspējoju):

# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config

Mēs savienojam repozitoriju un veicam instalēŔanu

# 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

koriģēŔana

Es gatavojos strādāt ar docker, tā uzstādīŔana ir tipiska, es to neaprakstīŔu sīkāk:

# 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

Mēs veicam izmaiņas failā daemon.json:

# cat <<EOF > /etc/docker/daemon.json
{
  "default-runtime": "kata-runtime",
  "runtimes": {
    "kata-runtime": {
      "path": "/usr/bin/kata-runtime"
    }
  }
}
EOF

Restartējiet doku:

# service docker restart

Funkcionālā pārbaude

Ja startējat konteineru pirms doka restartēŔanas, varat redzēt, ka uname parādÄ«s kodola versiju, kas darbojas galvenajā sistēmā:

# 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

Pēc restartēŔanas kodola versija izskatās Ŕādi:

# 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

Vairāk komandu!

# 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

Ātra slodzes pārbaude

Lai novērtētu virtualizācijas radÄ«tos zaudējumus - kā galvenos piemērus palaidu sysbench izmantot Å”o iespēju.

Palaiž sysbench, izmantojot Docker+containerd

Procesora pārbaude

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 tests

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

Darbojas sysbench, izmantojot Docker+Kata konteinerus

Procesora pārbaude

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 tests

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

Principā situācija jau ir skaidra, bet optimālāk ir testus palaist vairākas reizes, noņemot izņēmumus un vidējos rezultātus, tāpēc pagaidām vairāk testu neveicu.

Atzinumi

Neskatoties uz to, ka Ŕādu konteineru palaiÅ”ana prasa apmēram piecas lÄ«dz desmit reizes ilgāku laiku (parastais izpildes laiks lÄ«dzÄ«gām komandām, izmantojot konteineru, ir mazāks par treÅ”daļu sekundes), tie joprojām darbojas diezgan ātri, ja ņemam absolÅ«to sākuma laiku (tur ir iepriekÅ” minētie piemēri, komandas tiek izpildÄ«tas vidēji trÄ«s sekundēs). CPU un RAM ātrās pārbaudes rezultāti uzrāda gandrÄ«z tādus paÅ”us rezultātus, kas var tikai priecāties, jo Ä«paÅ”i ņemot vērā faktu, ka izolācija tiek nodroÅ”ināta, izmantojot tik labi darbinātu mehānismu kā kvm.

Paziņojums

Raksts ir apskats, taču tas dod iespēju sajust alternatÄ«vo izpildlaiku. Daudzas pielietoÅ”anas jomas nav aptvertas, piemēram, vietnē ir aprakstÄ«ta iespēja palaist Kubernetes virs Kata konteineriem. Turklāt varat arÄ« palaist virkni testu, kas vērsti uz droŔības problēmu atraÅ”anu, ierobežojumu iestatīŔanu un citām interesantām lietām.

Aicinu visus, kas Å”eit lasÄ«juÅ”i un pārtÄ«juÅ”i, piedalÄ«ties aptaujā, no kuras bÅ«s atkarÄ«gas turpmākās publikācijas par Å”o tēmu.

Aptaujā var piedalīties tikai reģistrēti lietotāji. Ielogoties, lūdzu.

Vai man vajadzētu turpināt publicēt rakstus par Kata Containers?

  • 80,0%Jā, raksti vairāk!28

  • 20,0%Nē, nevajag...7

Nobalsoja 35 lietotāji. 7 lietotāji atturējās.

Avots: www.habr.com

Iegādājieties uzticamu mitināŔanu vietnēm ar DDoS aizsardzÄ«bu, VPS VDS serveriem šŸ”„ Iegādājieties uzticamu tÄ«mekļa vietņu mitināŔanu ar DDoS aizsardzÄ«bu, VPS VDS serveriem | ProHoster