Bu makale nasıl çalıştığını tartışacak
Docker ile ilgili yaygın sorunlar ve çözümleri hakkında zaten
Ana özellikleri
- Ayrı bir çekirdek ile çalışarak ağ, bellek ve I/O izolasyonu sağlayarak, sanallaştırma uzantılarına dayalı donanım izolasyonu kullanımını zorlamak mümkündür.
- OCI (kapsayıcı biçimi), Kubernetes CRI dahil olmak üzere endüstri standartları desteği
- Normal Linux kapsayıcılarının tutarlı performansı, normal VM'lerin performans ek yükü olmadan artırılmış izolasyon
- Kapsayıcıları tam teşekküllü sanal makinelerde çalıştırma ihtiyacını ortadan kaldırın, genel arabirimler entegrasyonu ve başlatmayı basitleştirir
Montaj
Var
Bu çok önemli: Kata Containers çalışması yalnızca donanım üzerinde desteklenir, sanallaştırma iletme her zaman çalışmaz, ayrıca sse4.1 desteğine ihtiyacınız var işlemciden.
Kata Konteynerlerini kurmak oldukça basittir:
Depolarla çalışmak için yardımcı programları yükleyin:
# yum -y install yum-utils
Selinux'u devre dışı bırakın (yapılandırmak daha doğru, ancak basitlik için devre dışı bırakıyorum):
# setenforce 0
# sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
Depoyu bağlarız ve kurulumu gerçekleştiririz
# 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
Ayar
Docker ile çalışmak için kurulum yapacağım, kurulumu tipik, daha ayrıntılı olarak açıklamayacağım:
# 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
Daemon.json'da değişiklikler yapıyoruz:
# cat <<EOF > /etc/docker/daemon.json
{
"default-runtime": "kata-runtime",
"runtimes": {
"kata-runtime": {
"path": "/usr/bin/kata-runtime"
}
}
}
EOF
Docker'ı yeniden başlat:
# service docker restart
Fonksiyonel test
Kapsayıcıyı docker'ı yeniden başlatmadan önce başlatırsanız, uname'nin ana sistemde çalışan çekirdeğin sürümünü vereceğini görebilirsiniz:
# 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
Yeniden başlatmanın ardından, çekirdek sürümü şöyle görünür:
# 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
Daha fazla takım!
# 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
Hızlı yük testi
Sanallaştırmadan kaynaklanan kayıpları değerlendirmek için - ana örnek olarak sysbench'i çalıştırıyorum
Sysbench'i Docker+containerd kullanarak çalıştırma
işlemci testi
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
bellek testi
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
Sysbench'i Docker+Kata Kapsayıcılarını kullanarak çalıştırma
işlemci testi
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
bellek testi
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
Prensip olarak, durum zaten açık, ancak testleri birkaç kez yapmak, aykırı değerleri kaldırmak ve sonuçların ortalamasını almak daha uygun, bu yüzden henüz daha fazla test yapmıyorum.
Bulgular
Bu tür kapların başlatılması yaklaşık beş ila on kat daha uzun sürmesine rağmen (containd kullanırken benzer komutlar için tipik çalışma süresi saniyenin üçte birinden daha azdır), mutlak başlangıç zamanını alırsak (orada) yine de oldukça hızlı çalışırlar. yukarıdaki örnekler, ortalama üç saniyede gerçekleştirilen komutlar). Hızlı bir CPU ve RAM testinin sonuçları, özellikle izolasyonun kvm gibi iyi çalışan bir mekanizma kullanılarak sağlandığı gerçeği ışığında, sevinmekten başka bir şey yapamayan hemen hemen aynı sonuçları gösteriyor.
Duyuru
Makale bir incelemedir, ancak size alternatif çalışma zamanını hissetme fırsatı verir. Birçok uygulama alanı kapsanmamaktadır, örneğin site, Kubernetes'i Kata Konteynerlerinin üzerinde çalıştırma olasılığını açıklamaktadır. Ek olarak, güvenlik sorunlarını bulmaya, kısıtlamaları belirlemeye ve diğer ilginç şeylere odaklanan bir dizi test de çalıştırabilirsiniz.
Burayı okuyan ve geri saran herkesten, bu konuyla ilgili gelecekteki yayınların bağlı olacağı ankete katılmalarını rica ediyorum.
Ankete sadece kayıtlı kullanıcılar katılabilir.
Kata Konteynerleri hakkında makaleler yayınlamaya devam etmeli miyim?
-
%80,0Evet, daha fazla yaz!28
-
%20,0Hayır, yapma…7
35 kullanıcı oy kullandı. 7 kişi çekimser kaldı.
Kaynak: habr.com