{"id":487083,"date":"2026-07-13T10:34:53","date_gmt":"2026-07-13T10:34:53","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=487083"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=487083","title":{"rendered":"\u041f\u0430\u043c\u044f\u0442\u043d\u0438\u043a kubelet, Kubernetes != CRI"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<h3>\u041c\u0435\u0447\u0442\u0430: systemd \u043a\u0430\u043a execution plane<\/h3>\n<p>\u0412\u0441\u0435 \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u0440\u0438\u043a\u043e\u043b \u2014 \u0437\u0430\u043a\u0430\u0437 \u043f\u0438\u0446\u0446\u044b \u0447\u0435\u0440\u0435\u0437 Kubernetes (\u044d\u0442\u043e, \u043a\u0441\u0442\u0430\u0442\u0438, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442)\u2026 \u0421\u043c\u0435\u0448\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0434\u043e \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 Kubernetes \u043e\u0442\u043e\u0440\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u00ab\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u00bb: \u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0432 API-\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0443 \u043d\u0435\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0446\u0435\u043b\u0430\u044f \u041e\u0421 \u2014 CRI, containerd, runc. \u041d\u043e \u043d\u0430 \u043b\u044e\u0431\u043e\u043c Linux-\u0445\u043e\u0441\u0442\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441 cgroups, namespaces, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438, \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u043c \u0438 D-Bus API \u2014 systemd\u2026 \u0412\u0430\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442?<\/p>\n<p>\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043b\u044e\u0431\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e Kubernetes \u2014 \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e Control Plane \u0434\u043b\u044f \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0430\u043c\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c: \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u043e\u0434\u0430 \u043e\u0431\u0440\u043e\u0441\u043b\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u041e\u0421, \u0446\u0435\u043b\u043e\u0439 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u043e\u0439 \u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0438 \u043a\u0443\u0447\u0435\u0439 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u043b.<\/p>\n<p>\u041a\u0442\u043e-\u0442\u043e \u0435\u0449\u0451 \u043f\u043e\u043c\u043d\u0438\u0442 <s>\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u0443\u044e<\/s> \u0432\u043e\u0439\u043d\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 Docker <s>\u0438 systemd<\/s> \u0432 Kubernetes? \u0412 1.20 \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 deprecation dockershim \u2014 \u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u043f\u0430\u043d\u0438\u043a\u0430 \u00abKubernetes \u0431\u0440\u043e\u0441\u0430\u0435\u0442 Docker\u00bb, \u0445\u043e\u0442\u044f \u043d\u0430 \u0434\u0435\u043b\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 Dockerfile \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u043d\u0438\u0447\u0435\u0433\u043e, \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u044f\u043c\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f kubelet \u2192 dockerd. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0437\u0430\u0438\u0447\u043d\u043e\u0439: dockershim \u2014 \u044d\u0442\u043e \u0448\u0438\u043c \u043d\u0430\u0434 \u0448\u0438\u043c\u043e\u043c. Docker \u0441\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 containerd \u2192 runc, \u0430 kubelet \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u0440\u0436\u0430\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 CRI-\u0448\u0438\u043c, \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0437\u043e\u0432\u044b \u0432 Docker Engine API. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430: kubelet \u2192 CRI \u2192 dockershim \u2192 dockerd \u2192 containerd \u2192 runc \u2192 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u0428\u0435\u0441\u0442\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441.<\/p>\n<h3>\u0417\u0430\u0447\u0435\u043c<\/h3>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\n<\/th>\n<th>\n<p align=\"left\">Stock kubelet + containerd<\/p>\n<\/th>\n<th>\n<p align=\"left\">Periapsis<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">RSS \u0434\u0435\u043c\u043e\u043d\u043e\u0432 \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0435<\/p>\n<\/td>\n<td>\n<p align=\"left\">~350 \u041c\u0411<\/p>\n<\/td>\n<td>\n<p align=\"left\">~74 \u041c\u0411 (1 pawn) &#8212; ~130 \u041c\u0411 (30 pawns)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u043e\u0432\u0435\u0440\u0445\u0435\u0434 \u043d\u0430 \u043f\u043e\u0434<\/p>\n<\/td>\n<td>\n<p align=\"left\">~15\u201320 \u041c\u0411 (containerd)<\/p>\n<\/td>\n<td>\n<p align=\"left\">&lt; 1 \u041c\u0411 (\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u044e\u043d\u0438\u0442)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041f\u043e\u0434\u043e\u0432 \u043d\u0430 \u0445\u043e\u0441\u0442<\/p>\n<\/td>\n<td>\n<p align=\"left\">110 (\u0436\u0451\u0441\u0442\u043a\u0438\u0439 \u043f\u043e\u0442\u043e\u043b\u043e\u043a)<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u0442\u044b\u0441\u044f\u0447\u0438 (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041b\u043e\u0433\u0438<\/p>\n<\/td>\n<td>\n<p align=\"left\">CRI-\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044b<\/p>\n<\/td>\n<td>\n<p align=\"left\">journald<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u043c\u043e\u043d\u0430<\/p>\n<\/td>\n<td>\n<p align=\"left\">\u043e\u0431\u044b\u0447\u043d\u043e zero-downtime<\/p>\n<\/td>\n<td>\n<p align=\"left\">zero-downtime<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0412\u043e\u0437\u044c\u043c\u0451\u043c <strong>\u043c\u043e\u0439<\/strong> \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0443 \u043c\u0435\u043d\u044f VPS \u043d\u0430 1 CPU \u0438 1 \u0413\u0411 RAM, kubelet + Cilium + Envoy Proxy, \u0432\u0440\u043e\u0434\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440, \u043d\u043e \u043d\u0430 \u043d\u0451\u043c \u0435\u043b\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u043e\u0441\u044c, \u0438 \u044d\u0442\u043e \u2014 \u0435\u0449\u0435 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e workload. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 kubelet, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 CNI, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 ingress. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u0430\u043c\u0430 \u0438\u043d\u0444\u0440\u0430 \u0443\u0436\u0435 \u0441\u044a\u0435\u0434\u0430\u043b\u0430 \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0445\u043e\u0442\u044c \u043e\u0434\u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430. \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f: \u043d\u0430 \u043f\u043e\u0445\u043e\u0436\u0435\u0439 \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0443 \u043c\u0430\u0448\u0438\u043d\u0435 (1 vCPU, 2 GB RAM, VPS) \u0443 \u043c\u0435\u043d\u044f \u0432\u0435\u0441\u044c control plane \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u2014 apiserver, controller-manager, scheduler, kube-proxy, CoreDNS \u0438 \u043e\u0434\u0438\u043d nginx \u2014 \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0432 ~523 \u041c\u0411, \u0441 \u0437\u0430\u043f\u0430\u0441\u043e\u043c (\u0434\u0430\u043b\u0435\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u0426\u0438\u0444\u0440\u044b\u00bb).<\/p>\n<p>\u041d\u0430 \u043c\u043e\u0449\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435 \u044d\u0442\u0443 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0435\u0448\u0430\u044e\u0442 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b: \u043d\u0435 \u0443\u0431\u0438\u0440\u0430\u044e\u0442 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443, \u0430 \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u044e\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443. KubeVirt \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 VM (\u0447\u0435\u0440\u0435\u0437 QEMU\/libvirt) \u043a\u0430\u043a \u043f\u043e\u0434\u044b \u2014 \u0443\u0434\u043e\u0431\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 kubectl, \u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0434 \u0442\u044f\u043d\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u044f\u0434\u0440\u043e, \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 boot \u0438 \u0441\u043e\u0442\u043d\u0438 \u041c\u0411 RAM \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0430\u043c\u0443 VM, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. Kata Containers \u0438\u0434\u0451\u0442 \u043c\u044f\u0433\u0447\u0435: \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0451\u043d\u043d\u044b\u0439 microVM \u0440\u0430\u0434\u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0441\u0438\u043b\u044c\u043d\u0435\u0435, \u0447\u0435\u043c namespaces + cgroups, \u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u2014 \u043e\u0431\u044b\u0447\u043d\u043e ~130-170 \u041c\u0411 \u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041e\u0431\u0430 \u0447\u0435\u0441\u0442\u043d\u043e \u0440\u0435\u0448\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438, \u043d\u043e \u0446\u0435\u043d\u043e\u0439 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c.<\/p>\n<p>\u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043e\u0449\u043d\u043e\u0435 \u0436\u0435\u043b\u0435\u0437\u043e \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b? \u0418\u043b\u0438 \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u0439 homelab? \u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 VM-\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043e\u0442 \u0447\u0443\u0436\u0438\u0445 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432, \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0440\u0435\u0437\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043c\u0430\u0448\u0438\u043d\u0443 \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0434, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u2014 \u0431\u0435\u0437 CRI \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438 \u0431\u0435\u0437 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439. \u0420\u043e\u0432\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442.<\/p>\n<p>\u0412\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043e\u0432 \u2014 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f: kubelet \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0434\u043d\u0430 \u043d\u043e\u0434\u0430 = \u043e\u0434\u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430. <strong>\u041d\u0438\u0433\u0434\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Kubernetes \u044d\u0442\u043e \u043f\u0440\u044f\u043c\u043e \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e<\/strong>, \u043d\u043e \u0437\u0430\u0448\u0438\u0442\u043e \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 kubelet.<\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430<\/h3>\n<h4>Pawns, not nodes<\/h4>\n<pre><code>$ kubectl get nodes -o wideNAME               STATUS   ROLES     AGE     VERSION               INTERNAL-IP       EXTERNAL-IP   OS-IMAGE     KERNEL-VERSION                 CONTAINER-RUNTIMEengifire           Ready    primary   2d19h   perigeos:\/\/6c446973   192.168.50.2      &lt;none&gt;        Arch Linux   7.0.14-zen1-1-zen (amd64)      systemd:\/\/262~develengifire-pawn-01   Ready    pawn      2d19h   perigeos:\/\/6c446973   192.168.50.2      &lt;none&gt;        Arch Linux   7.0.14-zen1-1-zen (amd64)      systemd:\/\/262~develengifire-scale-1   Ready    pawn      21h     perigeos:\/\/6c446973   192.168.50.2      &lt;none&gt;        Arch Linux   7.0.14-zen1-1-zen (amd64)      systemd:\/\/262~develengix99            Ready    primary   2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-e2e-1      Ready    pawn      2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-e2e-2      Ready    pawn      2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-scale-1    Ready    pawn      21h     perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-trail-1    Ready    pawn      2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-trail-2    Ready    pawn      2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~devel<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 <code>perigeos<\/code> \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 N \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445\u00bb \u043d\u043e\u0434 (Pawn) \u2014 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u043e\u0439 TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 (\u0447\u0435\u0440\u0435\u0437 CSR API \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430), \u0441\u0432\u043e\u0439 kubelet HTTP endpoint (exec\/attach\/logs\/port-forward), \u0441\u0432\u043e\u0439 pod CIDR, \u0441\u0432\u043e\u0439 cgroup slice \u0438 \u0441\u0432\u043e\u0438 \u043b\u0438\u043c\u0438\u0442\u044b. \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 Pawn \u0441\u0432\u043e\u0439 \u0431\u043b\u0430\u0441\u0442-\u0440\u0430\u0434\u0438\u0443\u0441: \u043f\u0430\u043d\u0438\u043a\u0430 \u043e\u0434\u043d\u043e\u0439 Pawn \u043d\u0435 \u0443\u0442\u0430\u0449\u0438\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043d\u0438 \u0445\u043e\u0441\u0442-\u0434\u0435\u043c\u043e\u043d, \u043d\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 Pawns.<\/p>\n<p>\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u0438\u0434\u0438\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043d\u043e\u0434\u044b \u0438 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e:<\/p>\n<pre><code># \u0441 \u0442\u0435\u0441\u0442\u043e\u0432$ apsis pawnsNAME        ROLE  PORT   PODScompute-00  pawn  12261  56compute-01  pawn  12262  55...compute-29  pawn  12290  56<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>30 pawns, ~55 \u043f\u043e\u0434\u043e\u0432 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439.<\/p>\n<h4>Node != host<\/h4>\n<p>\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e kubelet, \u0433\u0434\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0432\u044b\u0448\u0435 110 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0441\u0430\u043c \u0430\u043f\u0441\u0442\u0440\u0438\u043c, \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 Pawn \u044d\u0442\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0430 \u043d\u0435 \u0444\u043b\u0430\u0433 \u0441 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430\u043c\u0438 \u2014 \u0441\u0435\u0439\u0447\u0430\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u043e\u0438\u0442 256. \u041f\u043e\u0442\u043e\u043b\u043e\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0442\u043e\u043b\u043a\u043e\u043c \u043e\u0434\u043d\u043e\u0439 <em>\u043c\u0430\u0448\u0438\u043d\u044b<\/em>, \u0438 identity (\u0434\u0430\u043b\u0435\u0435 Pawn) \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0445\u043e\u0442\u044c \u0441\u0442\u043e. \u042f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b 33 Pawns \u043d\u0430 \u0434\u0432\u0443\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0445\u043e\u0441\u0442\u0430\u0445 \u0438 \u044d\u0442\u043e \u043d\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043d\u0435 \u0442\u0440\u044e\u043a \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 (\u043a\u0430\u043a \u0443 kind\/k3d, \u0433\u0434\u0435 \u043d\u043e\u0434\u0430 \u044d\u0442\u043e \u043f\u043e\u0434 \u0432 \u043f\u043e\u0434\u0435): \u044d\u0442\u043e \u0447\u0435\u0441\u0442\u043d\u044b\u0445 33 Node \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u0441\u0432\u043e\u0439 kubelet-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442.<\/p>\n<h4>\u041f\u043e\u0434 = \u043c\u0430\u0448\u0438\u043d\u0430 systemd<\/h4>\n<pre><code>$ sudo machinectl | headMACHINE                                                         CLASS     SERVICE        OS        VERSION  ADDRESSESpod-0278b268-569a-43d0-8d01-791c77e90e7e-nginx                  container systemd-nspawn alpine    3.23.4   10.0.65.53\u2026pod-0a272159-351a-4fdf-9738-6010f1f5ad47-nginx                  container systemd-nspawn alpine    3.23.4   10.0.127.141\u2026pod-0b773d9b-e74b-41c0-b301-3169144f43de-nginx                  container systemd-nspawn alpine    3.23.4   10.0.55.182\u2026pod-0fb1dabd-f7c3-461b-8052-413f70dbb2ad-nginx                  container systemd-nspawn alpine    3.23.4   10.0.50.176\u2026pod-1342a134-e0d1-422f-913d-7533d3aca554-nginx                  container systemd-nspawn alpine    3.23.4   10.0.58.116\u2026pod-1ad3491d-5779-4284-afb5-00ab0b480e60-nginx                  container systemd-nspawn alpine    3.23.4   10.0.115.134\u2026pod-1cccc4de-6133-4b3e-8062-6579a219e67f-nginx                  container systemd-nspawn alpine    3.23.4   10.0.116.107\u2026pod-2000e594-376b-45ef-a574-971c29fc1dc2-nginx                  container systemd-nspawn alpine    3.23.4   10.0.23.127\u2026pod-204b0f04-871c-44e0-bcfb-6cc2c215be98-operator               container systemd-nspawn periapsis 0        -<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u2014 \u044d\u0442\u043e nspawn-\u043c\u0430\u0448\u0438\u043d\u0430 \u0438\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 OCI-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 (pull, \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u043b\u043e\u0451\u0432, P2P-\u0440\u0430\u0437\u0434\u0430\u0447\u0430 \u0431\u043b\u043e\u0431\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0445\u043e\u0441\u0442\u0430\u043c\u0438 \u043f\u043e TLS). \u0418\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u044f\u0434\u0435\u0440\u043d\u0430\u044f: namespaces + cgroups, \u0442\u043e\u0442 \u0436\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0447\u0442\u043e \u0443 runc, \u043d\u043e \u0431\u0435\u0437 \u0434\u0435\u043c\u043e\u043d\u0430 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438\u043b\u0438 shim. \u0416\u0443\u0440\u043d\u0430\u043b\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0435\u0434\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432 journald.<\/p>\n<h4>Zero-downtime \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0435\u043c\u043e\u043d\u0430<\/h4>\n<p>\u041f\u0440\u0438 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0435 perigeos \u0443\u043c\u0438\u0440\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u0434\u0435\u043c\u043e\u043d, \u043f\u043e\u0434\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0436\u0438\u0442\u044c. \u041d\u043e\u0432\u044b\u0439 \u0434\u0435\u043c\u043e\u043d \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442, \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0438\u0445 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0441 \u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0443. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0433\u0435\u043d\u0442\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 drain. \u041f\u043e\u0441\u043b\u0435 \u0440\u0435\u0431\u0443\u0442\u0430 \u0445\u043e\u0441\u0442\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435: \u0434\u0435\u043c\u043e\u043d \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442 \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0432\u0448\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u0445.<\/p>\n<p>\u0421\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e\u0441\u0442\u0438 \u0440\u0430\u0434\u0438: containerd v2 \u0443\u043c\u0435\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 &#8212; shim-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u0440\u0435\u0441\u0442\u0430\u0440\u0442 \u0434\u0435\u043c\u043e\u043d\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0435\u0433\u043e. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e perigeos \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 shim-\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440: \u0441\u0443\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440 \u043f\u043e\u0434\u0430 \u2014 \u0442\u043e\u0442 \u0436\u0435 systemd, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u044e\u0431\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u044e\u043d\u0438\u0442\u043e\u043c \u043d\u0430 \u0445\u043e\u0441\u0442\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u00ab\u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0440\u0435\u0441\u0442\u0430\u0440\u0442 \u0434\u0435\u043c\u043e\u043d\u0430\u00bb \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0430 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u0434 \u2014 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u044e\u043d\u0438\u0442.<\/p>\n<h3>\u0426\u0438\u0444\u0440\u044b<\/h3>\n<p>\u0416\u0435\u043b\u0435\u0437\u043e \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u0435: Xeon E5-2690 v4 (48 \u0413\u0411) \u0438 \u043c\u0438\u043d\u0438 \u041f\u041a \u043d\u0430 Intel N150 (16 \u0413\u0411), \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Ethernet (0.15 \u043c\u0441 RTT).<\/p>\n<h4>\u041f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c: 1772 \u043f\u043e\u0434\u0430, 33 \u043d\u043e\u0434\u044b<\/h4>\n<pre><code>$ apsis status          # engix99 (Xeon, 30 pawns)Hostname:    engix99Uptime:      1h47mPawns:       30Pods:        1,660Memory:      29 \/ 48 GBCPU cores:   28Machines:    1,660RSS:         365 MiBLXC veths:   1,665Netns:       1,665$ apsis status          # engifire (N150, 2 pawn)Hostname:    engifireUptime:      1h45mPawns:       2Pods:        112Memory:      2.7 \/ 16 GBCPU cores:   4Machines:    112RSS:         89 MiBNetns:       112<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>365 \u041c\u0411 RSS \u043d\u0430 1660 \u043f\u043e\u0434\u043e\u0432 \u2014 \u044d\u0442\u043e ~220 \u041a\u0411 \u043d\u0430 \u043f\u043e\u0434. \u0414\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430: \u043e\u0434\u0438\u043d containerd-shim \u0441\u0442\u043e\u0438\u0442 ~15-20 \u041c\u0411 <em>\u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440<\/em>, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0442\u0435 \u0436\u0435 1660 \u043f\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u0438 \u0442\u043e\u043b\u044c\u043a\u043e shim\u2019\u044b \u0432\u0435\u0441\u0438\u043b\u0438 \u0431\u044b 25-33 \u0413\u0411 \u2014 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0432\u0441\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0417\u0434\u0435\u0441\u044c \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442.<\/p>\n<h4>\u041f\u043e\u0434 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439: k6, 1000 VU, 3m30s, ClusterIP -&gt; nginx-whoami \u043d\u0430 33 \u043d\u043e\u0434\u0430\u0445<\/h4>\n<pre><code>  THRESHOLDS    errors    rate=0.00%                              &lt; 0.01  PASS    http_req_duration    p(95)=4.05ms                            &lt; 500   PASS    p(99)=10.04ms                           &lt; 1000  PASS  TOTAL RESULTS    checks_total........: 7,507,074   35,740\/s    checks_succeeded....: 100.00%    checks_failed.......: 0.00%    HTTP    http_reqs...........: 2,502,358   11,913\/s    http_req_duration...: avg=998 us  med=257 us  p(90)=1.48 ms  p(95)=4.05 ms  p(99)=10 ms  max=860 ms    http_req_failed.....: 0.00%    NETWORK    data_received.......: 4.4 GB      21 MB\/s    data_sent...........: 170 MB      810 kB\/s  running (3m30.0s), 0\/1000 VUs, 2,502,358 complete and 0 interrupted iterations<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041d\u043e\u043b\u044c \u043e\u0448\u0438\u0431\u043e\u043a. 2.5 \u043c\u0438\u043b\u043b\u0438\u043e\u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u041c\u0435\u0434\u0438\u0430\u043d\u0430 257 \u043c\u043a\u0441 \u043f\u0440\u0438 ~12k rps \u2014 \u0438 \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 ClusterIP \u043f\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c\u0443 datapath (eBPF, VXLAN \u043c\u0435\u0436\u0434\u0443 \u0445\u043e\u0441\u0442\u0430\u043c\u0438), \u0430 \u043d\u0435 loopback-\u0441\u0438\u043d\u0442\u0435\u0442\u0438\u043a\u0430.<\/p>\n<h4>\u0421\u0432\u0435\u0436\u0438\u0435 \u0437\u0430\u043c\u0435\u0440\u044b (09.07.26)<\/h4>\n<pre><code>$ sudo apsis statusHostname:    engix99Version:     61a39f25Uptime:      9m26sPawns:       6Pods:        11Kernel:      7.1.3-x64v3-xanmod1Arch:        linux\/amd64Go:          go1.26.5-X:nodwarf5Memory:      23998 \/ 48004 MiBCPU cores:   28Load avg:    1.44 1.85 1.86PSI cpu:     0.0%PSI memory:  0.0%Machines:    8Disk dirs:   106Units:       8RSS:         84 MiBLXC veths:   4Netns:       3Pawns:NAME             ROLE     PORT   IP  PODS  CPU(ms)  MEM(MiB)engix99          primary  12260      5     9348467  1457engix99-e2e-1    pawn     12261      2     170      0engix99-e2e-2    pawn     12262      0     0        0engix99-trail-1  pawn     12263      2     14721    51engix99-trail-2  pawn     12264      2     10335    77engix99-scale-1  pawn     12265      0     0        0<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0410\u043f\u0440\u0435\u043b\u044c\u0441\u043a\u0438\u0439 33-\u043d\u043e\u0434\u043e\u0432\u044b\u0439 \u0441\u0442\u0435\u043d\u0434 \u044f \u043d\u0435 \u043f\u0435\u0440\u0435\u0441\u043e\u0431\u0438\u0440\u0430\u043b: \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0441\u0435\u0439\u0447\u0430\u0441 \u2014 6 \u043d\u043e\u0434 \u043d\u0430 \u0442\u0435\u0445 \u0436\u0435 \u0434\u0432\u0443\u0445 \u0445\u043e\u0441\u0442\u0430\u0445. \u0422\u0430\u043a \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u0442\u043e\u0440 \u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u043d\u043e\u0433\u043e \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430, \u0430 \u0441\u0432\u0435\u0436\u0438\u0439 \u0437\u0430\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.<\/p>\n<ul>\n<li>\n<p>RSS \u0434\u0435\u043c\u043e\u043d\u0430 \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0435: 71.6 \u041c\u0411 (5 pawn) \/ 67.7 \u041c\u0411 (2 pawn); \u043f\u043e\u0441\u043b\u0435 5-\u043c\u0438\u043d\u0443\u0442\u043d\u043e\u0433\u043e load-\u0442\u0435\u0441\u0442\u0430 &#8212; +4.5 \u0438 +2.7 \u041c\u0411 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0443\u0442\u0435\u0447\u0435\u043a \u043f\u0430\u043c\u044f\u0442\u0438.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043e\u0435 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435: ~55-60 \u041c\u0411 \u0431\u0430\u0437\u044b \u0438 \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u043f\u043b\u044e\u0441 ~5-18 \u041c\u0411 \u043d\u0430 pawn, \u043e\u0442\u0441\u044e\u0434\u0430 \u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u00ab70-130 \u041c\u0411\u00bb \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435 \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u00ab\u0417\u0430\u0447\u0435\u043c\u00bb.<\/p>\n<\/li>\n<li>\n<p>21 \u043f\u043e\u0434 \u043d\u0430 7 \u043d\u043e\u0434\u0430\u0445, 2910 rps \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 5 \u043c\u0438\u043d\u0443\u0442: p90 996 \u043c\u043a\u0441, p95 1.36 \u043c\u0441, 0% \u043e\u0448\u0438\u0431\u043e\u043a, \u0442\u0440\u0430\u0444\u0438\u043a \u0434\u043e\u0448\u0451\u043b \u0434\u043e \u0432\u0441\u0435\u0445 21 \u0440\u0435\u043f\u043b\u0438\u043a \u043d\u0430 \u0432\u0441\u0435\u0445 7 \u043d\u043e\u0434\u0430\u0445.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0414\u0435\u0448\u0451\u0432\u044b\u0439 VPS<\/h4>\n<p>\u0414\u0435\u0448\u0451\u0432\u044b\u0439 VPS (1 vCPU, 1.9 \u0413\u0411 RAM). \u041f\u043e\u043b\u043d\u044b\u0439 self-hosted control plane (apiserver + controller-manager + scheduler) \u043f\u043b\u044e\u0441 kube-proxy, CoreDNS \u0438 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u043f\u043e\u0434 \u2014 \u0432\u0435\u0441\u044c \u0441\u0442\u0435\u043a \u0446\u0435\u043b\u0438\u043a\u043e\u043c:<\/p>\n<pre><code>perigeos, \u0441\u0430\u043c \u0434\u0435\u043c\u043e\u043d:          ~102 \u041c\u0411  (~119 \u041c\u0411 \u043f\u0438\u043a)\u0432\u0441\u0451, \u0447\u0442\u043e perigeos \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442:  ~421 \u041c\u0411\u0438\u0442\u043e\u0433\u043e perigeos + \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430:    ~523 \u041c\u0411, ~7% \u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0434\u0440\u0430\u0445\u043e\u0441\u0442 \u0446\u0435\u043b\u0438\u043a\u043e\u043c (free -h):       ~794 \u041c\u0411 \/ 1.9 \u0413\u0411 (~42%)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041a\u043b\u0430\u0441\u0442\u0435\u0440 \u043e\u0442\u0432\u0435\u0447\u0430\u043b \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0447\u0435\u0440\u0435\u0437 NodePort (<code>curl<\/code> \u043f\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c\u0443 IP), DNS \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u043b\u0441\u044f \u0447\u0435\u0440\u0435\u0437 CoreDNS \u2014 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <code>kubectl get pods -A<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u0432\u0441\u0451 <code>1\/1 Running<\/code>.<\/p>\n<h4>\u0418 \u0441\u043e\u0432\u0441\u0435\u043c \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0439 \u0445\u043e\u0441\u0442: Raspberry Pi Zero 2 W<\/h4>\n<p>\u041f\u043b\u0430\u0442\u0430 \u0437\u0430 ~15 \u0434\u043e\u043b\u043b\u0430\u0440\u043e\u0432: 467 \u041c\u0438\u0411 RAM, arm64, \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0435 \u044f\u0434\u0440\u043e Raspberry Pi OS. \u0422\u043e\u0442 \u0436\u0435 \u0431\u0438\u043d\u0430\u0440\u044c perigeos, \u043d\u043e\u0434\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 alpine \u043f\u043e\u0434 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f, \u0442\u044f\u043d\u0435\u0442 \u043e\u0431\u0440\u0430\u0437, \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u2014 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f\u043c\u0438 \u0432 <code>kubectl describe<\/code>:<\/p>\n<pre><code>$ sudo apsis statusHostname:    engipiPawns:       1Pods:        1Kernel:      6.1.21-v8+Arch:        linux\/arm64Memory:      177 \/ 467 MiBRSS:         59 MiB$ free -h               total        used        free      shared  buff\/cache   availableMem:           467Mi       172Mi        87Mi       240Ki   265Mi       294Mi<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>59 \u041c\u0438\u0411 RSS \u0434\u0435\u043c\u043e\u043d\u0430; \u0432\u0435\u0441\u044c \u0445\u043e\u0441\u0442 \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0440\u0430\u0431\u043e\u0447\u0438\u043c \u043f\u043e\u0434\u043e\u043c \u2014 172 \u041c\u0438\u0411 \u0438\u0437 467, \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0435\u0449\u0451 \u043f\u043e\u0447\u0442\u0438 300. kubelet + containerd \u043d\u0430 \u044d\u0442\u0443 \u043f\u043b\u0430\u0442\u0443 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043f\u043e\u043c\u0435\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0431\u044b \u0432\u043e\u043e\u0431\u0449\u0435. \u0421\u043d\u043e\u0441\u043a\u0430: \u043f\u043e\u0434 \u0437\u0434\u0435\u0441\u044c \u043d\u0430 hostNetwork &#8212; Constellation CNI \u0442\u0440\u0435\u0431\u0443\u0435\u0442 \u044f\u0434\u0440\u043e 6.6+, \u0430 \u043d\u0430 Pi \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0435 6.1.<\/p>\n<h3>\u0411\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u0438 \u0447\u0442\u043e \u043d\u043e\u0434\u0430 \u0443\u043c\u0435\u0435\u0442 \u0441\u0432\u0435\u0440\u0445 kubelet<\/h3>\n<p>\u041f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u2014 \u043d\u0435 \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435, \u0447\u0442\u043e \u0432\u044b\u043f\u0430\u0434\u0430\u0435\u0442 \u0438\u0437 \u043e\u0442\u043a\u0430\u0437\u0430 \u043e\u0442 CRI. \u0414\u0430\u043b\u044c\u0448\u0435 \u2014 \u0432\u0435\u0449\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043b\u0438\u0431\u043e \u043f\u0440\u043e \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c, \u043b\u0438\u0431\u043e \u0443 \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u0433\u043e kubelet \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044e\u0442.<\/p>\n<h4>SecurityContext, \u043d\u043e fail-closed<\/h4>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u0430\u043d \u043f\u043e\u043b\u043d\u044b\u0439 SecurityContext: runAsUser\/runAsGroup\/fsGroup\/supplementalGroups, runAsNonRoot, allowPrivilegeEscalation \u2192 NoNewPrivileges, capabilities add\/drop, seccompProfile, sysctls, readOnlyRootFilesystem, privileged. \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043e\u0434\u0438\u043d: \u043f\u043e\u043b\u0435, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043d\u043e\u0434\u0430 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0447\u0435\u0441\u0442\u043d\u043e, <em>\u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442\u0441\u044f<\/em> \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u043e\u043d\u0444\u0438\u0433\u0430 \u2014 Warning Event FailedCreateContainerConfig \u043f\u0440\u044f\u043c\u043e \u0432 kubectl describe. \u042d\u0442\u043e \u043d\u0435 \u043a\u0430\u043c\u0435\u043d\u044c \u0432 \u043e\u0433\u043e\u0440\u043e\u0434 kubelet \u2014 \u043e\u043d \u0442\u0430\u043a\u0438\u0435 \u043f\u043e\u043b\u044f \u0442\u043e\u0436\u0435 \u043e\u0442\u043a\u043b\u043e\u043d\u044f\u0435\u0442. \u042d\u0442\u043e \u0441\u0442\u0440\u0430\u0445\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0442\u0438\u0432 \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u0441\u043e\u0431\u043b\u0430\u0437\u043d\u0430 \u043b\u044e\u0431\u043e\u0439 \u0440\u0435\u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 \u043d\u043e\u0434\u044b: \u043c\u043e\u043b\u0447\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u043e\u0434 \u0431\u0435\u0437 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u0442\u0430\u043a \u043f\u0440\u043e\u0449\u0435. \u0417\u0434\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043f\u0443\u0442\u044c \u0437\u0430\u043f\u0440\u0435\u0449\u0451\u043d \u043a\u0430\u043a \u043a\u043b\u0430\u0441\u0441: \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, seccompProfile: Localhost \u0447\u0435\u0440\u0435\u0437 systemd \u043d\u0435 \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u043f\u043e\u0434 \u0441 \u043d\u0438\u043c \u043d\u0435 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435, \u0430 \u043d\u0435 \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442 \u0431\u0435\u0437 \u043f\u0440\u043e\u0444\u0438\u043b\u044f.<\/p>\n<pre><code># runAsUser:1000 runAsGroup:1000 fsGroup:2000 supplementalGroups:[3000,4000], \u0441 emptyDir$ kubectl exec demo -- id # exec \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0432 kubeletuid=1000 gid=1000 groups=2000,3000,4000$ kubectl exec demo -- stat -c '%U:%G %A' \/dataroot:2000 drwxrwsr-x                       # fsGroup \u0432\u043b\u0430\u0434\u0435\u0435\u0442 \u0442\u043e\u043c\u043e\u043c, setgid \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u0435\u043d<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<h4>Root \u0432 \u043f\u043e\u0434\u0435 \u2014 \u043d\u0435 root \u043d\u0430 \u0445\u043e\u0441\u0442\u0435<\/h4>\n<p>userns-\u043c\u0430\u043f\u043f\u0438\u043d\u0433 \u0437\u0434\u0435\u0441\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u043b\u044f \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043f\u043e\u0434\u043e\u0432: UID 0 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0435\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0432\u044b\u0441\u043e\u043a\u0438\u0439 UID \u0445\u043e\u0441\u0442\u0430, \u0442\u0430\u043a \u0447\u0442\u043e \u044d\u0441\u043a\u0435\u0439\u043f \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0431\u0443\u0434\u0435\u0442 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u043a\u0430\u043a nobody. \u0412 \u0441\u0442\u043e\u043a\u043e\u0432\u043e\u043c kubelet user namespaces \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 opt-in.<\/p>\n<h4>Containment, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0438\u0434\u043d\u043e<\/h4>\n<ul>\n<li>\n<p>resources.limits \u2014 \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 cgroup-v2 caps (memory.max \/ cpu.max \/ pids.max), \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0438\u0432\u0430\u0435\u0442 systemd, \u0430 \u043d\u0435 \u044d\u043c\u0443\u043b\u0438\u0440\u0443\u0435\u0442 \u0440\u0430\u043d\u0442\u0430\u0439\u043c: \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0432\u044b\u0448\u0435\u0434\u0448\u0438\u0439 \u0437\u0430 \u043b\u0438\u043c\u0438\u0442, \u0443\u0431\u0438\u0432\u0430\u0435\u0442\u0441\u044f, \u0445\u043e\u0441\u0442 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0441\u0442\u0440\u0430\u0434\u0430\u0435\u0442.<\/p>\n<\/li>\n<li>\n<p>\u0424\u043e\u0440\u043a-\u0431\u043e\u043c\u0431\u044b: per-pod pids.max (<code>periapsis.io\/max-pids<\/code>, \u0434\u0435\u0444\u043e\u043b\u0442 4096 \u0432\u043c\u0435\u0441\u0442\u043e \u0443\u043d\u0430\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043e\u0442 systemd ~18874). \u0416\u0438\u0432\u044c\u0451\u043c: \u043f\u043e\u0434 \u0441 \u0444\u043e\u0440\u043a \u0431\u043e\u043c\u0431\u043e\u0439 \u0438 max-pids=64 \u0443\u043c\u0435\u0440 \u043e\u0431 <code>fork() EAGAIN<\/code>.<\/p>\n<\/li>\n<li>\n<p>OOM-\u0434\u0435\u0442\u0435\u043a\u0446\u0438\u044f: \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u043b\u043e\u0432\u0438\u0442 \u044d\u0442\u043e \u0438 \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u0442\u0430\u0432\u0438\u0442 OOMKilled. Eviction \u043f\u0440\u0438 node pressure \u0440\u0430\u043d\u0436\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0443 kubelet: QoS \u2192 priority \u2192 usage.<\/p>\n<\/li>\n<\/ul>\n<h4>\u0423\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0443 kubelet \u043d\u0435\u0442<\/h4>\n<ul>\n<li>\n<p>\u041e\u0442\u043a\u0430\u0437 API-\u0441\u0435\u0440\u0432\u0435\u0440\u0430: \u043f\u043e\u0434\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c, \u0434\u0435\u043c\u043e\u043d \u043d\u0435 \u043f\u0430\u0434\u0430\u0435\u0442, \u0430 \u043a\u043e\u0433\u0434\u0430 KAS \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f &#8212; \u043d\u043e\u0434\u0430 \u0441\u0430\u043c\u0430 \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442 \u0432 Ready (~44 \u0441, \u0431\u0435\u0437 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0430 \u0434\u0435\u043c\u043e\u043d\u0430).<\/p>\n<\/li>\n<li>\n<p>\u0412\u0437\u0440\u044b\u0432\u043d\u043e\u0439 \u0440\u0430\u0434\u0438\u0443\u0441: \u043a\u0430\u0436\u0434\u044b\u0439 pawn \u0436\u0438\u0432\u0451\u0442 \u0437\u0430 panic-firewall \u2014 \u043f\u0430\u043d\u0438\u043a\u0430 \u043e\u0434\u043d\u043e\u0433\u043e pawn \u043d\u0435 \u0440\u043e\u043d\u044f\u0435\u0442 \u043d\u0438 \u0445\u043e\u0441\u0442-\u0434\u0435\u043c\u043e\u043d, \u043d\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 pawn.<\/p>\n<\/li>\n<\/ul>\n<h4>P2P-\u0440\u0430\u0437\u0434\u0430\u0447\u0430 \u043e\u0431\u0440\u0430\u0437\u043e\u0432<\/h4>\n<p>OCI-\u0441\u043b\u043e\u0438 \u0436\u0438\u0432\u0443\u0442 \u0432 content-addressable store \u0438 \u0440\u0430\u0437\u0434\u0430\u044e\u0442\u0441\u044f \u043c\u0435\u0436\u0434\u0443 pawn \u0438 \u0445\u043e\u0441\u0442\u0430\u043c\u0438 peer-to-peer: \u0441\u043b\u043e\u0439, \u0441\u043a\u0430\u0447\u0430\u043d\u043d\u044b\u0439 \u043e\u0434\u043d\u0430\u0436\u0434\u044b, \u0434\u0430\u043b\u044c\u0448\u0435 \u0440\u0430\u0441\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443 \u0441\u0430\u043c. \u0412\u043f\u043b\u043e\u0442\u044c \u0434\u043e \u0432\u044b\u0440\u043e\u0436\u0434\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043b\u0443\u0447\u0430\u044f \u2014 \u043d\u043e\u0434\u0430 \u0442\u044f\u043d\u0435\u0442 \u043f\u0440\u0438\u0432\u0430\u0442\u043d\u044b\u0439 (403 \u043e\u0442 registry) \u043e\u0431\u0440\u0430\u0437 \u0446\u0435\u043b\u0438\u043a\u043e\u043c \u043e\u0442 \u0441\u043e\u0441\u0435\u0434\u0430, \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u0438 \u0441\u043b\u043e\u0438, \u0431\u0435\u0437 \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432 registry:<\/p>\n<pre><code>$ kubectl get eventsNormal  ResolvingManifest  pod\/wasix-engifire  Resolving image manifest: ghcr.io\/...\/wasix-info:latestNormal  PulledFromPeer     pod\/wasix-engifire  Layer a03d287ccca9 pulled from peer 192.168.100.200:12261 (h3, tier 0)Normal  Started            pod\/wasix-engifire  Container server started<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u041f\u0438\u0440\u044b \u0432\u044b\u0431\u0438\u0440\u0430\u044e\u0442\u0441\u044f \u043f\u043e \u0431\u043b\u0438\u0437\u043e\u0441\u0442\u0438 (subnet \u2192 local \u2192 remote), \u0442\u0440\u0430\u043d\u0441\u043f\u043e\u0440\u0442 \u2014 HTTP\/3 \u0441 fallback \u043d\u0430 TCP \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0438\u0440\u0430. \u0410 <code>apsis ingest<\/code> \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442 \u043e\u0431\u0440\u0430\u0437 \u0432 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0443 \u043d\u043e\u0434\u044b \u043f\u0440\u044f\u043c\u043e \u0438\u0437 tar \u2014 \u0438 \u043e\u043d \u0442\u0443\u0442 \u0436\u0435 \u0440\u0430\u0437\u0434\u0430\u0451\u0442\u0441\u044f P2P, \u0442\u0430\u043a \u0447\u0442\u043e \u043e\u0431\u0440\u0430\u0437 \u043f\u043e\u043f\u0430\u0434\u0430\u0435\u0442 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0437 registry.<\/p>\n<h4>\u0418 \u0434\u0432\u0430 \u0444\u0438\u043a\u0441\u0430 \u0443\u0435\u0445\u0430\u043b\u0438 \u0432 \u0441\u0430\u043c systemd<\/h4>\n<p>\u0427\u0430\u0441\u0442\u044c \u0431\u0430\u0433\u043e\u0432 \u0432 \u0441\u0430\u043c\u043e\u043c systemd:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/github.com\/systemd\/systemd\/pull\/41838\" rel=\"noopener noreferrer nofollow\">nspawn: fix EPERM when using &#8212;private-users with &#8212;network-namespace-path<\/a> (<strong>\u0441\u043c\u0435\u0440\u0436\u0435\u043d<\/strong>) \u2014 nspawn \u043f\u0430\u0434\u0430\u043b \u0441 EPERM, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043d\u0443\u0436\u043d\u044b user namespace (<code>--private-users<\/code>) \u0438 \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0435 \u043a \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u0435\u0442\u0435\u0432\u043e\u043c\u0443 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0443 (<code>--network-namespace-path<\/code>): inner child \u0441\u043d\u0430\u0447\u0430\u043b\u0430 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u043b\u0441\u044f \u0432 \u043d\u043e\u0432\u043e\u043c userns, \u0430 <code>setns()<\/code> \u0432 \u0447\u0443\u0436\u043e\u0439 netns \u043e\u0442\u0442\u0443\u0434\u0430 \u044f\u0434\u0440\u043e \u0443\u0436\u0435 \u043d\u0435 \u043f\u0443\u0441\u043a\u0430\u043b\u043e. \u0414\u043b\u044f Periapsis \u044d\u0442\u043e \u043d\u0435 \u044d\u043a\u0437\u043e\u0442\u0438\u043a\u0430, \u0430 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0434: userns-\u043c\u0430\u043f\u043f\u0438\u043d\u0433 \u0438\u0437 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0432\u044b\u0448\u0435 \u043f\u043b\u044e\u0441 join \u0432 netns, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u0436\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b CNI.<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/systemd\/systemd\/pull\/41897\" rel=\"noopener noreferrer nofollow\">nspawn: fix .mstack bind mounts being masked by &#8212;volatile=overlay<\/a> (\u043d\u0430 \u0440\u0435\u0432\u044c\u044e) \u2014 bind-\u043c\u0430\u0443\u043d\u0442\u044b \u0438\u0437 <code>.mstack<\/code>-\u043a\u0430\u0442\u0430\u043b\u043e\u0433\u0430 \u043c\u043e\u043b\u0447\u0430 \u0438\u0441\u0447\u0435\u0437\u0430\u043b\u0438 \u043f\u0440\u0438 <code>--volatile=overlay<\/code>: overlayfs \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u0443\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0435 mount points \u0432\u043d\u0443\u0442\u0440\u0438 lowerdir, \u0442\u0430\u043a \u0447\u0442\u043e mounts, \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043d\u0430 \u044d\u0442\u0430\u043f\u0435 assembly, \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u0432\u0435\u0436\u0438\u043c \u043e\u0432\u0435\u0440\u043b\u0435\u0435\u043c.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u00ab\u043f\u043e\u0447\u0435\u043c\u0443 systemd, \u0442\u0430\u043c \u0436\u0435 \u043d\u0435\u0442 \u0432\u0441\u0435\u0433\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432\u00bb: \u0442\u0430\u043c \u0435\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0432\u0441\u0451, \u0430 \u0447\u0435\u0433\u043e \u043d\u0435\u0442 \u2014 \u0442\u0443\u0434\u0430 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043d\u0435\u0441\u0442\u0438 \u043d\u0443 \u0438\u043b\u0438 \u043f\u043e\u0444\u0438\u043a\u0441\u0438\u0442\u044c.<\/p>\n<h3>\u0422\u0440\u0435\u0439\u0434-\u043e\u0444\u0444<\/h3>\n<p>\u042f \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e (\u0438 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e) \u0432\u044b\u0431\u0440\u0430\u043b OS-\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044e (\u043e\u0431\u0449\u0435\u0435 \u044f\u0434\u0440\u043e) \u0432\u043c\u0435\u0441\u0442\u043e \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u043e\u0439 \u0438\u043b\u0438 VM. \u042d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442: <strong>Periapsis \u043d\u0435 \u0434\u043b\u044f \u0432\u0440\u0430\u0436\u0434\u0435\u0431\u043d\u044b\u0445 \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u044b\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a.<\/strong> \u0414\u043b\u044f \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u043e\u0439 \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b, CI\/CD, edge \u0438 density-first \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u0435\u0432 \u044d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u043d: \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u0442\u0430 \u0436\u0435, \u0447\u0442\u043e \u0443 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 (namespaces + cgroups + seccomp\/caps \u043e\u0442 nspawn), \u0430 \u043d\u0430\u043b\u043e\u0433 \u043d\u0430 microVM \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442.<\/p>\n<p>\u0415\u0441\u0442\u044c \u0438 \u0442\u0440\u0435\u0442\u044c\u044f \u0442\u043e\u0447\u043a\u0430 \u043d\u0430 \u0448\u043a\u0430\u043b\u0435 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f\/\u043f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c \u2014 WASM-\u043f\u043e\u0434\u044b (\u043e \u043d\u0438\u0445 \u0432 \u0431\u043e\u043d\u0443\u0441\u0435): \u0434\u043b\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0438, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043d\u0443\u0436\u0435\u043d sandbox <em>\u0441\u0438\u043b\u044c\u043d\u0435\u0435<\/em> namespaces, \u043d\u043e \u0431\u0435\u0437 microVM, WASIp3 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0435 wasmtime \u0441 deny-by-default \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u043c. \u041d\u0435\u043f\u0440\u043e\u0430\u043d\u043d\u043e\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u043f\u043e\u0434 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0438\u0447\u0435\u0433\u043e \u2014 \u043d\u0438 host-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u0432, \u043d\u0438 \u0441\u0435\u0442\u0438, \u043d\u0438 env, \u043d\u0438 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b; \u043a\u0430\u0436\u0434\u043e\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0432\u044b\u0434\u0430\u0451\u0442\u0441\u044f \u044f\u0432\u043d\u043e, \u0430 \u043d\u0435\u0432\u044b\u0434\u0430\u043d\u043d\u044b\u0439 \u0438\u043c\u043f\u043e\u0440\u0442 \u2014 \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u0438\u043d\u0441\u0442\u0430\u043d\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f (\u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 WASI \u0438\u043b\u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0441\u0442\u0430\u0442\u044c\u044f\u0445). \u041f\u043b\u044e\u0441 \u043b\u0438\u043c\u0438\u0442 \u043f\u0430\u043c\u044f\u0442\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430: guest \u0443\u043f\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0432 \u0447\u0438\u0441\u0442\u044b\u0439 wasm-trap \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0437\u0430 \u043d\u0435\u0433\u043e \u0432\u043e\u0437\u044c\u043c\u0451\u0442\u0441\u044f OOM-killer.<\/p>\n<p>\u0412\u0442\u043e\u0440\u043e\u0439 \u043f\u0443\u043d\u043a\u0442: \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043d\u043e\u0434\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a containerd. \u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 <strong>Helm-\u0447\u0430\u0440\u0442<\/strong> Cilium \u043d\u0435 \u0432\u0441\u0442\u0430\u0451\u0442 \u043a\u0430\u043a \u0435\u0441\u0442\u044c (\u0421\u0430\u043c Cilium \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0431\u0435\u0437 \u0442\u0432\u0438\u043a\u043e\u0432, \u044d\u0442\u043e init-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0447\u0430\u0440\u0442\u0430, \u043b\u0435\u0437\u0443\u0449\u0438\u0435 \u0445\u043e\u0441\u0442\u0443 \u0432 \/proc\/sys), \u043d\u043e \u0443 \u043c\u0435\u043d\u044f \u0432\u0441\u0435-\u0440\u0430\u0432\u043d\u043e \u0444\u043e\u0440\u043a. \u042d\u0442\u043e \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u0430\u044f \u0446\u0435\u043d\u0430 \u0437\u0430 \u0436\u0438\u0437\u043d\u044c \u0432\u043d\u0435 CRI.<\/p>\n<h3>\u0421 \u0447\u0435\u043c \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u044e\u0442<\/h3>\n<p>\u041a\u043e\u0440\u043e\u0442\u043a\u043e \u043e \u0442\u043e\u043c, \u0447\u0435\u043c \u044d\u0442\u043e \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u2014 \u043e\u0442 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0445 \u0441\u043b\u043e\u0451\u0432 \u0441\u0442\u0435\u043a\u0430 \u043a \u0433\u043b\u0430\u0432\u043d\u043e\u043c\u0443 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e, \u0440\u0430\u0434\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0435\u0441\u044c \u043f\u043e\u0441\u0442.<\/p>\n<h4>vs k3s<\/h4>\n<p>k3s \u2014 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 <strong>control plane<\/strong> (\u043e\u0434\u0438\u043d \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a, kine \u0432\u043c\u0435\u0441\u0442\u043e etcd), \u043d\u043e \u043d\u043e\u0434\u0430 \u0443 \u043d\u0435\u0433\u043e \u0442\u0430 \u0436\u0435, \u0447\u0442\u043e \u0443 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e Kubernetes: kubelet + containerd + \u0442\u043e\u0442 \u0436\u0435 \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0432 110 \u043f\u043e\u0434\u043e\u0432. k3s \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, Periapsis \u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043d\u043e\u0434\u044b \u2014 \u043d\u043e \u0442\u0435\u043f\u0435\u0440\u044c \u0443\u043c\u0435\u0435\u0442 \u0438 \u043f\u0435\u0440\u0432\u043e\u0435: <code>perigeos<\/code> \u0441\u0430\u043c \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 control plane (apiserver + controller-manager + scheduler) \u0445\u043e\u043b\u043e\u0434\u043d\u044b\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u043c \u0438\u0437 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 kubeadm \u2014 \u0441\u0430\u043c \u0444\u043e\u0440\u043c\u0430\u0442 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u043e\u0432 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f, \u0443\u0431\u0440\u0430\u043d\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0434\u0435\u0440\u0436\u0430\u0442\u044c k3s\/kubeadm \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u043c \u043a\u0430\u043a \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u044b\u0439 \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0442\u043e\u0440; bootstrap \u0438 adopt \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u044f\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438. \u042d\u0442\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e homelab: \u043d\u0435\u0434\u0430\u0432\u043d\u043e \u043f\u043e\u0434\u043d\u044f\u043b \u0435\u0451 \u0441 \u043d\u0443\u043b\u044f \u043d\u0430 \u0447\u0438\u0441\u0442\u043e\u043c VPS (1 vCPU, 2 \u0413\u0411 RAM) &#8212; \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 kube-proxy, CoreDNS \u0438 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 control plane \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u0441\u044f \u0432 ~523 \u041c\u0411, \u0432\u0441\u0451 \u043f\u043e\u0434\u043d\u044f\u043b\u043e\u0441\u044c end-to-end \u0438 \u043e\u0442\u0432\u0435\u0447\u0430\u043b\u043e \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u0447\u0435\u0440\u0435\u0437 NodePort. \u041f\u043e \u043f\u0443\u0442\u0438 \u043d\u0430\u0448\u043b\u0438\u0441\u044c \u0438 \u0441\u0440\u0430\u0437\u0443 \u0431\u044b\u043b\u0438 \u043f\u043e\u0447\u0438\u043d\u0435\u043d\u044b \u043f\u0430\u0440\u0430 edge-\u043a\u0435\u0439\u0441\u043e\u0432 &#8212; \u0438\u043c\u0435\u043d\u043d\u043e \u0442\u0430\u043a \u044d\u0442\u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0438 \u0432\u0437\u0440\u043e\u0441\u043b\u0435\u0435\u0442. \u0422\u0430\u043a \u0447\u0442\u043e \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u043c\u0435\u0436\u0434\u0443 \u00ab\u043d\u043e\u0434\u0430\u00bb \u0438 \u00abcontrol plane\u00bb \u0442\u0443\u0442 \u043d\u0435 \u0436\u0451\u0441\u0442\u043a\u0430\u044f: \u043c\u043e\u0436\u043d\u043e \u0432\u0437\u044f\u0442\u044c k3s \u043f\u043e\u0432\u0435\u0440\u0445 perigeos, \u043a\u0430\u043a \u0438 \u0440\u0430\u043d\u044c\u0448\u0435, \u0430 \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0431\u0440\u0430\u0442\u044c \u0432\u043e\u0432\u0441\u0435.<\/p>\n<h4>vs LXC\/Incus<\/h4>\n<p>Incus &#8212; \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043d\u044b\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435, \u0431\u0435\u0437 Kubernetes \u0441\u0432\u0435\u0440\u0445\u0443: \u0441\u0432\u043e\u0439 CLI, \u0441\u0432\u043e\u0439 API, \u0441\u0432\u043e\u044f \u043c\u043e\u0434\u0435\u043b\u044c \u043f\u0440\u043e\u0444\u0438\u043b\u0435\u0439 \u0438 \u0441\u0435\u0442\u0435\u0439. Periapsis \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u043f\u043e\u0445\u043e\u0436\u0438\u0439 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 (namespaces + cgroups \u0447\u0435\u0440\u0435\u0437 systemd-nspawn, \u0442\u043e\u0442 \u0436\u0435 \u043a\u043b\u0430\u0441\u0441, \u0447\u0442\u043e LXC), \u043d\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u043d\u043e\u0434\u043e\u0439 <strong>Kubernetes<\/strong>: \u0442\u043e\u0442 \u0436\u0435 API-\u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a, Deployments, Services, NetworkPolicy, \u0432\u0435\u0441\u044c \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0438 \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 YAML, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0432\u0441\u0435 \u0443\u0436\u0435 \u0437\u043d\u0430\u044e\u0442. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u043d\u0435 \u0432 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438, \u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u0432\u0435\u0440\u0445\u0443.<\/p>\n<h4>vs minikube \/ kind \/ k3d<\/h4>\n<p>\u041e\u0434\u043d\u043e\u043d\u043e\u0434\u043e\u0432\u044b\u0439 (\u0438\u043b\u0438 \u043f\u043e\u0434-\u0432-\u043f\u043e\u0434\u0435, \u043a\u0430\u043a kind\/k3d) \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u043d\u0430 \u043d\u043e\u0443\u0442\u0431\u0443\u043a\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f. \u041e\u043d \u043d\u0435 \u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0442\u043e, \u0440\u0430\u0434\u0438 \u0447\u0435\u0433\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u0435\u043d Kubernetes: \u043a\u0430\u043a \u0432\u0435\u0434\u0451\u0442 \u0441\u0435\u0431\u044f (anti-)affinity, topology spread, Service\/NetworkPolicy, CNI <em>\u043c\u0435\u0436\u0434\u0443<\/em> \u043d\u043e\u0434\u0430\u043c\u0438, PodDisruptionBudget \u043f\u0440\u0438 cordon\/drain \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u043d\u043e\u0434\u044b \u2014 \u0434\u0430 \u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0442\u0430\u043a, \u043a\u0442\u043e-\u0442\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u043b \u0447\u0442\u043e Kubernetes \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u043e Enterprise. \u041e\u0434\u0438\u043d \u0445\u043e\u0441\u0442 Periapsis \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a 30+ \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0445 pawn, \u044d\u0442\u043e \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0439 \u043c\u043d\u043e\u0433\u043e\u043d\u043e\u0434\u043e\u0432\u044b\u0439 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0434\u043b\u044f \u0442\u0435\u0441\u0442\u043e\u0432, \u0430 \u043d\u0435 \u0438\u043c\u0438\u0442\u0430\u0446\u0438\u044f \u043e\u0434\u043d\u043e\u0439 \u043d\u043e\u0434\u044b \u043f\u043e\u0434 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438.<\/p>\n<h4>vs Knative<\/h4>\n<p>\u0423 Periapsis \u0435\u0441\u0442\u044c \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 scale-to-zero, \u0446\u0435\u043b\u044b\u0445 \u0434\u0432\u0430 \u0442\u0438\u0440\u0430:<\/p>\n<ul>\n<li>\n<p><strong>Frozen<\/strong> (<code>periapsis.io\/freeze-after<\/code>) \u2014 \u0442\u043e\u0442 \u0436\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0442\u0430 \u0436\u0435 \u043f\u0430\u043c\u044f\u0442\u044c, \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u043d\u044f\u0442 \u0441 CPU. \u041f\u0440\u043e\u0433\u0440\u0435\u0442\u044b\u0439 JIT, \u043f\u0443\u043b\u044b \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u0439, \u043a\u044d\u0448\u0438, \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u0435 \u0432\u0435\u0441\u0430 \u043c\u043e\u0434\u0435\u043b\u0438 \u2014 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0451\u043f\u043b\u044b\u043c; \u0440\u0430\u0437\u043c\u043e\u0440\u043e\u0437\u043a\u0430 \u2014 \u044d\u0442\u043e \u0441\u043d\u044f\u0442\u0438\u0435 freeze-\u0444\u043b\u0430\u0433\u0430, \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0441 \u0442\u043e\u0439 \u0436\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0438. RAM \u044d\u0442\u043e \u043d\u0435 \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 (\u0447\u0435\u0441\u0442\u043d\u043e: freeze \u043d\u0435 \u043e\u0442\u0434\u0430\u0451\u0442 \u043f\u0430\u043c\u044f\u0442\u044c), \u044d\u043a\u043e\u043d\u043e\u043c\u0438\u0442 CPU \u0438 \u0432\u0440\u0435\u043c\u044f \u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>Idled<\/strong> (<code>periapsis.io\/idle-after<\/code>) \u2014 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043f\u043e-\u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u043c\u0443, \u043d\u043e \u043f\u043e\u0434 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f: \u043e\u043d \u0432\u0438\u0434\u0435\u043d \u0432 API-\u0441\u0435\u0440\u0432\u0435\u0440\u0435, netns \u0438 IP \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b, \u043e\u0431\u0440\u0430\u0437 \u043d\u0430 \u043c\u0435\u0441\u0442\u0435. \u041f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u2014 \u043d\u043e\u0432\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0432 \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u041e\u0431\u0449\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0441 Knative Serving \u0442\u0430 \u0436\u0435: \u043f\u043e\u0434, \u0434\u043e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u0447\u0430\u043b\u0441\u044f, \u0441\u0445\u043b\u043e\u043f\u044b\u0432\u0430\u0435\u0442\u0441\u044f. \u041d\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0443\u0441\u0442\u0440\u043e\u0435\u043d\u043e \u0438\u043d\u0430\u0447\u0435: \u0443 Knative Deployment Revision\u2019\u0430 \u0443\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 0 \u0440\u0435\u043f\u043b\u0438\u043a, ReplicaSet \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u043e\u0434 \u0446\u0435\u043b\u0438\u043a\u043e\u043c, \u0430 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u2014 \u044d\u0442\u043e \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 <strong>\u043d\u043e\u0432\u044b\u0439<\/strong> \u043f\u043e\u0434: \u043d\u043e\u0432\u044b\u0439 UID, \u043d\u043e\u0432\u044b\u0439 IP, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 CNI IPAM \u0441 \u043d\u0443\u043b\u044f.<\/p>\n<p>\u0421 \u043c\u043e\u0435\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0446\u0438\u0444\u0440\u0430 \u0435\u0441\u0442\u044c: 10 \u0447\u0438\u0441\u0442\u044b\u0445 \u0446\u0438\u043a\u043b\u043e\u0432 STZ (\u0437\u0430\u043c\u0435\u0440 06.07.26) \u2014 \u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u0437 Idled \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e <strong>1.4-1.6 \u0441<\/strong>, \u0438 \u044d\u0442\u043e \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u043f\u043e\u0434: UID, IP \u0438 netns \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b. \u041f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u0437 Frozen \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0437\u0430\u043c\u0435\u0440\u044f\u043b \u2014 \u0442\u0430\u043c \u043f\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u043d\u0435\u0447\u0435\u0433\u043e \u043c\u0435\u0440\u0438\u0442\u044c, \u043a\u0440\u043e\u043c\u0435 \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 cgroupfs. \u0426\u0438\u0444\u0440\u0443 Knative \u0440\u044f\u0434\u043e\u043c \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0441\u0442\u0430\u0432\u043b\u044e: \u0441\u0432\u043e\u0435\u0433\u043e \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u043e\u0433\u043e \u0437\u0430\u043c\u0435\u0440\u0430 \u0443 \u043c\u0435\u043d\u044f \u043d\u0435\u0442, \u0430 \u0447\u0443\u0436\u0438\u0435 cold-start \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0437\u0430\u0432\u0438\u0441\u044f\u0442 \u043e\u0442 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u0447\u0442\u043e\u0431\u044b \u0447\u0435\u0441\u0442\u043d\u043e \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0442\u044c. \u041f\u043e \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0443 \u044d\u0442\u043e \u0432 \u043b\u044e\u0431\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u2014 \u0443 Knative \u201c\u043f\u0440\u043e\u0431\u0443\u0436\u0434\u0435\u043d\u0438\u0435\u201d \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434 \u0441 \u043d\u0443\u043b\u044f, \u0442.\u0435. \u201c\u0437\u0430\u043c\u043e\u0440\u043e\u0437\u043a\u0430\u201d \u0443 \u043d\u0438\u0445 \u2014 \u044d\u0442\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435.<\/p>\n<h4>vs runwasi<\/h4>\n<p>runwasi \u2014 containerd v2 shim: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 Wasm-\u043c\u043e\u0434\u0443\u043b\u044c \u0432\u043c\u0435\u0441\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e OCI-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043d\u043e \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f <strong>\u0432\u043d\u0443\u0442\u0440\u0438<\/strong> CRI\/containerd\/shim-\u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u2014 \u0442\u043e\u0442 \u0436\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 workload, \u0442\u043e\u0442 \u0436\u0435 \u0441\u043b\u043e\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u043a\u0430\u043a \u0440\u0430\u0437 \u0432\u044b\u043a\u0438\u0434\u044b\u0432\u0430\u0435\u0442, \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043c\u0435\u0441\u0442\u043e runc \u2014 Wasm-\u0440\u0430\u043d\u0442\u0430\u0439\u043c.<\/p>\n<p>\u0423 Periapsis \u044d\u0442\u043e <code>runtimeClassName: trail<\/code> \u2014 WASIp2\/p3 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u0442\u0441\u044f \u0445\u043e\u0441\u0442\u043e\u0432\u044b\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e, \u043f\u0440\u0438\u0441\u043e\u0435\u0434\u0438\u043d\u0451\u043d\u043d\u044b\u043c \u043a netns \u043f\u043e\u0434\u0430: \u0431\u0435\u0437 shim, \u0431\u0435\u0437 \u043b\u0438\u0448\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u043d\u0430 workload. (\u0420\u0430\u043d\u043d\u0438\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0435 \u043a\u043b\u0430\u0441\u0441\u044b <code>wasmtime<\/code>\/<code>wasmedge<\/code>\/<code>wasmer<\/code> \u043a\u043e\u043d\u0441\u043e\u043b\u0438\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u0432 \u043e\u0434\u0438\u043d <code>trail<\/code>.) \u0422\u043e\u0442 \u0436\u0435 \u0442\u0435\u0437\u0438\u0441, \u0447\u0442\u043e \u0438 \u0432 \u201c\u0417\u0430\u0447\u0435\u043c\u201d (\u043d\u0435\u0442 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438 \u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u043d\u0430 \u0445\u043e\u0441\u0442\u0435), \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438\u043c\u0435\u043d\u0451\u043d\u043d\u044b\u0439 \u043a Wasm, \u0430 \u043d\u0435 \u043a OCI-\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c.<\/p>\n<h4>vs kubelet<\/h4>\n<p>\u042d\u0442\u043e, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 \u2014 \u0440\u0430\u0434\u0438 \u043d\u0435\u0433\u043e \u0432\u0435\u0441\u044c \u043f\u043e\u0441\u0442. \u0412\u0441\u0435 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f \u0432\u044b\u0448\u0435 \u043f\u0440\u043e \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 \u0441\u043b\u043e\u0438 \u0441\u0442\u0435\u043a\u0430 (control plane, \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u0431\u0435\u0437 Kubernetes, \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0435\u0432-\u043a\u043b\u0430\u0441\u0442\u0435\u0440, scale-to-zero, Wasm-\u0440\u0430\u043d\u0442\u0430\u0439\u043c). \u042d\u0442\u043e \u2014 \u043f\u0440\u043e \u0441\u0430\u043c\u0443 \u043d\u043e\u0434\u0443.<\/p>\n<p>\u041f\u0443\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043d\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0439 \u043d\u043e\u0434\u0435: kubelet \u2192 CRI \u2192 containerd \u2192 containerd-shim \u2192 runc \u2192 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0438 \u0441\u0432\u043e\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441, \u0441\u0432\u043e\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435, \u0441\u0432\u043e\u0439 \u0440\u0435\u0441\u0442\u0430\u0440\u0442 \u0438 \u0441\u0432\u043e\u0438 \u0431\u0430\u0433\u0438. \u041f\u0443\u0442\u044c \u0442\u043e\u0433\u043e \u0436\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0437\u0434\u0435\u0441\u044c: perigeos \u2192 D-Bus \u2192 systemd \u2192 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u041f\u0440\u0438\u0447\u0451\u043c perigeos \u0432 \u044d\u0442\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0435 \u043d\u0435 \u0441\u0443\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440, \u0430 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u043e\u0440: systemd \u0441\u0430\u043c \u0441\u043b\u0435\u0434\u0438\u0442 \u0437\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438.<\/p>\n<p>\u0418\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u043a\u0440\u0430\u0449\u0435\u043d\u0438\u044f \u0432\u044b\u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u0441\u0451 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u2014 \u0438 \u043f\u043e\u0447\u0442\u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u0438\u0437 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c <em>\u0434\u0435\u043b\u0430\u0442\u044c<\/em>, \u043e\u043d\u043e \u0441\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u0441\u0430\u043c\u043e:<\/p>\n<ul>\n<li>\n<p>\u041b\u043e\u0433\u0438 \u043d\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0430\u0433\u0435\u043d\u0442 \u043f\u043e \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c: \u043e\u043d\u0438 \u0443\u0436\u0435 \u0432 journald, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u0434 \u2014 \u044d\u0442\u043e \u044e\u043d\u0438\u0442.<\/p>\n<\/li>\n<li>\n<p>Zero-downtime \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u043c\u043e\u043d\u0430 \u2014 \u043d\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0430 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435: \u043f\u043e\u0434\u044b \u043d\u0435 \u0434\u0435\u0442\u0438 perigeos, \u043e\u043d\u0438 \u0434\u0435\u0442\u0438 systemd, \u0438 \u0440\u0435\u0441\u0442\u0430\u0440\u0442 \u0434\u0435\u043c\u043e\u043d\u0430 \u0438\u0445 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 crictl &#8212; <code>apsis<\/code>, <code>machinectl<\/code>, <code>journalctl<\/code> \u0438 <code>systemctl<\/code> \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e\u0442 \u0432\u0441\u0451 \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e.<\/p>\n<\/li>\n<li>\n<p>\u201c\u041d\u043e\u0434\u0430 != \u0445\u043e\u0441\u0442\u201d: \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u0443\u044e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 Kubernetes, 30 pawn \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0445\u043e\u0441\u0442\u0435 \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e 30 Pawns \u0441 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\u043c\u0438.<\/p>\n<\/li>\n<\/ul>\n<p>\u0418 \u0447\u0442\u043e\u0431\u044b \u0431\u044b\u043b\u043e \u0441\u043e\u0432\u0441\u0435\u043c \u0447\u0435\u0441\u0442\u043d\u043e: kubelet \u2014 \u043d\u0435 \u043e\u0448\u0438\u0431\u043a\u0430. \u041e\u043d \u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f, \u043a\u043e\u0433\u0434\u0430 \u00ab\u043d\u043e\u0434\u0430\u00bb \u0437\u043d\u0430\u0447\u0438\u043b\u043e \u00ab\u0436\u0435\u043b\u0435\u0437\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430\u00bb, Docker \u0431\u044b\u043b \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c, \u0430 systemd \u0435\u0449\u0451 \u043d\u0435 \u0443\u043c\u0435\u043b \u0438 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0443\u043c\u0435\u0435\u0442 \u0441\u0435\u0439\u0447\u0430\u0441. \u041e\u043d \u0441\u0434\u0435\u043b\u0430\u043b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u043a\u0443\u0447\u043d\u043e\u0439, \u043d\u0430\u0434\u0451\u0436\u043d\u043e\u0439 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0435\u0439 \u2014 \u0438 \u0437\u0430\u0441\u043b\u0443\u0436\u0438\u043b \u043f\u0430\u043c\u044f\u0442\u043d\u0438\u043a.<\/p>\n<p>\u041f\u0440\u043e\u0441\u0442\u043e \u043f\u0430\u043c\u044f\u0442\u043d\u0438\u043a\u0443 \u043f\u0440\u0438\u0448\u043b\u043e \u0432\u0440\u0435\u043c\u044f \u043c\u0435\u043d\u044b.<\/p>\n<h3>\u0411\u043e\u043d\u0443\u0441: WASM-\u043f\u043e\u0434\u044b \u0431\u0435\u0437 nspawn<\/h3>\n<p>\u0422\u043e\u0442 \u0436\u0435 \u0442\u0435\u0437\u0438\u0441 \u2014 \u0443\u0431\u0440\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443 \u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u2014 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<p>Periapsis, \u0432 \u043e\u0431\u0449\u0435\u043c-\u0442\u043e, \u0432\u0441\u0451 \u0440\u0430\u0432\u043d\u043e, \u0447\u0442\u043e \u0438 \u0447\u0435\u0440\u0435\u0437 \u0447\u0442\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c: \u0434\u043b\u044f \u0440\u0435\u043a\u043e\u043d\u0441\u0430\u0439\u043b\u0435\u0440\u0430 \u043f\u043e\u0434 \u2014 \u044d\u0442\u043e \u00ab\u0442\u043e, \u0447\u0442\u043e \u0434\u043e\u043b\u0436\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c\u00bb, \u0430 \u0447\u0435\u043c \u043e\u043d\u043e \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u2014 nspawn-\u043c\u0430\u0448\u0438\u043d\u043e\u0439 \u0438\u0437 OCI-\u043e\u0431\u0440\u0430\u0437\u0430, \u0445\u043e\u0441\u0442-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0438\u043b\u0438 wasm-\u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c \u0432 netns \u043f\u043e\u0434\u0430, \u0434\u0430 \u0445\u043e\u0442\u044c VM \u2014 \u0440\u0435\u0448\u0430\u0435\u0442 runtimeClassName. \u041d\u0438 \u043e\u0434\u043d\u0430 \u0438\u0437 \u0432\u044b\u043a\u0438\u043d\u0443\u0442\u044b\u0445 \u043f\u0440\u043e\u0441\u043b\u043e\u0435\u043a \u043d\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u043d\u0438 \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432.<\/p>\n<p>\u041f\u043e\u0434 \u0441 <code>runtimeClassName: trail<\/code> \u2014 \u044d\u0442\u043e \u043d\u0435 OCI-\u043e\u0431\u0440\u0430\u0437 \u0441 wasm-\u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0438 \u043d\u0435 containerd-shim (\u043a\u0430\u043a runwasi), \u0430 WASIp2\/p3 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442, \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u0439 \u0445\u043e\u0441\u0442\u043e\u0432\u044b\u043c \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u043e\u043c \u043f\u0440\u044f\u043c\u043e \u0432 netns \u043f\u043e\u0434\u0430. Pod IP, Services, NetworkPolicy, \u043b\u043e\u0433\u0438 \u0432 journald \u2014 \u0432\u0441\u0451 \u043a\u0430\u043a \u0443 \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430, \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u043c\u0435\u0441\u0442\u043e rootfs \u2014 \u043e\u0434\u0438\u043d <code>.wasm<\/code> \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442, \u0430 \u0432\u043c\u0435\u0441\u0442\u043e capability-\u043d\u0430\u0431\u043e\u0440\u0430 Linux \u2014 deny-by-default \u043f\u0440\u043e\u0444\u0438\u043b\u044c \u0438\u0437 \u201c\u0422\u0440\u0435\u0439\u0434-\u043e\u0444\u0444\u0430\u201d.<\/p>\n<p>Wasm HTTP-\u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u0435\u0440\u0436\u0430\u043b \u043f\u043e\u0434 k6 <strong>~14 \u0442\u044b\u0441\u044f\u0447 rps \u0441 \u043d\u0443\u043b\u0451\u043c \u043e\u0448\u0438\u0431\u043e\u043a<\/strong> (\u043c\u0435\u0434\u0438\u0430\u043d\u0430 5.4 \u043c\u0441, 200 VU) \u2014 \u0437\u0430\u043c\u0435\u0440 \u043e\u0442 21.06.26, \u0435\u0449\u0451 \u043d\u0430 \u0440\u0430\u043d\u043d\u0435\u043c WASIX-\u043a\u043b\u0430\u0441\u0441\u0435 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430; \u043d\u044b\u043d\u0435\u0448\u043d\u0438\u0439 <code>trail<\/code> \u2014 \u044d\u0442\u043e \u0443\u0436\u0435 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u043d\u0430\u044f \u043c\u043e\u0434\u0435\u043b\u044c (\u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043a \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044e) WASIp2\/p3, \u0432\u043a\u043b\u044e\u0447\u0430\u044f \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0438\u0435 async-\u044d\u043a\u0441\u043f\u043e\u0440\u0442\u044b WASI 0.3.<\/p>\n<p>\u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u0442\u0441\u044f \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432 \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442 \u0443\u0436\u0435 \u043d\u0435 \u0432\u043b\u0435\u0437\u0430\u0435\u0442: \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u044b, \u0441\u0432\u044f\u0437\u044b\u0432\u0430\u0435\u043c\u044b\u0435 \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 WIT-\u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u0432 \u043e\u0434\u043d\u043e\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 (\u0432\u044b\u0437\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u00ab\u043f\u043e\u0434\u0430\u043c\u0438\u00bb \u0437\u0430 \u0441\u043e\u0442\u043d\u0438 \u043d\u0430\u043d\u043e\u0441\u0435\u043a\u0443\u043d\u0434 \u0432\u043c\u0435\u0441\u0442\u043e \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u043a\u0443\u043d\u0434 kernel IPC), cooperative checkpoint\/restore \u2014 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0441\u0435\u0440\u0438\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0441\u0432\u043e\u0451 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0441\u0430\u043c, \u0440\u0430\u043d\u0442\u0430\u0439\u043c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442 \u0435\u0433\u043e \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u0441\u0442\u0430\u0440\u0442 \u2014 \u0438 \u0436\u0438\u0432\u043e\u0439 \u043f\u0435\u0440\u0435\u0435\u0437\u0434 stateful-\u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430 \u043c\u0435\u0436\u0434\u0443 \u0445\u043e\u0441\u0442\u0430\u043c\u0438, \u0432\u043a\u043b\u044e\u0447\u0430\u044f x86 \u2192 arm64: <code>.wasm<\/code> \u043d\u0435 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d \u043a \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u0430 \u0447\u0435\u043a\u043f\u043e\u0438\u043d\u0442 \u2014 \u044d\u0442\u043e \u0431\u0430\u0439\u0442\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043d\u0435 \u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0441\u0442\u0435\u043a. \u041e\u0431 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0441\u0442.<\/p>\n<h3>\u0427\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u043e\u0433\u0430\u0442\u044c<\/h3>\n<p>\u041f\u0443\u0431\u043b\u0438\u0447\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439: <a href=\"https:\/\/github.com\/apsis-io\/showcase\" rel=\"noopener noreferrer nofollow\"><strong>https:\/\/github.com\/apsis-io\/showcase<\/strong><\/a> \u2014 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0438 \u0441 \u0441\u044b\u0440\u044b\u043c\u0438 \u0442\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438, \u043e\u0431\u0437\u043e\u0440 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0435\u0439 \u0438 \u043c\u043e\u0434\u0435\u043b\u0438 pawn, public issue tracker.<\/p>\n<p>\u041f\u0440\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438. Periapsis \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d; \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u2014 <strong>BUSL-1.1<\/strong> (\u0442\u0430 \u0436\u0435 \u043c\u043e\u0434\u0435\u043b\u044c, \u0447\u0442\u043e \u0443 \u0440\u044f\u0434\u0430 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0445 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u043d\u044b\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432). \u041f\u043e-\u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u0437\u043d\u0430\u0447\u0438\u0442: \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u043e \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u2014 \u043f\u0440\u043e\u0434, \u0434\u0435\u0432, homelab, research, \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u044f\u044f \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438; \u043d\u0435\u043b\u044c\u0437\u044f \u2014 \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u043a\u0430\u043a hosted\/managed \u0441\u0435\u0440\u0432\u0438\u0441 (SaaS\/XaaS), \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438 \u0431\u0430\u043d\u0434\u043b\u0438\u0442\u044c \u0432 edge\/IoT-\u043f\u0440\u043e\u0434\u0443\u043a\u0442\u044b \u0438 \u0431\u0440\u0430\u0442\u044c \u0434\u0435\u043d\u044c\u0433\u0438 \u0437\u0430 \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0447\u0443\u0436\u043e\u0439 \u0438\u043d\u0444\u0440\u043e\u0439. \u041a\u043e\u043d\u0441\u0430\u043b\u0442\u0438\u043d\u0433 \u043d\u0430 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430 \u2014 \u043c\u043e\u0436\u043d\u043e. \u0412\u0430\u0436\u043d\u044b\u0439 \u043d\u044e\u0430\u043d\u0441, \u0447\u0442\u043e\u0431\u044b \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u0431\u043e\u044f\u043b\u0441\u044f \u0437\u0440\u044f: \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c <em>\u043d\u0430<\/em> Periapsis \u0441\u0432\u043e\u0439 \u043a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0438\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442 \u0438\u043b\u0438 SaaS (\u043a\u0430\u043a Fly.io) \u2014 \u043c\u043e\u0436\u043d\u043e, \u044d\u0442\u043e \u0438 \u0435\u0441\u0442\u044c \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b; \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u043e \u043f\u0440\u043e\u0434\u0430\u0432\u0430\u0442\u044c \u043a\u0430\u043a \u0443\u0441\u043b\u0443\u0433\u0443 \u0441\u0430\u043c Periapsis \u2014 \u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0438\u043d\u0433, \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u044e, \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435. \u0418 \u044d\u0442\u043e \u043d\u0435 \u043d\u0430\u0432\u0441\u0435\u0433\u0434\u0430: \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0435\u043b\u0438\u0437 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0434 GPL-3.0-or-later \u043d\u0435 \u043f\u043e\u0437\u0434\u043d\u0435\u0435 \u0447\u0435\u043c \u0447\u0435\u0440\u0435\u0437 4 \u0433\u043e\u0434\u0430 \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u0445\u043e\u0434\u0430. \u041f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432 showcase-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u041f\u043e\u0447\u0435\u043c\u0443 \u0442\u0430\u043a: \u044f \u0441\u043e\u043b\u043e-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a, \u0438 \u044d\u0442\u043e \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439 \u0440\u0430\u0437\u043c\u0435\u043d \u2014 \u043d\u0430\u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u043e, \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043f\u0440\u043e\u0435\u043a\u0442 \u0432 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 R&amp;D \u0434\u043b\u044f \u0447\u0443\u0436\u043e\u0433\u043e managed-\u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<p>\u041a\u043e\u043c\u043c\u0435\u0440\u0447\u0435\u0441\u043a\u0430\u044f \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u044f \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u044d\u0442\u0438\u0445 \u0443\u0441\u043b\u043e\u0432\u0438\u0439 \u0438 \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437-\u0432\u043e\u043f\u0440\u043e\u0441\u044b \u2014 \u0432 \u043b\u0438\u0447\u043a\u0443 \u0425\u0430\u0431\u0440\u0430 \u0438\u043b\u0438 \u043a\u043e\u043d\u0442\u0430\u043a\u0442\u044b \u0438\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f.<\/p>\n<h3>FAQ (\u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u044e libastral.so)<\/h3>\n<ul>\n<li>\n<p><strong>\u00ab\u042d\u0442\u043e \u0436\u0435 \u0432\u0435\u043b\u043e\u0441\u0438\u043f\u0435\u0434, \u0435\u0441\u0442\u044c k3s\u00bb.<\/strong> k3s \u2014 \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u044b\u0439 <em>control plane<\/em> (\u043e\u0434\u0438\u043d \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a, kine \u0432\u043c\u0435\u0441\u0442\u043e etcd). \u041d\u043e\u0434\u0430 \u0443 \u043d\u0435\u0433\u043e \u0442\u0430 \u0436\u0435 \u0441\u0430\u043c\u0430\u044f: kubelet + containerd + \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0432 110 \u043f\u043e\u0434\u043e\u0432. \u041c\u044b \u0440\u0435\u0448\u0430\u0435\u043c \u0440\u0430\u0437\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0438 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u044b \u2014 \u0430\u043f\u0440\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u0442\u0435\u043d\u0434 \u0438\u0437 \u00ab\u0426\u0438\u0444\u0440\u00bb \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u043e\u0434 k3s.<\/p>\n<\/li>\n<li>\n<p><strong>\u00ab\u0427\u0435\u043c \u044d\u0442\u043e \u043b\u0443\u0447\u0448\u0435 LXC\/Incus?\u00bb<\/strong> \u0422\u0435\u043c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u043e\u0434\u0430 Kubernetes: API-\u0441\u0435\u0440\u0432\u0435\u0440, \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a, Deployments, Services, NetworkPolicy &#8212; \u0432\u0435\u0441\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439 \u0438 \u0432\u0441\u044f \u044d\u043a\u043e\u0441\u0438\u0441\u0442\u0435\u043c\u0430 YAML, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0430 \u0443\u0436\u0435 \u0437\u043d\u0430\u0435\u0442. \u0418\u0437\u043e\u043b\u044f\u0446\u0438\u043e\u043d\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0438\u0442\u0438\u0432 \u043f\u043e\u0445\u043e\u0436\u0438\u0439, \u0440\u0430\u0437\u043d\u0438\u0446\u0430 \u2014 \u0432\u043e \u0432\u0441\u0451\u043c, \u0447\u0442\u043e \u0441\u0432\u0435\u0440\u0445\u0443.<\/p>\n<\/li>\n<li>\n<p><strong>\u00absystemd-nspawn &#8212; \u044d\u0442\u043e \u043d\u0435\u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e\u00bb.<\/strong> \u041c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0442\u043e\u0442 \u0436\u0435, \u0447\u0442\u043e \u0443 runc\/docker\/containerd: namespaces + cgroups + seccomp\/caps. \u0427\u0442\u043e \u043f\u0440\u0430\u0432\u0434\u0430 &#8212; \u0432 \u043f\u0440\u043e\u0434\u0435 nspawn \u043e\u0431\u043a\u0430\u0442\u0430\u043d \u043c\u0435\u043d\u044c\u0448\u0435. \u042d\u0442\u043e\u0442 \u0440\u0438\u0441\u043a \u044f \u0437\u043d\u0430\u044e \u0438 \u0441\u0447\u0438\u0442\u0430\u044e \u043e\u043f\u043b\u0430\u0447\u0435\u043d\u043d\u044b\u043c: \u0432\u0437\u0430\u043c\u0435\u043d \u0438\u0441\u0447\u0435\u0437\u0430\u0435\u0442 \u0446\u0435\u043b\u044b\u0439 \u0441\u043b\u043e\u0439 \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c\u0438, \u0441\u0432\u043e\u0438\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u0441\u0432\u043e\u0438\u043c\u0438 \u0431\u0430\u0433\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u00ab\u0421\u043b\u043e\u043c\u0430\u043b\u0430\u0441\u044c \u0442\u0430\u0447\u043a\u0430 \u2014 \u0441\u043b\u043e\u043c\u0430\u043b\u0438\u0441\u044c \u0441\u0440\u0430\u0437\u0443 100 \u043d\u043e\u0434\u00bb.<\/strong> \u041d\u0430\u0440\u0435\u0437\u043a\u0430 \u043d\u0430 pawn \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 \u043d\u043e\u0432\u044b\u0439 failure domain: \u0445\u043e\u0441\u0442 \u043a\u0430\u043a \u0431\u044b\u043b \u0435\u0434\u0438\u043d\u043e\u0439 \u0442\u043e\u0447\u043a\u043e\u0439 \u043e\u0442\u043a\u0430\u0437\u0430, \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u2014 \u0447\u0442\u043e \u0441 \u043e\u0434\u043d\u043e\u0439 \u043d\u043e\u0434\u043e\u0439, \u0447\u0442\u043e \u0441 \u0442\u0440\u0438\u0434\u0446\u0430\u0442\u044c\u044e (\u0441\u043c. \u201cNode != host\u201d \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435). \u041f\u0430\u0434\u0430\u0435\u0442 \u0445\u043e\u0441\u0442 \u2014 \u043f\u0430\u0434\u0430\u0435\u0442 \u0432\u0441\u0451, \u0447\u0442\u043e \u043d\u0430 \u043d\u0451\u043c \u043a\u0440\u0443\u0442\u0438\u043b\u043e\u0441\u044c, \u043f\u0440\u0438 \u043b\u044e\u0431\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435; \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0435, \u0430 \u043d\u0435 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. HA \u043a\u0430\u043a \u0441\u0442\u0440\u043e\u0438\u043b\u0430\u0441\u044c \u043d\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0445\u043e\u0441\u0442\u0430\u0445 (anti-affinity, topology spread), \u0442\u0430\u043a \u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u00ab\u0413\u0434\u0435 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u0438?\u00bb<\/strong> \u0421\u043c. \u00ab\u0427\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u043e\u0433\u0430\u0442\u044c\u00bb: showcase-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0441 \u0431\u0435\u043d\u0447\u043c\u0430\u0440\u043a\u0430\u043c\u0438 \u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0435\u0439 \u0443\u0436\u0435 \u043e\u0442\u043a\u0440\u044b\u0442, \u0442\u0440\u0430\u043d\u0441\u043a\u0440\u0438\u043f\u0442\u044b \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c\u044b. \u041f\u043e\u043b\u043d\u044b\u0439 \u0442\u0435\u043a\u0441\u0442 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0438 \u0442\u0430\u043c \u0436\u0435.<\/p>\n<\/li>\n<li>\n<p><strong>\u00ab\u0410 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u044c \u043c\u0443\u043b\u044c\u0442\u0438\u0442\u0435\u043d\u0430\u043d\u0442\u043d\u043e\u0441\u0442\u0438?\u00bb<\/strong> \u041f\u0435\u0440\u0432\u044b\u0439 \u0430\u0431\u0437\u0430\u0446 \u00ab\u0427\u0435\u0441\u0442\u043d\u043e\u0433\u043e \u0442\u0440\u0435\u0439\u0434-\u043e\u0444\u0444\u0430\u00bb: Periapsis \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u0434\u043b\u044f \u0432\u0440\u0430\u0436\u0434\u0435\u0431\u043d\u044b\u0445 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432. \u041e\u0431\u0449\u0435\u0435 \u044f\u0434\u0440\u043e \u2014 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0435\u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u043a\u043e\u0434, \u0443\u043c\u0435\u044e\u0449\u0438\u0439 \u0432 kernel-\u044d\u043a\u0441\u043f\u043b\u043e\u0439\u0442\u044b (\u0430 \u0438\u0445 \u043d\u044b\u043d\u0447\u0435 \u0440\u0430\u0437\u0432\u0435\u043b\u043e\u0441\u044c), \u0434\u043e\u043b\u0436\u0435\u043d \u0436\u0438\u0442\u044c \u0432 microVM-\u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0435, \u0430 \u043d\u0435 \u0437\u0434\u0435\u0441\u044c. \u0414\u043b\u044f sandbox \u0441\u0438\u043b\u044c\u043d\u0435\u0435 namespaces \u0431\u0435\u0437 microVM \u0435\u0441\u0442\u044c WASM-\u043f\u0443\u0442\u044c \u0441 deny-by-default (\u0441\u043c. \u0431\u043e\u043d\u0443\u0441).<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1058526\/\">https:\/\/habr.com\/ru\/articles\/1058526\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041c\u0435\u0447\u0442\u0430: systemd \u043a\u0430\u043a execution plane\u0412\u0441\u0435 \u043c\u044b \u0437\u043d\u0430\u0435\u043c \u0441\u0442\u0430\u0440\u044b\u0439 \u043f\u0440\u0438\u043a\u043e\u043b \u2014 \u0437\u0430\u043a\u0430\u0437 \u043f\u0438\u0446\u0446\u044b \u0447\u0435\u0440\u0435\u0437 Kubernetes (\u044d\u0442\u043e, \u043a\u0441\u0442\u0430\u0442\u0438, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442)\u2026 \u0421\u043c\u0435\u0448\u043d\u043e, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442, \u0434\u043e \u043a\u0430\u043a\u043e\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 Kubernetes \u043e\u0442\u043e\u0440\u0432\u0430\u043b\u0438\u0441\u044c \u043e\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u00ab\u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u00bb: \u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0432 API-\u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0443 \u043d\u0435\u0433\u043e \u043f\u043e\u0447\u0442\u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u0430 \u0446\u0435\u043b\u0430\u044f \u041e\u0421 \u2014 CRI, containerd, runc. \u041d\u043e \u043d\u0430 \u043b\u044e\u0431\u043e\u043c Linux-\u0445\u043e\u0441\u0442\u0435 \u0443\u0436\u0435 \u0435\u0441\u0442\u044c \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0441 cgroups, namespaces, \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u043c\u0438, \u0436\u0443\u0440\u043d\u0430\u043b\u043e\u043c \u0438 D-Bus API \u2014 systemd\u2026 \u0412\u0430\u0441 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u0441\u043c\u0443\u0449\u0430\u0435\u0442?\u041e\u0442\u043a\u0440\u043e\u0439\u0442\u0435 \u043b\u044e\u0431\u0443\u044e \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e Kubernetes \u2014 \u0442\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e Control Plane \u0434\u043b\u044f \u043e\u0440\u043a\u0435\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432. \u041d\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0441\u0430\u043c\u0438 \u0441\u043e\u0437\u0434\u0430\u0442\u0435\u043b\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0431 \u044d\u0442\u043e\u043c \u0442\u043e\u043b\u044c\u043a\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c: \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u043e\u0434\u0430 \u043e\u0431\u0440\u043e\u0441\u043b\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u041e\u0421, \u0446\u0435\u043b\u043e\u0439 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u043e\u0439 \u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c \u0438 \u043a\u0443\u0447\u0435\u0439 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0430 \u0431\u0443\u043c\u0430\u0433\u0435 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043e\u0431\u0435\u0449\u0430\u043b.\u041a\u0442\u043e-\u0442\u043e \u0435\u0449\u0451 \u043f\u043e\u043c\u043d\u0438\u0442 \u0441\u0432\u044f\u0449\u0435\u043d\u043d\u0443\u044e \u0432\u043e\u0439\u043d\u0443 \u0432\u043e\u043a\u0440\u0443\u0433 Docker \u0438 systemd \u0432 Kubernetes? \u0412 1.20 \u043e\u0431\u044a\u044f\u0432\u0438\u043b\u0438 deprecation dockershim \u2014 \u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0435 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u043f\u0430\u043d\u0438\u043a\u0430 \u00abKubernetes \u0431\u0440\u043e\u0441\u0430\u0435\u0442 Docker\u00bb, \u0445\u043e\u0442\u044f \u043d\u0430 \u0434\u0435\u043b\u0435 \u0434\u043b\u044f \u043e\u0431\u0440\u0430\u0437\u043e\u0432 \u0438 Dockerfile \u043d\u0435 \u043c\u0435\u043d\u044f\u043b\u043e\u0441\u044c \u043d\u0438\u0447\u0435\u0433\u043e, \u043e\u0442\u0432\u0430\u043b\u0438\u0432\u0430\u043b\u0430\u0441\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u044f\u043c\u0430\u044f \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u044f kubelet \u2192 dockerd. \u041f\u0440\u0438\u0447\u0438\u043d\u0430 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0437\u0430\u0438\u0447\u043d\u043e\u0439: dockershim \u2014 \u044d\u0442\u043e \u0448\u0438\u043c \u043d\u0430\u0434 \u0448\u0438\u043c\u043e\u043c. Docker \u0441\u0430\u043c \u0432\u043d\u0443\u0442\u0440\u0438 \u0443\u0436\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0432\u0435\u0440\u0445 containerd \u2192 runc, \u0430 kubelet \u0432\u0434\u043e\u0431\u0430\u0432\u043e\u043a \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u0440\u0436\u0430\u043b \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 CRI-\u0448\u0438\u043c, \u0442\u0440\u0430\u043d\u0441\u043b\u0438\u0440\u0443\u044e\u0449\u0438\u0439 \u0432\u044b\u0437\u043e\u0432\u044b \u0432 Docker Engine API. \u0418\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u043f\u0443\u0442\u044c \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430: kubelet \u2192 CRI \u2192 dockershim \u2192 dockerd \u2192 containerd \u2192 runc \u2192 \u043f\u0440\u043e\u0446\u0435\u0441\u0441. \u0428\u0435\u0441\u0442\u044c \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441.\u0417\u0430\u0447\u0435\u043cStock kubelet + containerdPeriapsisRSS \u0434\u0435\u043c\u043e\u043d\u043e\u0432 \u0432 \u043f\u0440\u043e\u0441\u0442\u043e\u0435~350 \u041c\u0411~74 \u041c\u0411 (1 pawn) &#8212; ~130 \u041c\u0411 (30 pawns)\u043e\u0432\u0435\u0440\u0445\u0435\u0434 \u043d\u0430 \u043f\u043e\u0434~15\u201320 \u041c\u0411 (containerd)&lt; 1 \u041c\u0411 (\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u044e\u043d\u0438\u0442)\u041f\u043e\u0434\u043e\u0432 \u043d\u0430 \u0445\u043e\u0441\u0442110 (\u0436\u0451\u0441\u0442\u043a\u0438\u0439 \u043f\u043e\u0442\u043e\u043b\u043e\u043a)\u0442\u044b\u0441\u044f\u0447\u0438 (\u0437\u0430\u0432\u0438\u0441\u0438\u0442 \u043e\u0442 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438)\u041b\u043e\u0433\u0438CRI-\u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0444\u0430\u0439\u043b\u044bjournald\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0434\u0435\u043c\u043e\u043d\u0430\u043e\u0431\u044b\u0447\u043d\u043e zero-downtimezero-downtime\u0412\u043e\u0437\u044c\u043c\u0451\u043c \u043c\u043e\u0439 \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u0438\u043c\u0435\u0440: \u0443 \u043c\u0435\u043d\u044f VPS \u043d\u0430 1 CPU \u0438 1 \u0413\u0411 RAM, kubelet + Cilium + Envoy Proxy, \u0432\u0440\u043e\u0434\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440, \u043d\u043e \u043d\u0430 \u043d\u0451\u043c \u0435\u043b\u0435 \u043f\u043e\u043c\u0435\u0449\u0430\u043b\u043e\u0441\u044c, \u0438 \u044d\u0442\u043e \u2014 \u0435\u0449\u0435 \u0431\u0435\u0437 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e workload. \u041e\u0431\u044b\u0447\u043d\u044b\u0439 kubelet, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 CNI, \u043e\u0431\u044b\u0447\u043d\u044b\u0439 ingress. \u041f\u0440\u043e\u0441\u0442\u043e \u0441\u0430\u043c\u0430 \u0438\u043d\u0444\u0440\u0430 \u0443\u0436\u0435 \u0441\u044a\u0435\u0434\u0430\u043b\u0430 \u043f\u043e\u0447\u0442\u0438 \u0432\u0435\u0441\u044c \u0433\u0438\u0433\u0430\u0431\u0430\u0439\u0442 \u0434\u043e \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435 \u043f\u043e\u044f\u0432\u043b\u044f\u043b\u0430\u0441\u044c \u0445\u043e\u0442\u044c \u043e\u0434\u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430. \u0414\u043b\u044f \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044f: \u043d\u0430 \u043f\u043e\u0445\u043e\u0436\u0435\u0439 \u043f\u043e \u043a\u043b\u0430\u0441\u0441\u0443 \u043c\u0430\u0448\u0438\u043d\u0435 (1 vCPU, 2 GB RAM, VPS) \u0443 \u043c\u0435\u043d\u044f \u0432\u0435\u0441\u044c control plane \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 \u0440\u0430\u0431\u043e\u0447\u0435\u0439 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u2014 apiserver, controller-manager, scheduler, kube-proxy, CoreDNS \u0438 \u043e\u0434\u0438\u043d nginx \u2014 \u0443\u043c\u0435\u0441\u0442\u0438\u043b\u0438\u0441\u044c \u0432 ~523 \u041c\u0411, \u0441 \u0437\u0430\u043f\u0430\u0441\u043e\u043c (\u0434\u0430\u043b\u0435\u0435 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 \u00ab\u0426\u0438\u0444\u0440\u044b\u00bb).\u041d\u0430 \u043c\u043e\u0449\u043d\u043e\u043c \u0436\u0435\u043b\u0435\u0437\u0435 \u044d\u0442\u0443 \u0436\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043e\u0431\u044b\u0447\u043d\u043e \u0440\u0435\u0448\u0430\u044e\u0442 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b: \u043d\u0435 \u0443\u0431\u0438\u0440\u0430\u044e\u0442 \u043f\u0440\u043e\u0441\u043b\u043e\u0439\u043a\u0443, \u0430 \u043d\u0430\u0440\u0430\u0449\u0438\u0432\u0430\u044e\u0442 \u0435\u0449\u0451 \u043e\u0434\u043d\u0443. KubeVirt \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0435 VM (\u0447\u0435\u0440\u0435\u0437 QEMU\/libvirt) \u043a\u0430\u043a \u043f\u043e\u0434\u044b \u2014 \u0443\u0434\u043e\u0431\u043d\u043e \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0430\u043c\u0438 \u0447\u0435\u0440\u0435\u0437 kubectl, \u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u043f\u043e\u0434 \u0442\u044f\u043d\u0435\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043d\u0430\u0441\u0442\u043e\u044f\u0449\u0435\u0435 \u044f\u0434\u0440\u043e, \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 boot \u0438 \u0441\u043e\u0442\u043d\u0438 \u041c\u0411 RAM \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0441\u0430\u043c\u0443 VM, \u0432\u043d\u0435 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u043d\u0443\u0442\u0440\u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. Kata Containers \u0438\u0434\u0451\u0442 \u043c\u044f\u0433\u0447\u0435: \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0441\u0432\u043e\u0439 \u043e\u0431\u043b\u0435\u0433\u0447\u0451\u043d\u043d\u044b\u0439 microVM \u0440\u0430\u0434\u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u0441\u0438\u043b\u044c\u043d\u0435\u0435, \u0447\u0435\u043c namespaces + cgroups, \u043d\u043e \u0442\u043e\u0436\u0435 \u043d\u0435 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u2014 \u043e\u0431\u044b\u0447\u043d\u043e ~130-170 \u041c\u0411 \u0438 \u0437\u0430\u043c\u0435\u0442\u043d\u043e \u0431\u043e\u043b\u0435\u0435 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u0440\u0442 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041e\u0431\u0430 \u0447\u0435\u0441\u0442\u043d\u043e \u0440\u0435\u0448\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438, \u043d\u043e \u0446\u0435\u043d\u043e\u0439 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u043b\u043e\u044f \u043c\u0435\u0436\u0434\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u043c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435\u043c \u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u043c.\u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u043c\u043e\u0449\u043d\u043e\u0435 \u0436\u0435\u043b\u0435\u0437\u043e \u0434\u043b\u044f \u0432\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b? \u0418\u043b\u0438 \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u0439 homelab? \u0412\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u0430 VM-\u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043e\u0442 \u0447\u0443\u0436\u0438\u0445 \u0442\u0435\u043d\u0430\u043d\u0442\u043e\u0432, \u0432\u0430\u043c \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0440\u0435\u0437\u0430\u0442\u044c \u043e\u0434\u043d\u0443 \u043c\u0430\u0448\u0438\u043d\u0443 \u043d\u0430 \u0441\u0442\u043e\u043b\u044c\u043a\u043e \u043d\u043e\u0434, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u043d\u0443\u0436\u043d\u043e \u2014 \u0431\u0435\u0437 CRI \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u0438 \u0431\u0435\u0437 \u0433\u0438\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440\u0430 \u0441 \u0434\u0440\u0443\u0433\u043e\u0439. \u0420\u043e\u0432\u043d\u043e \u043e\u0431 \u044d\u0442\u043e\u043c \u0432\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043f\u043e\u0441\u0442.\u0412\u0435\u0441\u044c \u044d\u0442\u043e\u0442 \u043d\u0430\u0431\u043e\u0440 \u043a\u043e\u043c\u043f\u0440\u043e\u043c\u0438\u0441\u0441\u043e\u0432 \u2014 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u043e\u0434\u043d\u043e\u0433\u043e \u043c\u043e\u043b\u0447\u0430\u043b\u0438\u0432\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f: kubelet \u0441\u0447\u0438\u0442\u0430\u0435\u0442, \u0447\u0442\u043e \u043e\u0434\u043d\u0430 \u043d\u043e\u0434\u0430 = \u043e\u0434\u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0430. \u041d\u0438\u0433\u0434\u0435 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438 Kubernetes \u044d\u0442\u043e \u043f\u0440\u044f\u043c\u043e \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e, \u043d\u043e \u0437\u0430\u0448\u0438\u0442\u043e \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 kubelet.\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430Pawns, not nodes$ kubectl get nodes -o wideNAME               STATUS   ROLES     AGE     VERSION               INTERNAL-IP       EXTERNAL-IP   OS-IMAGE     KERNEL-VERSION                 CONTAINER-RUNTIMEengifire           Ready    primary   2d19h   perigeos:\/\/6c446973   192.168.50.2      &lt;none&gt;        Arch Linux   7.0.14-zen1-1-zen (amd64)      systemd:\/\/262~develengifire-pawn-01   Ready    pawn      2d19h   perigeos:\/\/6c446973   192.168.50.2      &lt;none&gt;        Arch Linux   7.0.14-zen1-1-zen (amd64)      systemd:\/\/262~develengifire-scale-1   Ready    pawn      21h     perigeos:\/\/6c446973   192.168.50.2      &lt;none&gt;        Arch Linux   7.0.14-zen1-1-zen (amd64)      systemd:\/\/262~develengix99            Ready    primary   2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-e2e-1      Ready    pawn      2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-e2e-2      Ready    pawn      2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-scale-1    Ready    pawn      21h     perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-trail-1    Ready    pawn      2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~develengix99-trail-2    Ready    pawn      2d20h   perigeos:\/\/7f68f512   192.168.100.200   &lt;none&gt;        Arch Linux   7.0.14-x64v3-xanmod1 (amd64)   systemd:\/\/262~devel\u041e\u0434\u0438\u043d \u043f\u0440\u043e\u0446\u0435\u0441\u0441 perigeos \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u0442 N \u00ab\u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445\u00bb \u043d\u043e\u0434 (Pawn) \u2014 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u0441\u0432\u043e\u0439 TLS-\u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 (\u0447\u0435\u0440\u0435\u0437 CSR API \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430), \u0441\u0432\u043e\u0439 kubelet HTTP endpoint (exec\/attach\/logs\/port-forward), \u0441\u0432\u043e\u0439 pod CIDR, \u0441\u0432\u043e\u0439 cgroup slice \u0438 \u0441\u0432\u043e\u0438 \u043b\u0438\u043c\u0438\u0442\u044b. \u0423 \u043a\u0430\u0436\u0434\u043e\u0439 Pawn \u0441\u0432\u043e\u0439 \u0431\u043b\u0430\u0441\u0442-\u0440\u0430\u0434\u0438\u0443\u0441: \u043f\u0430\u043d\u0438\u043a\u0430 \u043e\u0434\u043d\u043e\u0439 Pawn \u043d\u0435 \u0443\u0442\u0430\u0449\u0438\u0442 \u0437\u0430 \u0441\u043e\u0431\u043e\u0439 \u043d\u0438 \u0445\u043e\u0441\u0442-\u0434\u0435\u043c\u043e\u043d, \u043d\u0438 \u0441\u043e\u0441\u0435\u0434\u043d\u0438\u0435 Pawns.\u041f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a \u0432\u0438\u0434\u0438\u0442 \u043e\u0431\u044b\u0447\u043d\u044b\u0435 \u043d\u043e\u0434\u044b \u0438 \u0431\u0430\u043b\u0430\u043d\u0441\u0438\u0440\u0443\u0435\u0442, \u043a\u0430\u043a \u043e\u0431\u044b\u0447\u043d\u043e:# \u0441 \u0442\u0435\u0441\u0442\u043e\u0432$ apsis pawnsNAME        ROLE  PORT   PODScompute-00  pawn  12261  56compute-01  pawn  12262  55&#8230;compute-29  pawn  12290  5630 pawns, ~55 \u043f\u043e\u0434\u043e\u0432 \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u0439.Node != host\u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0432\u0430\u043d\u0438\u043b\u044c\u043d\u043e\u0433\u043e kubelet, \u0433\u0434\u0435 \u043f\u043e\u0434\u043d\u0438\u043c\u0430\u0442\u044c \u043f\u043e\u0442\u043e\u043b\u043e\u043a \u0432\u044b\u0448\u0435 110 \u043d\u0435 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0441\u0430\u043c \u0430\u043f\u0441\u0442\u0440\u0438\u043c, \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 Pawn \u044d\u0442\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440, \u0430 \u043d\u0435 \u0444\u043b\u0430\u0433 \u0441 \u043e\u0433\u043e\u0432\u043e\u0440\u043a\u0430\u043c\u0438 \u2014 \u0441\u0435\u0439\u0447\u0430\u0441, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441\u0442\u043e\u0438\u0442 256. \u041f\u043e\u0442\u043e\u043b\u043e\u043a \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u043d\u043e\u0434 \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0451\u0442 \u0431\u044b\u0442\u044c \u043f\u043e\u0442\u043e\u043b\u043a\u043e\u043c \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b, \u0438 identity (\u0434\u0430\u043b\u0435\u0435 Pawn) \u043d\u0430 \u043e\u0434\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0445\u043e\u0442\u044c \u0441\u0442\u043e. \u042f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b 33 Pawns \u043d\u0430 \u0434\u0432\u0443\u0445 \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0445\u043e\u0441\u0442\u0430\u0445 \u0438 \u044d\u0442\u043e \u043d\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0438 \u043d\u0435 \u0442\u0440\u044e\u043a \u0441 \u0432\u043b\u043e\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 (\u043a\u0430\u043a \u0443 kind\/k3d, \u0433\u0434\u0435 \u043d\u043e\u0434\u0430 \u044d\u0442\u043e \u043f\u043e\u0434 \u0432 \u043f\u043e\u0434\u0435): \u044d\u0442\u043e \u0447\u0435\u0441\u0442\u043d\u044b\u0445 33 Node \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0441\u0432\u043e\u0439 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u0441\u0432\u043e\u0439 kubelet-\u044d\u043d\u0434\u043f\u043e\u0438\u043d\u0442.\u041f\u043e\u0434 = \u043c\u0430\u0448\u0438\u043d\u0430 systemd$ sudo machinectl | headMACHINE                                                         CLASS     SERVICE        OS        VERSION  ADDRESSESpod-0278b268-569a-43d0-8d01-791c77e90e7e-nginx                  container systemd-nspawn alpine    3.23.4   10.0.65.53\u2026pod-0a272159-351a-4fdf-9738-6010f1f5ad47-nginx                  container systemd-nspawn alpine    3.23.4   10.0.127.141\u2026pod-0b773d9b-e74b-41c0-b301-3169144f43de-nginx                  container systemd-nspawn alpine    3.23.4   10.0.55.182\u2026pod-0fb1dabd-f7c3-461b-8052-413f70dbb2ad-nginx                  container systemd-nspawn alpine    3.23.4   10.0.50.176\u2026pod-1342a134-e0d1-422f-913d-7533d3aca554-nginx                  container systemd-nspawn alpine    3.23.4   10.0.58.116\u2026pod-1ad3491d-5779-4284-afb5-00ab0b480e60-nginx                  container systemd-nspawn alpine    3.23.4   10.0.115.134\u2026pod-1cccc4de-6133-4b3e-8062-6579a219e67f-nginx                  container systemd-nspawn alpine    3.23.4   10.0.116.107\u2026pod-2000e594-376b-45ef-a574-971c29fc1dc2-nginx                  container systemd-nspawn alpine    3.23.4   10.0.23.127\u2026pod-204b0f04-871c-44e0-bcfb-6cc2c215be98-operator               container systemd-nspawn periapsis 0        -\u041a\u0430\u0436\u0434\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u2014 \u044d\u0442\u043e nspawn-\u043c\u0430\u0448\u0438\u043d\u0430 \u0438\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0445 OCI-\u043e\u0431\u0440\u0430\u0437\u043e\u0432 (pull, \u0434\u0435\u0434\u0443\u043f\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u0441\u043b\u043e\u0451\u0432, P2P-\u0440\u0430\u0437\u0434\u0430\u0447\u0430 \u0431\u043b\u043e\u0431\u043e\u0432 \u043c\u0435\u0436\u0434\u0443 \u0445\u043e\u0441\u0442\u0430\u043c\u0438 \u043f\u043e TLS). \u0418\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u044f\u0434\u0435\u0440\u043d\u0430\u044f: namespaces + cgroups, \u0442\u043e\u0442 \u0436\u0435 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0447\u0442\u043e \u0443 runc, \u043d\u043e \u0431\u0435\u0437 \u0434\u0435\u043c\u043e\u043d\u0430 \u0440\u0430\u043d\u0442\u0430\u0439\u043c\u0430 \u0438\u043b\u0438 shim. \u0416\u0443\u0440\u043d\u0430\u043b\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0435\u0434\u0443\u0442 \u0441\u0440\u0430\u0437\u0443 \u0432 journald.Zero-downtime \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0435\u043c\u043e\u043d\u0430\u041f\u0440\u0438 \u0440\u0435\u0441\u0442\u0430\u0440\u0442\u0435 perigeos \u0443\u043c\u0438\u0440\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0430\u043c \u0434\u0435\u043c\u043e\u043d, \u043f\u043e\u0434\u044b \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0436\u0438\u0442\u044c. \u041d\u043e\u0432\u044b\u0439 \u0434\u0435\u043c\u043e\u043d \u0441\u0442\u0430\u0440\u0442\u0443\u0435\u0442, \u043d\u0430\u0445\u043e\u0434\u0438\u0442 \u0438\u0445 \u0438 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u0442 \u0441 \u043d\u0438\u043c\u0438 \u0440\u0430\u0431\u043e\u0442\u0443. \u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0430\u0433\u0435\u043d\u0442\u0430 \u043d\u0435 \u0442\u0440\u0435\u0431\u0443\u0435\u0442 drain. \u041f\u043e\u0441\u043b\u0435 \u0440\u0435\u0431\u0443\u0442\u0430 \u0445\u043e\u0441\u0442\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0435: \u0434\u0435\u043c\u043e\u043d \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442 \u0438\u0441\u0447\u0435\u0437\u043d\u0443\u0432\u0448\u0438\u0435 \u043c\u0430\u0448\u0438\u043d\u044b \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 \u0438\u0445.\u0421\u043f\u0440\u0430\u0432\u0435\u0434\u043b\u0438\u0432\u043e\u0441\u0442\u0438 \u0440\u0430\u0434\u0438: containerd v2 \u0443\u043c\u0435\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 &#8212; shim-\u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043f\u0435\u0440\u0435\u0436\u0438\u0432\u0430\u044e\u0442 \u0440\u0435\u0441\u0442\u0430\u0440\u0442 \u0434\u0435\u043c\u043e\u043d\u0430 \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u043d\u0435\u0433\u043e. \u0420\u0430\u0437\u043d\u0438\u0446\u0430 \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e perigeos \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u043d\u0443\u0436\u0435\u043d \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 shim-\u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440: \u0441\u0443\u043f\u0435\u0440\u0432\u0438\u0437\u043e\u0440 \u043f\u043e\u0434\u0430 \u2014 \u0442\u043e\u0442 \u0436\u0435 systemd, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442 \u043b\u044e\u0431\u044b\u043c \u0434\u0440\u0443\u0433\u0438\u043c \u044e\u043d\u0438\u0442\u043e\u043c \u043d\u0430 \u0445\u043e\u0441\u0442\u0435, \u0442\u0430\u043a \u0447\u0442\u043e \u00ab\u043f\u0435\u0440\u0435\u0436\u0438\u0442\u044c \u0440\u0435\u0441\u0442\u0430\u0440\u0442 \u0434\u0435\u043c\u043e\u043d\u0430\u00bb \u0437\u0434\u0435\u0441\u044c \u043d\u0435 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c, \u0430 \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u0434 \u2014 \u044d\u0442\u043e \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u044e\u043d\u0438\u0442.\u0426\u0438\u0444\u0440\u044b\u0416\u0435\u043b\u0435\u0437\u043e \u0441\u043a\u0440\u043e\u043c\u043d\u043e\u0435: Xeon E5-2690 v4 (48 \u0413\u0411) \u0438 \u043c\u0438\u043d\u0438 \u041f\u041a \u043d\u0430 Intel N150 (16 \u0413\u0411), \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 Ethernet (0.15 \u043c\u0441 RTT).\u041f\u043b\u043e\u0442\u043d\u043e\u0441\u0442\u044c: 1772 \u043f\u043e\u0434\u0430, 33 \u043d\u043e\u0434\u044b$ apsis status          # engix99 (Xeon, 30 pawns)Hostname:    engix99Uptime:      1h47mPawns:       30Pods:        1,660Memory:      29 \/ 48 GBCPU cores:   28Machines:    1,660RSS:         365 MiBLXC veths:   1,665Netns:       1,665$ apsis status          # engifire (N150, 2 pawn)Hostname:    engifireUptime:      1h45mPawns:       2Pods:        112Memory:      2.7 \/ 16 GBCPU cores:   4Machines:    112RSS:         89 MiBNetns:       112365 \u041c\u0411 RSS \u043d\u0430 1660 \u043f\u043e\u0434\u043e\u0432 \u2014 \u044d\u0442\u043e ~220 \u041a\u0411 \u043d\u0430 \u043f\u043e\u0434. \u0414\u043b\u044f \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0430: \u043e\u0434\u0438\u043d containerd-shim \u0441\u0442\u043e\u0438\u0442 ~15-20 \u041c\u0411 \u043d\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0442\u043e \u0435\u0441\u0442\u044c \u043d\u0430 \u0442\u0435 \u0436\u0435 1660 \u043f\u043e\u0434\u043e\u0432 \u043e\u0434\u043d\u0438 \u0442\u043e\u043b\u044c\u043a\u043e shim\u2019\u044b \u0432\u0435\u0441\u0438\u043b\u0438 \u0431\u044b 25-33 \u0413\u0411 \u2014 \u0431\u043e\u043b\u044c\u0448\u0435 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u044b \u0432\u0441\u0435\u0439 \u043f\u0430\u043c\u044f\u0442\u0438 \u044d\u0442\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0417\u0434\u0435\u0441\u044c \u044d\u0442\u0438\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435\u0442.\u041f\u043e\u0434 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439: k6, 1000 VU, 3m30s, ClusterIP -&gt; nginx-whoami \u043d\u0430 33 \u043d\u043e\u0434\u0430\u0445  THRESHOLDS    errors    rate=0.00%                              &lt; 0.01  PASS    http_req_duration    p(95)=4.05ms                            &lt; 500   PASS    p(99)=10.04ms                           &lt; 1000  PASS  TOTAL RESULTS    checks_total&#8230;&#8230;..: 7,507,074   35,740\/s    checks_succeeded&#8230;.: 100.00%    checks_failed&#8230;&#8230;.: 0.00%    HTTP    http_reqs&#8230;&#8230;&#8230;..: 2,502,358   11,913\/s    http_req_duration&#8230;: avg=998 us  med=257 us &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-487083","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/487083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=487083"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/487083\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=487083"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=487083"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=487083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}