Tatalakayin ng artikulong ito kung paano ito gumagana
Tungkol sa mga karaniwang problema sa Docker at ang kanilang mga solusyon na
Pangunahing mga tampok
- Paggawa gamit ang isang hiwalay na core, kaya nagbibigay ng network, memory at I / O isolation, posibleng pilitin ang paggamit ng hardware isolation batay sa virtualization extension
- Suporta para sa mga pamantayan sa industriya kabilang ang OCI (container format), Kubernetes CRI
- Ang pare-parehong performance ng mga regular na container ng Linux, nadagdagan ang paghihiwalay nang walang overhead ng performance ng mga regular na VM
- Tanggalin ang pangangailangang magpatakbo ng mga lalagyan sa loob ng mga ganap na virtual machine, pinapasimple ng mga generic na interface ang pagsasama at paglulunsad
Instalasyon
Mayroon
Mahalagang: Ang gawain ng Kata Containers ay sinusuportahan lamang sa hardware, ang pagpapasa ng virtualization ay hindi palaging gumagana, gayundin kailangan ng sse4.1 suporta mula sa processor.
Ang pag-install ng Kata Container ay medyo simple:
Mag-install ng mga utility para sa pagtatrabaho sa mga repository:
# yum -y install yum-utils
Huwag paganahin ang Selinux (mas tama ang pag-configure, ngunit para sa pagiging simple ay hindi ko ito pinagana):
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Ikinonekta namin ang repositoryo at isinasagawa ang pag-install
# 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
pag-aayos
Magse-set up ako upang gumana sa docker, ang pag-install nito ay tipikal, hindi ko ito ilalarawan nang mas detalyado:
# 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
Gumagawa kami ng mga pagbabago sa daemon.json:
# cat <<EOF > /etc/docker/daemon.json
{
"default-runtime": "kata-runtime",
"runtimes": {
"kata-runtime": {
"path": "/usr/bin/kata-runtime"
}
}
}
EOF
I-restart ang docker:
# service docker restart
Health Check
Kung sisimulan mo ang lalagyan bago i-restart ang docker, makikita mo na ang uname ay magbibigay ng bersyon ng kernel na tumatakbo sa pangunahing system:
# 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
Pagkatapos ng pag-restart, ang bersyon ng kernel ay ganito:
# 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
Higit pang mga koponan!
# 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
Mabilis na pagsubok sa pagkarga
Upang masuri ang mga pagkalugi mula sa virtualization - nagpapatakbo ako ng sysbench, bilang mga pangunahing halimbawa
Pagpapatakbo ng sysbench gamit ang Docker+containerd
Pagsubok sa processor
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
pagsubok ng RAM
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
Pagpapatakbo ng sysbench gamit ang Docker+Kata Containers
Pagsubok sa processor
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
pagsubok ng RAM
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
Sa prinsipyo, ang sitwasyon ay malinaw na, ngunit ito ay mas mahusay na patakbuhin ang mga pagsubok nang maraming beses, pag-alis ng mga outlier at pag-average ng mga resulta, kaya hindi pa ako gumagawa ng higit pang mga pagsubok.
Natuklasan
Sa kabila ng katotohanan na ang mga naturang container ay tumatagal ng humigit-kumulang lima hanggang sampung beses na mas matagal bago magsimula (karaniwang run time para sa mga katulad na command kapag gumagamit ng containerd ay mas mababa sa ikatlong bahagi ng isang segundo), gumagana pa rin ang mga ito nang medyo mabilis kung kukuha tayo ng ganap na oras ng pagsisimula (doon ay mga halimbawa sa itaas, ang mga utos na ginawa sa average na tatlong segundo). Buweno, ang mga resulta ng isang mabilis na pagsubok ng CPU at RAM ay nagpapakita ng halos parehong mga resulta, na hindi maaaring hindi magalak, lalo na sa liwanag ng katotohanan na ang paghihiwalay ay ibinibigay gamit ang gayong mahusay na mekanismo bilang kvm.
Anunsyo
Ang artikulo ay isang pagsusuri, ngunit binibigyan ka nito ng pagkakataong madama ang alternatibong runtime. Maraming lugar ng aplikasyon ang hindi saklaw, halimbawa, inilalarawan ng site ang kakayahang magpatakbo ng Kubernetes sa ibabaw ng Kata Container. Bilang karagdagan, maaari ka ring magpatakbo ng isang serye ng mga pagsubok na nakatuon sa paghahanap ng mga problema sa seguridad, pagtatakda ng mga paghihigpit, at iba pang mga kawili-wiling bagay.
Hinihiling ko sa lahat ng nagbasa at nagbalik-balik dito na makilahok sa survey, kung saan aasa ang mga publikasyon sa hinaharap sa paksang ito.
Ang mga rehistradong user lamang ang maaaring lumahok sa survey.
Dapat ko bang ipagpatuloy ang pag-publish ng mga artikulo tungkol sa Kata Container?
-
80,0%Oo, sumulat pa!28
-
20,0%Hindi, huwag…7
35 user ang bumoto. 7 na user ang umiwas.
Pinagmulan: www.habr.com