Përmbledhje e shkurtër dhe konfigurimi i Kata Containers

Përmbledhje e shkurtër dhe konfigurimi i Kata Containers
Në këtë artikull do të shqyrtojmë parimin e funksionimit Kata Containers, 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ë është shkruar, 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ë GitHub 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 numer të madh 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/config

Lidhim 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-shim

Konfigurimi

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 369ce74a3c

Bëjmë ndryshime në daemon.json:

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

Rikthejmë docker-in:

# service docker restart

Kontrolli 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/Linux

Pas 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/Linux

Komanda 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.050s

Testim të shpejtë ngarkese

PĂ«r tĂ« vlerĂ«suar humbjet nga virtualizimi — aktivizoj sysbench, si shembuj kryesorĂ« marr kĂ«tĂ« variantin.

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.00

Testi 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.00

Lansimi 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.00

Testi 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.00

Në 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ë. Hyni, 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

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster