ืงื•ืจืฅ ืื™ื‘ืขืจื‘ืœื™ืง ืื•ืŸ ืกืขื˜ืึทืคึผ ืคื•ืŸ ืงืึทื˜ืึท ืงืึทื ื˜ื™ื™ื ืขืจื–

ืงื•ืจืฅ ืื™ื‘ืขืจื‘ืœื™ืง ืื•ืŸ ืกืขื˜ืึทืคึผ ืคื•ืŸ ืงืึทื˜ืึท ืงืึทื ื˜ื™ื™ื ืขืจื–
ื“ืขืจ ืึทืจื˜ื™ืงืœ ื•ื•ืขื˜ ื“ื™ืกืงื•ื˜ื™ืจืŸ ื•ื•ื™ ืขืก ืึทืจื‘ืขื˜ ืงืึทื˜ืึท ืงืึทื ื˜ื™ื™ื ืขืจื–, ืื•ืŸ ืขืก ื•ื•ืขื˜ ืื•ื™ืš ื–ื™ื™ืŸ ืึท ืคึผืจืึทืงื˜ื™ืฉ ื˜ื™ื™ืœ ืžื™ื˜ ื–ื™ื™ืขืจ ืงืฉืจ ืฆื• ื“ืึธืงืขืจ.

ื•ื•ืขื’ืŸ ืคึผืจืึธืกื˜ ืคึผืจืึธื‘ืœืขืžืก ืžื™ื˜ ื“ืึธืงืขืจ ืื•ืŸ ื–ื™ื™ืขืจ ืกืึทืœื•ืฉืึทื ื– ืฉื•ื™ืŸ ืื™ื– ื’ืขืฉืจื™ื‘ืŸ, ื”ื™ื™ึทื ื˜ ืื™ืš ื•ื•ืขืœ ื‘ืขืงื™ืฆืขืจ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ื“ื™ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ ืคื•ืŸ ืงืึทื˜ืึท ืงืึทื ื˜ื™ื™ื ืขืจื–. ืงืึทื˜ืึท ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ื– ืึท ื–ื™ื›ืขืจ ืงืึทื ื˜ื™ื™ื ืขืจ ืจื•ื ื˜ื™ืžืข ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ืœื™ื™ื˜ื•ื•ื™ื™ื˜ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ. ืืจื‘ืขื˜ืŸ ืžื™ื˜ ื–ื™ื™ ืื™ื– ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ืžื™ื˜ ืื ื“ืขืจืข ืงืึทื ื˜ื™ื™ื ืขืจื–, ืึธื‘ืขืจ ืื™ืŸ ืึทื“ื™ืฉืึทืŸ ืขืก ืื™ื– ืึท ืžืขืจ ืคืึทืจืœืึธื–ืœืขืš ืืคื’ืขื–ื•ื ื“ืขืจื˜ืงื™ื™ื˜ ื ื™ืฆืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ื•ื•ื™ืจื˜ื•ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ื˜ืขื›ื ืึธืœืึธื’ื™ืข. ื“ื™ ืคึผืจื•ื™ืขืงื˜ ื”ืึธื˜ ื–ื™ืš ืึธื ื’ืขื”ื•ื™ื‘ืŸ ืื™ืŸ 2017, ื•ื•ืขืŸ ื“ื™ ื’ืขืžื™ื™ื ื“ืข ืžื™ื˜ ื“ืขื ื–ืขืœื‘ืŸ ื ืึธืžืขืŸ ื”ืึธื˜ ื’ืขืขื ื“ื™ืงื˜ ื“ื™ ืฆื•ื ื•ื™ืคื’ื™ืกืŸ ืคื•ืŸ ื“ื™ ื‘ืขืกื˜ืขืจ ืื™ื“ืขืขืก ืคึฟื•ืŸ Intel Clear Containers ืื•ืŸ Hyper.sh RunV, ื ืึธืš ื•ื•ืึธืก ื“ื™ ืึทืจื‘ืขื˜ ืื™ื– ืคืืจื‘ืœื™ื‘ืŸ ืื•ื™ืฃ ืฉื˜ื™ืฆืŸ ืคึฟืึทืจ ืคืึทืจืฉื™ื“ืŸ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื–, ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ AMD64, ARM, IBM p- ืื•ืŸ z -ืกืขืจื™ืข. ืึทื“ื“ื™ื˜ื™ืึธื ืึทืœืœื™, ืึทืจื‘ืขื˜ ื™ืŸ ื“ื™ ื›ื™ื™ืคึผืขืจื•ื•ื™ื™ื–ืขืจื– QEMU, Firecracker ืื™ื– ื’ืขืฉื˜ื™ืฆื˜, ืื•ืŸ ืขืก ืื™ื– ืื•ื™ืš ื™ื ื˜ืึทื’ืจื™ื™ืฉืึทืŸ ืžื™ื˜ ืงืึทื ื˜ื™ื™ื ืขืจื“. ื“ืขืจ ืงืึธื“ ืื™ื– ื‘ื ื™ืžืฆื ืื™ืŸ ื’ื™ื˜ื”ื•ื‘ ืื•ื ื˜ืขืจ ื“ื™ MIT ื“ืขืจืœื•ื™ื‘ืขื ื™ืฉ.

ืฉืœื™ืกืœ ืคึฟืขื™ึดืงื™ื™ื˜ืŸ

  • ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ื”ืึทืจืฅ, ืึทื–ื•ื™ ืคึผืจืึทื•ื•ื™ื™ื“ื™ื ื’ ื ืขืฅ, ื–ื›ึผืจื•ืŸ ืื•ืŸ ืื™ืš / ืึธ ืืคื’ืขื–ื•ื ื“ืขืจื˜ืงื™ื™ื˜, ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ืฆื•ื•ื™ื ื’ืขืŸ ื“ื™ ื ื•ืฆืŸ ืคื•ืŸ ื™ื™ึทื–ื ื•ื•ืึทืจื’ ืืคื’ืขื–ื•ื ื“ืขืจื˜ืงื™ื™ื˜ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื•ื•ื™ืจื˜ื•ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ื™ืงืกื˜ืขื ืฉืึทื ื–
  • ืกื•ืคึผืคึผืึธืจื˜ ืคึฟืึทืจ ื™ื ื“ืึทืกื˜ืจื™ ืกื˜ืึทื ื“ืึทืจื“ืก ืึทืจื™ื™ึทื ื’ืขืจืขื›ื ื˜ OCI (container ืคึฟืึธืจืžืึทื˜), Kubernetes CRI
  • ืงืึธื ืกื™ืกื˜ืขื ื˜ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืคื•ืŸ ืจืขื’ื•ืœืขืจ ืœื™ื ื•ืงืก ืงืึทื ื˜ื™ื™ื ืขืจื–, ื’ืขื•ื•ืืงืกืŸ ืืคื’ืขื–ื•ื ื“ืขืจื˜ืงื™ื™ื˜ ืึธืŸ ื“ื™ ืคืึธืจืฉื˜ืขืœื•ื ื’ ืึธื•ื•ื•ืขืจื›ืขื“ ืคื•ืŸ ืจืขื’ื•ืœืขืจ VMs
  • ืขืœื™ืžื™ื ื™ืจืŸ ื“ื™ ื ื•ื™ื˜ ืฆื• ืœื•ื™ืคืŸ ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ืŸ ืคื•ืœ-ืคืœืขื“ื–ืฉื“ ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ, ื“ื–ืฉืึทื ืขืจื™ืง ื™ื ื˜ืขืจืคื™ื™ืกื™ื– ืคืึทืจืคึผืึธืฉืขื˜ืขืจืŸ ื™ื ืึทื’ืจื™ื™ืฉืึทืŸ ืื•ืŸ ืงืึทื˜ืขืจ

ื™ื ืกื˜ืึทืœื™ืจื•ื ื’

ืขืก ื™ื– ืคืึทืจืึทืŸ ืคื™ืœืข ื™ื™ึทื ืžืึธื ื˜ื™ืจื•ื ื’ ืึธืคึผืฆื™ืขืก, ืื™ืš ื•ื•ืขืœ ื‘ืึทื˜ืจืึทื›ื˜ืŸ ื™ื ืกื˜ืึธืœื™ื ื’ ืคึฟื•ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื– ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ื™ Centos 7 ืึธืคึผืขืจื™ื™ื˜ื™ื ื’ ืกื™ืกื˜ืขื.
ืขืก ืก ื•ื•ื™ื›ื˜ื™ืง: ืงืึทื˜ืึท ืงืึทื ื˜ื™ื™ื ืขืจื– ืึทืจื‘ืขื˜ ืื™ื– ื’ืขืฉื˜ื™ืฆื˜ ื‘ืœื•ื™ื– ืื•ื™ืฃ ื™ื™ึทื–ื ื•ื•ืึทืจื’, ื•ื•ื™ืจื˜ื•ืึทืœื™ื–ืึทื˜ื™ืึธืŸ ืคืึธืจื•ื•ืขืจื“ื™ื ื’ ื˜ื•ื˜ ื ื™ืฉื˜ ืฉื˜ืขื ื“ื™ืง ืึทืจื‘ืขื˜ ื“ืึทืจืคึฟืŸ sse4.1 ืฉื˜ื™ืฆืŸ ืคื•ืŸ ื“ื™ ืคึผืจืึทืกืขืกืขืจ.

ื™ื ืกื˜ืึธืœื™ื ื’ ืงืึทื˜ืึท ืงืึทื ื˜ื™ื™ื ืขืจื– ืื™ื– ื’ืึทื ืฅ ืคึผืฉื•ื˜:

ื™ื ืกื˜ืึทืœื™ืจืŸ ื™ื•ื˜ื™ืœืึทื˜ื™ื– ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื–:

# yum -y install yum-utils

ื“ื™ืกื™ื™ื‘ืึทืœ ืกืขืœื™ื ื•ืงืก (ืขืก ืื™ื– ืžืขืจ ืจื™ื›ื˜ื™ืง ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ, ืึธื‘ืขืจ ืคึฟืึทืจ ืคึผืึทืฉื˜ืขืก ืื™ืš ื“ื™ืกื™ื™ื‘ืึทืœ ืขืก):

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

ืžื™ืจ ืคืึทืจื‘ื™ื ื“ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ื“ื•ืจื›ืคื™ืจืŸ ื“ื™ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’

# 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

Customize

ืื™ืš ื•ื•ืขืœ ืฉื˜ืขืœืŸ ื–ื™ืš ืฆื• ืึทืจื‘ืขื˜ืŸ ืžื™ื˜ ื“ืึธืงืขืจ, ื“ื™ ื™ื ืกื˜ืึทืœื™ืจื•ื ื’ ืื™ื– ื˜ื™ืคึผื™ืฉ, ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ื‘ืึทืฉืจื™ื™ึทื‘ืŸ ืขืก ืื™ืŸ ืžืขืจ ื“ืขื˜ืึทืœ:

# 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:

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

ืจื™ืกื˜ืึทืจื˜ ื“ืึธืงืงืขืจ:

# service docker restart

ืคืึทื ื’ืงืฉืึทื ืึทืœ ืงืึธื ื˜ืจืึธืœ

ืื•ื™ื‘ ืื™ืจ ืึธื ื”ื™ื™ื‘ ื“ืขื ืงืึทื ื˜ื™ื™ื ืขืจ ืื™ื™ื“ืขืจ ืื™ืจ ืจื™ืกื˜ืึทืจื˜ ื“ื™ ื“ืึธืงืงืขืจ, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืึทื– ื•ื ืึทืžืข ื•ื•ืขื˜ ื’ืขื‘ืŸ ื“ื™ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ืงืขืจืŸ ืคืœื™ืกื ื“ื™ืง ืื•ื™ืฃ ื“ื™ ื”ื•ื™ืคึผื˜ ืกื™ืกื˜ืขื:

# 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

ื ืึธืš ืึท ืจื™ืกื˜ืึทืจื˜, ื“ื™ ืงืขืจืŸ ื•ื•ืขืจืกื™ืข ืงื•ืงื˜ ื•ื•ื™ ื“ืึธืก:

# 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

ืžืขืจ ื˜ื™ืžื–!

# 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

ืฉื ืขืœ ืžืึทืกืข ื˜ืขืกื˜ื™ื ื’

ืฆื• ืึทืกืกืขืกืก ื“ื™ ืœืึธืกืกืขืก ืคื•ืŸ ื•ื•ื™ืจื˜ื•ืึทืœื™ื–ืึทื˜ื™ืึธืŸ - ืื™ืš ืœื•ื™ืคืŸ ืกื™ืกื‘ืขื ื˜ืฉ, ื•ื•ื™ ื“ื™ ื”ื•ื™ืคึผื˜ ื‘ื™ื™ืฉืคื™ืœืŸ ื ืขืžืขืŸ ื“ืขื ืึธืคึผืฆื™ืข.

ืคืœื™ืกื ื“ื™ืง ืกื™ืกื‘ืขื ื˜ืฉ ื ื™ืฆืŸ Docker + container

ืคึผืจืึทืกืขืกืขืจ ืคึผืจื•ื‘ื™ืจืŸ

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

ื‘ืึทืจืึทืŸ ืคึผืจื•ื‘ื™ืจืŸ

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

ืคืœื™ืกื ื“ื™ืง ืกื™ืกื‘ืขื ื˜ืฉ ื ื™ืฆืŸ Docker + Kata ืงืึทื ื˜ื™ื™ื ืขืจื–

ืคึผืจืึทืกืขืกืขืจ ืคึผืจื•ื‘ื™ืจืŸ

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

ื‘ืึทืจืึทืŸ ืคึผืจื•ื‘ื™ืจืŸ

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

ืื™ืŸ ืคึผืจื™ื ืฆื™ืคึผ, ื“ื™ ืกื™ื˜ื•ืึทืฆื™ืข ืื™ื– ืฉื•ื™ืŸ ืงืœืึธืจ, ืึธื‘ืขืจ ืขืก ืื™ื– ืžืขืจ ืึธืคึผื˜ื™ืžืึทืœ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ื˜ืขืกืฅ ืขื˜ืœืขื›ืข ืžืึธืœ, ืจื™ืžื•ื•ื•ื™ื ื’ ืึทื•ื˜ืœื™ื™ืขืจื– ืื•ืŸ ืึทื•ื•ืจื™ื“ื–ืฉื™ื ื’ ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ, ืึทื–ื•ื™ ืื™ืš ื˜ืึธืŸ ื ื™ื˜ ื˜ืึธืŸ ืžืขืจ ื˜ืขืกืฅ ื ืึธืš.

ืคื™ื™ื ื“ื™ื ื’ื–

ื˜ืจืึธืฅ ื“ืขื ืคืึทืงื˜ ืึทื– ืึทื–ืึท ืงืึทื ื˜ื™ื™ื ืขืจื– ื ืขืžืขืŸ ื•ื•ืขื’ืŸ ืคื™ื ืฃ ืฆื• ืฆืขืŸ ืžืืœ ืžืขืจ ืฆื• ืึธื ื”ื™ื™ื‘ืŸ (ื“ื™ ื˜ื™ืคึผื™ืฉ ืœื•ื™ืคืŸ ืฆื™ื™ื˜ ืคึฟืึทืจ ืขื ืœืขืš ืงืึทืžืึทื ื“ื– ืื™ื– ื•ื•ื™ื™ื ื™ืงืขืจ ื•ื•ื™ ืึท ื“ืจื™ื˜ ืคื•ืŸ ืึท ืกืขืงื•ื ื“ืข), ื–ื™ื™ ื ืึธืš ืึทืจื‘ืขื˜ ื’ืึทื ืฅ ื’ืขืฉื•ื•ื™ื ื“ ืื•ื™ื‘ ืžื™ืจ ื ืขืžืขืŸ ื“ื™ ืึทื‘ืกืึธืœื•ื˜ ืึธื ื”ื™ื™ื‘ ืฆื™ื™ื˜ (ื“ืึธืจื˜) ื–ืขื ืขืŸ ื‘ื™ื™ืฉืคื™ืœืŸ ืื•ื™ื‘ืŸ, ืงืึทืžืึทื ื“ื– ื’ืขื˜ืืŸ ืื™ืŸ ืึท ื“ื•ืจื›ืฉื ื™ื˜ืœืขืš ืคื•ืŸ ื“ืจื™ื™ ืกืขืงื•ื ื“ืขืก). ื ื•, ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ ืึท ืฉื ืขืœ ืคึผืจืึธื‘ืข ืคื•ืŸ โ€‹โ€‹ืงืคึผื• ืื•ืŸ ื‘ืึทืจืึทืŸ ื•ื•ื™ื™ึทื–ืŸ ื›ึผืžืขื˜ ื“ื™ ื–ืขืœื‘ืข ืจืขื–ื•ืœื˜ืึทื˜ืŸ, ื•ื•ืึธืก ืงืขื ืขืŸ ื ื™ื˜ ื ืึธืจ ืคืจื™ื™ืขืŸ, ืกืคึผืขืฆื™ืขืœ ืื™ืŸ ืœื™ื›ื˜ ืคื•ืŸ ื“ื™ ืคืึทืงื˜ ืึทื– ืืคื’ืขื–ื•ื ื“ืขืจื˜ืงื™ื™ื˜ ืื™ื– ืฆื•ื’ืขืฉื˜ืขืœื˜ ืžื™ื˜ ืึทื–ืึท ืึท ื’ืขื–ื•ื ื˜-ืœื•ื™ืคืŸ ืžืขืงืึทื ื™ื–ืึทื ื•ื•ื™ ืงื•ื•ื.

ืžืขืœื“ืŸ

ื“ืขืจ ืึทืจื˜ื™ืงืœ ืื™ื– ืึท ืจืขืฆืขื ื–ื™ืข, ืึธื‘ืขืจ ืขืก ื’ื™ื˜ ืื™ืจ ื“ื™ ื’ืขืœืขื’ื ื”ื™ื™ื˜ ืฆื• ืคื™ืœืŸ ื“ื™ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืจื•ื ื˜ื™ืžืข. ืคื™ืœืข ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ื–ืขื ืขืŸ ื ื™ืฉื˜ ื‘ืื“ืขืงื˜, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ื“ื™ ืคึผืœืึทืฅ ื‘ืืฉืจื™ื™ื‘ื˜ ื“ื™ ืคื™ื™ื™ืงื™ื™ื˜ ืฆื• ืœื•ื™ืคืŸ Kubernetes ืื•ื™ืฃ ืฉืคึผื™ืฅ ืคื•ืŸ ืงืึทื˜ืึท ืงืึทื ื˜ื™ื™ื ืขืจื–. ื“ืขืจืฆื•, ืื™ืจ ืงืขื ืขืŸ ืื•ื™ืš ืœื•ื™ืคืŸ ืึท ืกืขืจื™ืข ืคื•ืŸ โ€‹โ€‹ื˜ืขืกืฅ ืคืึธื•ืงื™ืกื˜ ืื•ื™ืฃ ื“ืขืจื’ื™ื™ื•ื ื’ ื–ื™ื›ืขืจื”ื™ื™ื˜ ืคึผืจืึธื‘ืœืขืžืก, ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืจื™ืกื˜ืจื™ืงืฉืึทื ื– ืื•ืŸ ืื ื“ืขืจืข ื˜ืฉื™ืงืึทื•ื•ืข ื˜ื™ื ื’ื–.

ืื™ืš ื‘ืขื˜ ืึทืœืข ื“ื™, ื•ื•ืึธืก ื”ืึธื‘ืŸ ื“ืึธ ื’ืขืœื™ื™ืขื ื˜ ืื•ืŸ ืื™ื‘ืขืจื’ืขื—ื–ืจื˜, ื–ื™ื™ ื–ืึธืœืŸ ื–ื™ืš ื‘ืึทื˜ื™ื™ืœื™ืงืŸ ืื™ืŸ ื“ืขืจ ืึทื ืงืขื˜ืข, ืื•ื™ืฃ ื•ื•ืขืœื›ืŸ ื“ื™ ืฆื•ืงื•ื ืคึฟื˜ื™ืงืข ืื•ื™ืกื’ืึทื‘ืขืก ืื•ื™ืฃ ื“ืขืจ ื˜ืขืžืข ื•ื•ืขืœืŸ ืึธืคืขื ื’ืขืŸ.

ื‘ืœื•ื™ื– ืจืขื’ื™ืกื˜ืจื™ืจื˜ ื ื™ืฆืขืจืก ืงืขื ืขืŸ ืึธื ื˜ื™ื™ืœ ื ืขืžืขืŸ ืื™ืŸ ื“ื™ ื™ื‘ืขืจื‘ืœื™ืง. ืกื™ื™ืŸ ืืจื™ื™ืŸื‘ื™ื˜ืข.

ื–ืึธืœ ืื™ืš ืคืึธืจื–ืขืฆืŸ ืฆื• ืึทืจื•ื™ืกื’ืขื‘ืŸ ืึทืจื˜ื™ืงืœืขืŸ ื•ื•ืขื’ืŸ ืงืึทื˜ืึท ืงืึทื ื˜ื™ื™ื ืขืจื–?

  • ืงืกื ื•ืžืงืก%ื™ื, ืฉืจื™ื™ื‘ ืžืขืจ!28

  • ืงืกื ื•ืžืงืก%ื ื™ื™ืŸ, ื˜ืึธืŸ ื ื™ื˜ ... 7

35 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื’ืขืฉื˜ื™ืžื˜. 7 ื‘ืื ื•ืฆืขืจ ื”ืื‘ืŸ ื–ื™ืš ืืคื’ืขื”ืืœื˜ืŸ.

ืžืงื•ืจ: www.habr.com

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’