{"id":386264,"date":"2024-06-29T06:36:14","date_gmt":"2024-06-29T06:36:14","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=386264"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-06-29T06:36:14","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=386264","title":{"rendered":"<span>\u042d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 Kubernetes<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/k2\/ze\/io\/k2zeio9fu6t71wwlhdhlmuc4wxa.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/webt\/k2\/ze\/io\/k2zeio9fu6t71wwlhdhlmuc4wxa.png\"\/><\/p>\n<h3>\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/h3>\n<p>  \u0421 \u0432\u0435\u0440\u0441\u0438\u0438 Kubernetes 1.16 \u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 (Ephemeral Containers). \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 Pod&#8217;\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u042d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 Pod&#8217;\u0430\u0445, \u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0438\u043c\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438 \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c Pod&#8217;\u0430, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u043b\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.<a name=\"habracut\"><\/a><\/p>\n<h3>\u041d\u0443\u0436\u043d\u044b \u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b<\/h3>\n<p>  \u041a\u0430\u043a \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432 Kubernetes?<\/p>\n<p>  \u0417\u0430\u043f\u0435\u043a\u0430\u0442\u044c \u0432 \u0431\u043e\u0435\u0432\u043e\u0439 \u043e\u0431\u0440\u0430\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043f\u043e\u043b\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0445 \u0443\u0442\u0438\u043b\u0438\u0442 \u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u0440\u0430\u0437\u0440\u043e\u0441\u0448\u0435\u043c\u0443\u0441\u044f \u043e\u0431\u0440\u0430\u0437\u0443 \u0441 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u0435\u043a\u0442\u043e\u0440\u0430\u043c\u0438 \u0430\u0442\u0430\u043a. \u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u0432 \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u043d\u0435\u0443\u0434\u043e\u0431\u043d\u043e \u0438 \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e (\u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0434\u043e\u043b\u0436\u0435\u043d \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d <code>tar<\/code>). \u041d\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u043d\u0443\u0436\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435, <code>kubectl exec<\/code> \u0432\u0440\u044f\u0434 \u043b\u0438 \u043f\u043e\u043c\u043e\u0436\u0435\u0442, \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0437\u0430\u0441\u0442\u0440\u044f\u043b \u0432 \u0446\u0438\u043a\u043b\u0435 \u043f\u0430\u0434\u0435\u043d\u0438\u0439 (CrashLoopBackOff). <\/p>\n<p>  \u041a\u0430\u043a\u0438\u0435 \u0435\u0449\u0435 \u0443 \u043d\u0430\u0441 \u0435\u0441\u0442\u044c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u044b \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043c\u0435\u043d\u044f\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u043e\u0432?<\/p>\n<p>  \u041c\u043e\u0436\u043d\u043e, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0434\u0435\u0431\u0430\u0436\u0438\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0441 Kubernetes \u043d\u043e\u0434\u044b, \u043d\u043e SSH \u0434\u043e\u0441\u0442\u0443\u043f \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432 \u043d\u0430\u043b\u0438\u0447\u0438\u0438. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u043d\u0435 \u0442\u0430\u043a \u0443\u0436 \u0438 \u043c\u043d\u043e\u0433\u043e \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432\u2026<\/p>\n<p>  \u0415\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043d\u0435 \u043e\u0441\u043b\u0430\u0431\u0438\u043c \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0435 \u043a \u0438\u043c\u043c\u0443\u0442\u0430\u0431\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0430!<\/p>\n<p>  \u0410 \u0447\u0442\u043e \u0435\u0441\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0435, \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u0432\u043e\u0438\u0445 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u0445, \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043a \u0443\u0436\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u043c\u0443 \u043f\u043e\u0434\u0443 \u0431\u0435\u0437 \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438? \u041f\u043e\u0434\u044b \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u0433\u0440\u0443\u043f\u043f\u044b \u043f\u043e\u043b\u0443\u0432\u0437\u0430\u0438\u043c\u043e\u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0438 \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u044f \u043c\u0435\u0436\u0434\u0443 \u043d\u0438\u043c\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430 \u0441\u043b\u0430\u0431\u0430\u044f. \u0418 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043d\u043e\u0432\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0431\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u0447\u0442\u043e\u0431\u044b \u043f\u0440\u043e\u043d\u0438\u043a\u0430\u0442\u044c \u0432 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u0441\u043d\u0438\u043c\u0430\u0442\u044c \u0441 \u043d\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u0435, \u0432 \u0442\u043e\u043c \u0447\u0438\u0441\u043b\u0435 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0438\u0445 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u0438 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0433\u043e.<\/p>\n<p>  \u0418 \u0442\u0430\u043a \u0440\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0438\u0434\u0435\u044f \u042d\u0444\u0435\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u2014 \u00ab\u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043f\u043e\u0434\u0435, \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u0446\u0435\u043b\u044c\u044e \u043f\u043e\u0438\u0441\u043a\u0430 \u0438 \u0443\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u0447\u0438\u043d \u0441\u0431\u043e\u0435\u0432\u00bb.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0425\u043c, \u0430 \u0440\u0430\u0437\u0432\u0435 \u0434\u043e\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043f\u043e\u0434\u0430 \u043d\u0430\u043b\u0435\u0442\u0443 \u043d\u0435 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u0440\u0435\u0447\u0438\u0442 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0441\u0442\u0438 Kubernetes? ?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0427\u0442\u043e \u0432\u0430\u0441 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442 \u043e\u0442 \u0437\u043b\u043e\u0443\u043f\u043e\u0442\u0440\u0435\u0431\u043b\u0435\u043d\u0438\u044f \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0441 \u0446\u0435\u043b\u044c\u044e \u0432\u0437\u043b\u043e\u043c\u0430 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0445 \u0431\u043e\u0435\u0432\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439? \u041f\u043e\u043c\u0438\u043c\u043e \u0437\u0434\u0440\u0430\u0432\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430, \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f:<\/p>\n<p>   \u2014 \u0423 \u043d\u0438\u0445 \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u043d\u0430 \u0432\u044b\u0434\u0435\u043b\u044f\u0435\u043c\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u043a \u0432 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435.<br \/>   \u2014 \u041e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0443\u0436\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u044b \u043f\u043e\u0434\u0443.<br \/>   \u2014 \u0418\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044c, \u0438 \u0434\u043b\u044f \u043d\u0438\u0445 \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0441\u043b\u0443\u0448\u0430\u044e\u0449\u0438\u0439 \u043f\u043e\u0440\u0442.<br \/>   \u2014 \u0414\u043b\u044f \u043d\u0438\u0445 \u043d\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043d\u0438\u043a\u0430\u043a\u0438\u0445 liveness\/readiness \u043f\u0440\u043e\u0431.<\/p>\n<p>  \u0427\u0438\u0441\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u0438\u0445 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0440\u0430\u0437\u043e\u0432\u044b\u0445 \u0437\u0430\u0434\u0430\u0447, \u043d\u043e \u043e\u043d\u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u043d\u0430 \u0434\u043e\u043b\u0433\u043e\u0441\u0440\u043e\u043a.<\/p><\/div>\n<\/p><\/div>\n<p>  \u0421 \u0442\u0435\u043e\u0440\u0438\u0435\u0439 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u043b\u0438\u0441\u044c, \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u043c \u043a \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438.<\/p>\n<h3>\u0412\u0435\u043b\u0438\u043a\u0438\u0439 \u0438 \u043c\u043e\u0433\u0443\u0447\u0438\u0439 kubectl debug<\/h3>\n<p>  Kubernetes \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0432\u043a\u043b\u044e\u0447\u0438\u0432 \u0432 Pod spec \u043d\u043e\u0432\u044b\u0439 \u0430\u0442\u0440\u0438\u0431\u0443\u0442 (\u043a\u0430\u043a\u043e\u0439 \u0431\u044b \u0432\u044b \u0434\u0443\u043c\u0430\u043b\u0438?) \u00abephemeralContainers\u00bb. \u041e\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0442\u0438\u043f\u0430 Container \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0445 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0434\u043b\u044f \u0443\u0436\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u0427\u0443\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 API \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 ?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u0421\u043f\u0438\u0441\u043e\u043a ephemeralContainers \u043c\u043e\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 PATCH \u043d\u0430 \u043f\u0443\u0442\u044c \/pods\/NAME\/ephemeralcontainers. \u042d\u0442\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e <b>*\u043f\u043e\u0441\u043b\u0435*<\/b> \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u043f\u043e\u0434\u0430.<\/p>\n<p>  \u041f\u043e\u043f\u044b\u0442\u043a\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u043e\u0434 \u0441 \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u043c \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043e\u0448\u0438\u0431\u043a\u0435: <\/p>\n<pre><code class=\"bash\">The Pod is invalid: spec.ephemeralContainers: Forbidden: cannot be set on create.<\/code><\/pre>\n<p>  \u041b\u044e\u0431\u043e\u043f\u044b\u0442\u043d\u043e, \u0447\u0442\u043e \u044d\u0442\u0443 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044e \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <b>kubectl edit<\/b>, \u043f\u043e\u043b\u0443\u0447\u0438\u043c \u043e\u0448\u0438\u0431\u043a\u0443:<\/p>\n<pre><code class=\"bash\">Pod is invalid: spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`, `spec.initContainers[*].image`, `spec.activeDeadlineSeconds`, `spec.tolerations` (only additions to existing tolerations) or `spec.terminationGracePeriodSeconds` (allow it to be set to 1 if it was previously negative) A container spec added to the ephemeralContainers list cannot be modified and remains in the list even after the corresponding container terminates.<\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  \u0414\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a ephemeralContainers \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442 \u043d\u043e\u0432\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c \u043f\u043e\u0434\u0435. \u041e\u0431\u044a\u0435\u043a\u0442 EphemeralContainer \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0437\u043d\u0430\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043d\u0430\u0431\u043e\u0440 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432. \u0412 \u0447\u0430\u0441\u0442\u043d\u043e\u0441\u0442\u0438, \u0440\u043e\u0432\u043d\u043e \u043a\u0430\u043a \u0438 \u0441 \u043e\u0431\u044b\u0447\u043d\u044b\u043c\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438, \u0441 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0438\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c \u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0443 <code>kubectl attach -it<\/code>, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0436\u0435\u043b\u0430\u0435\u043c\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a shell&#8217;\u0443.<\/p>\n<p>  \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0443 \u0440\u044f\u0434\u043e\u0432\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u0439 \u043d\u0435 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e API \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0435 <code>kubectl debug<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044e \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u043e\u0434 \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0431\u043e\u043b\u0435\u0435 \u0432\u044b\u0441\u043e\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u044d\u0442\u043e \u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0438!<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">\u041f\u043e\u0434\u043d\u0438\u043c\u0430\u0435\u043c \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0443 ?\ufe0f<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u041f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f Kubernetes \u0432\u0435\u0440\u0441\u0438\u0438 1.23 \u0438 \u0432\u044b\u0448\u0435.<\/p>\n<p>  \u0414\u043b\u044f \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0438\u0442\u0430\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u0443\u043d\u0438\u0447\u0442\u043e\u0436\u0430\u0435\u043c\u044b\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043c\u0430\u0448\u0438\u043d\u044b. \u041d\u0438\u0436\u0435 \u043f\u0440\u0438\u0432\u043e\u0436\u0443 Vagrantfile \u0434\u043b\u044f \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u044f \u043c\u0430\u0448\u0438\u043d\u044b \u0441 Debian \u0438 Docker \u043d\u0430 \u0431\u043e\u0440\u0442\u0443:  <\/p>\n<pre><code class=\"bash\">Vagrant.configure(\"2\") do |config|   config.vm.box = \"debian\/bullseye64\"    config.vm.provider \"virtualbox\" do |vb|     vb.cpus = 4     vb.memory = \"4096\"   end    config.vm.provision \"shell\", inline: &lt;&lt;-SHELL     apt-get update     apt-get install -y curl git cmake vim   SHELL    config.vm.provision \"docker\" end <\/code><\/pre>\n<p>  \u041f\u043e\u043b\u043e\u0436\u0438\u0442\u0435 \u0444\u0430\u0439\u043b \u0432 \u043f\u0430\u043f\u043a\u0443 \u0438 \u0438\u0437 \u043d\u0435\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>vagrant up &amp;&amp; vagrant ssh<\/code>.<\/p>\n<p>  \u041a\u0430\u043a \u0442\u043e\u043b\u044c\u043a\u043e \u043c\u0430\u0448\u0438\u043d\u0430 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u043b\u0430\u0441\u044c, \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <code>arkade<\/code> \u0434\u043b\u044f \u043f\u043e\u0434\u043d\u044f\u0442\u0438\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430:<\/p>\n<pre><code class=\"bash\">$ curl -sLS https:\/\/get.arkade.dev | sudo sh $ arkade get kind kubectl $ kind create cluster <\/code><\/pre>\n<p>  <\/div>\n<\/p><\/div>\n<p>  <\/p>\n<h3>\u041f\u0435\u0440\u0432\u0430\u044f \u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u0430\u044f \u043f\u043e\u043f\u044b\u0442\u043a\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f kubectl debug<\/h3>\n<p>  \u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u043e\u0434\u043e\u043f\u044b\u0442\u043d\u043e\u0433\u043e, \u0432\u043e\u0437\u044c\u043c\u0435\u043c Deployment \u0441 distroless \u043e\u0431\u0440\u0430\u0437\u0430\u043c\u0438 Python \u0438 Node.JS:  <\/p>\n<pre><code class=\"bash\">$ kubectl apply -f - &lt;&lt;EOF apiVersion: apps\/v1 kind: Deployment metadata:   name: slim spec:   selector:     matchLabels:       app: slim   template:     metadata:       labels:         app: slim     spec:       containers:       - name: app         image: gcr.io\/distroless\/python3-debian11         command:         - python         - -m         - http.server         - '8080'       - name: sidecar         image: gcr.io\/distroless\/nodejs-debian11         command:         - \/nodejs\/bin\/node         - -e         - 'setTimeout(() => console.log(\"done\"), 999999)' EOF  # \u0421\u043e\u0445\u0440\u0430\u043d\u0438\u043c \u0438\u043c\u044f \u043f\u043e\u0434\u0430 \u043d\u0430 \u0431\u0443\u0434\u0443\u0449\u0435\u0435: $ POD_NAME=$(kubectl get pods -l app=slim -o jsonpath='{.items[0].metadata.name}') <\/code><\/pre>\n<p>  \u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u043e\u0431\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e, \u043e\u0442 <code>kubectl exec<\/code> \u043f\u043e\u043b\u044c\u0437\u044b \u043d\u0435\u0442, \u0438\u0431\u043e distroless \u043e\u0431\u0440\u0430\u0437\u044b \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442 \u0432 \u0441\u0435\u0431\u0435 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438 \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434:<\/p>\n<pre><code class=\"bash\"># app container - no `bash` $ kubectl exec -it -c app ${POD_NAME} -- bash error: exec: \"bash\": executable file not found in $PATH: unknown  # ...and very limited `sh` (actually, it's aliased `dash`) $ kubectl exec -it -c app ${POD_NAME} -- sh $# ls sh: 1: ls: not found  # sidecar container - no shell at all $ kubectl exec -it -c sidecar ${POD_NAME} -- bash error: exec: \"bash\": executable file not found in $PATH: unknown  $ kubectl exec -it -c sidecar ${POD_NAME} -- sh error: exec: \"sh\": executable file not found in $PATH: unknown <\/code><\/pre>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043f\u0440\u0438\u0437\u0432\u0430\u0442\u044c \u043d\u0430 \u043f\u043e\u043c\u043e\u0449\u044c \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440:<\/p>\n<pre><code class=\"bash\">$ kubectl debug -it --attach=false -c debugger --image=busybox ${POD_NAME} <\/code><\/pre>\n<p>  \u041c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043c \u0432 \u043d\u0430\u0448 \u043f\u043e\u0434 \u043d\u043e\u0432\u044b\u0439 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043f\u043e\u0434 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c debugger \u043d\u0430 \u043e\u0431\u0440\u0430\u0437\u0435 busybox:latest, \u043d\u0435 \u0437\u0430\u0431\u044b\u0432 \u043f\u0440\u043e \u043a\u043b\u044e\u0447\u0438 interactive (-i) \u0438 PTY-controller (-t) \u0434\u043b\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a \u0435\u0433\u043e shell&#8217;\u0443.<\/p>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0430:<\/p>\n<pre><code class=\"bash\">$ kubectl get pod ${POD_NAME} \\   -o jsonpath='{.spec.ephemeralContainers}' \\   | python3 -m json.tool [     {         \"image\": \"busybox\",         \"imagePullPolicy\": \"Always\",         \"name\": \"debugger\",         \"resources\": {},         \"stdin\": true,         \"terminationMessagePath\": \"\/dev\/termination-log\",         \"terminationMessagePolicy\": \"File\",         \"tty\": true     } ] <\/code><\/pre>\n<p>  \u0438 \u0441\u0442\u0430\u0442\u0443\u0441:<\/p>\n<pre><code class=\"bash\">$ kubectl get pod ${POD_NAME} \\   -o jsonpath='{.status.ephemeralContainerStatuses}' \\   | python3 -m json.tool [     {         \"containerID\": \"containerd:\/\/049d76...\",         \"image\": \"docker.io\/library\/busybox:latest\",         \"imageID\": \"docker.io\/library\/busybox@sha256:ebadf8...\",         \"lastState\": {},         \"name\": \"debugger\",         \"ready\": false,         \"restartCount\": 0,         \"state\": { ?          \"running\": {                 \"startedAt\": \"2022-05-29T13:41:04Z\"             }         }     } ] <\/code><\/pre>\n<p>  \u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f:<\/p>\n<pre><code class=\"bash\">$ kubectl attach -it -c debugger ${POD_NAME} # Trying to access the `app` container (a python webserver). $# wget -O - localhost:8080 Connecting to localhost:8080 (127.0.0.1:8080) writing to stdout &lt;!DOCTYPE HTML PUBLIC \"-\/\/W3C\/\/DTD HTML 4.01\/\/EN\" \"http:\/\/www.w3.org\/TR\/html4\/strict.dtd\"> &lt;html> ... &lt;\/html> <\/code><\/pre>\n<p>  \u0412\u0440\u043e\u0434\u0435 \u0431\u044b \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u043b\u043e, \u043d\u043e \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043a\u0430:<\/p>\n<pre><code class=\"bash\">$# ps auxf PID   USER     TIME  COMMAND     1 root      0:00 sh    14 root      0:00 ps auxf <\/code><\/pre>\n<p>  \u041a\u043e\u043c\u0430\u043d\u0434\u0430 <code>ps<\/code> \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 debugger \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0433\u043e \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b\u2026 \u0422\u043e \u0435\u0441\u0442\u044c, \u043a\u043e\u043c\u0430\u043d\u0434\u0430 <code>kubectl debug<\/code> \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043c\u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0441\u0435\u0442\u0435\u0432\u043e\u043c\u0443 \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441\u0443 \u0438, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, ipc, \u0438 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0430 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043a \u0442\u043e\u0439 \u0436\u0435 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0439 cgroup, \u043a\u0430\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043f\u043e\u0434\u0430, \u043d\u043e \u043d\u0430 \u044d\u0442\u043e\u043c \u0432\u0441\u0451. \u041c\u0430\u043b\u043e\u0432\u0430\u0442\u043e \u0434\u043b\u044f \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f ?<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/nk\/3w\/uo\/nk3wuo-rjgekh98haag04f6ppfs.png\" data-src=\"https:\/\/habrastorage.org\/webt\/nk\/3w\/uo\/nk3wuo-rjgekh98haag04f6ppfs.png\"\/><\/p>\n<p>  \u0412\u043e \u0432\u0440\u0435\u043c\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u043f\u043e\u0434\u043e\u043c, \u043c\u043d\u0435 \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u0432\u0438\u0434\u0435\u0442\u044c \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0432\u0441\u0435\u0445 \u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0438\u0445 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0435. \u0422\u0430\u043a \u043c\u043e\u0436\u0435\u0442 \u043b\u0438 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0431\u044b\u0442\u044c \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u00ab\u043f\u0440\u043e\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u043c\u00bb?<\/p>\n<h3>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c kubectl debug \u0441 \u043e\u0431\u0449\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c \u0438\u043c\u0435\u043d pid<\/h3>\n<p>  \u0418\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e, \u0447\u0442\u043e \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0430\u044f \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/ephemeral-containers\/#uses-for-ephemeral-containers\">\u0441\u0440\u0430\u0437\u0443 \u043f\u043e\u0434\u0441\u0432\u0435\u0447\u0438\u0432\u0430\u0435\u0442 \u044d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443<\/a>\u0438 \u0434\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435: \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0449\u0435\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438\u043c\u0435\u043d pid \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043f\u043e\u0434\u0430. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c, \u0432\u044b\u0441\u0442\u0430\u0432\u0438\u0432 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e shareProcessNamespace \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0430 \u0432 true:<\/p>\n<pre><code class=\"bash\">$ kubectl patch deployment slim --patch ' spec:   template:     spec:       shareProcessNamespace: true' <\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u0432\u043d\u0443\u0442\u0440\u044c \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f:  <\/p>\n<pre><code class=\"bash\">$ kubectl debug -it -c debugger --image=busybox \\   $(kubectl get pods -l app=slim -o jsonpath='{.items[0].metadata.name}') $# # ps auxf PID   USER     TIME  COMMAND     1 65535     0:00 \/pause     7 root      0:00 python -m http.server 8080    19 root      0:00 \/nodejs\/bin\/node -e setTimeout(() => console.log(\"done\"), 999999)    37 root      0:00 sh    49 root      0:00 ps auxf <\/code><\/pre>\n<p>  \u0423\u0436\u0435 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u043b\u0443\u0447\u0448\u0435! \u041c\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u043c \u0431\u043b\u0438\u0436\u0435 \u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0443 \u043e\u0442\u043b\u0430\u0434\u043a\u0438, \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u0432\u0441\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u0432 \u043e\u0434\u043d\u043e\u043c \u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/np\/ar\/eq\/npareqdgw6kict-eqb6hxxrxgf8.png\" data-src=\"https:\/\/habrastorage.org\/webt\/np\/ar\/eq\/npareqdgw6kict-eqb6hxxrxgf8.png\"\/><\/p>\n<p>  \u041d\u043e \u0432\u043e\u0442 \u0441 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043e\u0439 \u0432\u0441\u0435 \u0435\u0449\u0451 \u043d\u0435 \u0432\u0441\u0451 \u0433\u043b\u0430\u0434\u043a\u043e, \u043c\u044b \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u0432\u0438\u0434\u0435\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u0430 \u043d\u0435 \u043a\u0430\u043a\u043e\u0433\u043e-\u043b\u0438\u0431\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e. \u0418 \u044d\u0442\u043e \u043b\u043e\u0433\u0438\u0447\u043d\u043e \u2014 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u043f\u043e\u0434\u0435 \u043e\u0431\u044b\u0447\u043d\u043e \u0438\u043c\u0435\u044e\u0442 \u043e\u0431\u0449\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 net, ipc \u0438 uts, \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u044f\u0442\u044c pid, \u043d\u043e \u043d\u0438\u043a\u043e\u0433\u0434\u0430 \u043d\u0435 \u0441\u0442\u0430\u043d\u0443\u0442 \u043e\u0431\u044a\u0435\u0434\u0438\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 mnt. \u0424\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0432\u0441\u0435\u0433\u0434\u0430 \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u043c\u0438 \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u043c\u044b \u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0445\u0430\u043e\u0441 \u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u0444\u0430\u0439\u043b\u0430\u043c\u0438.<\/p>\n<p>  \u041d\u043e \u0432\u0441\u0435-\u0442\u0430\u043a\u0438 \u0434\u043b\u044f \u0434\u0435\u0431\u0430\u0433\u0430 \u043c\u043d\u0435 \u0431\u044b \u0445\u043e\u0442\u0435\u043b\u043e\u0441\u044c \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0430\u043a\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f\u2026 <\/p>\n<p>  \u0427\u0442\u043e \u0436, \u0435\u0441\u0442\u044c \u043e\u0434\u0438\u043d \u043f\u0440\u0438\u0435\u043c\u0447\u0438\u043a:<\/p>\n<pre><code class=\"bash\"># \u0412\u043d\u0443\u0442\u0440\u0438 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430: $# ls \/proc\/$(pgrep python)\/root\/usr\/bin c_rehash   getconf    iconv      locale     openssl    python     python3.9  zdump catchsegv  getent     ldd        localedef  pldd       python3    tzselect  $# ls \/proc\/$(pgrep node)\/root\/nodejs CHANGELOG.md  LICENSE       README.md     bin           include       share <\/code><\/pre>\n<p>  \u041f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0437\u043d\u0430\u044f PID \u0433\u043b\u0430\u0432\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0438\u0437 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043f\u0430\u0441\u0442\u044c \u0432 \u0435\u0433\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0447\u0435\u0440\u0435\u0437 \u043f\u0443\u0442\u044c \/proc\/\/root \u0434\u0435\u0431\u0430\u0436\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430!<\/p>\n<p>  \u041d\u0430\u0441\u0442\u043e\u044f\u0449\u0430\u044f \u043c\u0430\u0433\u0438\u044f! ?\u2728<\/p>\n<p>  \u041d\u043e \u0437\u0430 \u043c\u0430\u0433\u0438\u044e \u043d\u0443\u0436\u043d\u043e \u043f\u043b\u0430\u0442\u0438\u0442\u044c \u0441\u0432\u043e\u044e \u0446\u0435\u043d\u0443\u2026 \u0421\u043c\u0435\u043d\u0430 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f shareProcessNamespace \u0441\u0442\u043e\u0438\u043b\u043e \u043d\u0430\u043c \u0440\u043e\u043b\u043b-\u0430\u0443\u0442\u0430 \u043f\u043e\u0434\u0430!<\/p>\n<pre><code class=\"bash\">$ kubectl get replicasets -l app=slim NAME              DESIRED   CURRENT   READY   AGE slim-6d8c6578bc   1         1         1       119s slim-79487d6484   0         0         0       7m57s <\/code><\/pre>\n<p>  \u041a\u0430\u043a \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0430\u0442\u0440\u0438\u0431\u0443\u0442\u044b \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043f\u043e\u0434\u0430, \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 shareProcessNamespace \u0432\u0435\u0434\u0435\u0442 \u043a \u0435\u0433\u043e \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044e. \u0410 \u0435\u0433\u043e \u0441\u043c\u0435\u043d\u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u0448\u0430\u0431\u043b\u043e\u043d\u0430 Deployment \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u0440\u043e\u043b\u043b-\u0430\u0443\u0442, \u0447\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u0440\u043e\u0433\u043e\u0439 \u0446\u0435\u043d\u043e\u0439 \u0434\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0431\u044b \u043c\u044b \u043f\u043e\u0441\u0447\u0438\u0442\u0430\u043b\u0438 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u043e\u0439 \u0441\u0435\u0441\u0441\u0438\u0435\u0439. \u041d\u043e \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043f\u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u044b\u043c, \u043d\u0430 \u043c\u043e\u0439 \u0432\u0437\u0433\u043b\u044f\u0434, \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u043e\u0434\u044b \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u0441\u0432\u043e\u0434\u0438\u0442 \u043d\u0430 \u043d\u0435\u0442 \u0432\u0435\u0441\u044c \u0441\u043c\u044b\u0441\u043b \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u2014 \u0441\u0430\u043c\u0430 \u0438\u0445 \u0441\u0443\u0442\u044c \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0438\u0445 \u043a \u043f\u043e\u0434\u0443 \u0431\u0435\u0437\u0431\u043e\u043b\u0435\u0437\u043d\u0435\u043d\u043d\u043e, \u043d\u0435 \u0432\u044b\u0437\u044b\u0432\u0430\u044f \u043f\u0440\u0435\u0440\u044b\u0432\u0430\u043d\u0438\u0439 \u0432 \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<p>  \u041f\u043e\u044d\u0442\u043e\u043c\u0443, \u0435\u0441\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435 \u0432\u0430\u0448\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0441 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c shareProcessNamespace \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0447\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435-\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0440\u043e\u0448\u0430\u044f \u0438\u0434\u0435\u044f, \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u0441\u0435\u0440\u044c\u0435\u0437\u043d\u043e \u043f\u043e\u043d\u0438\u0436\u0430\u0435\u0442 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0438\u0437\u043e\u043b\u044f\u0446\u0438\u0438 \u043c\u0435\u0436\u0434\u0443 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438), \u043d\u0430\u043c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0443\u0447\u0448\u0435.<\/p>\n<h3>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c kubectl debug \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430<\/h3>\n<p>  \u0415\u0441\u043b\u0438 \u043e\u0431\u0449\u0435\u0435 \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e pid \u0434\u043b\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0435 \u0431\u044b\u043b\u043e \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u043d\u043e \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e, \u0442\u043e \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u043d\u0435\u0439\u043c\u0441\u043f\u0435\u0439\u0441 pid, \u0438, \u043a\u0430\u043a \u043c\u044b \u0432\u044b\u044f\u0441\u043d\u0438\u043b\u0438, \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c \u0432\u0441\u0435\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432.<\/p>\n<p>  \u041e\u0434\u043d\u0430\u043a\u043e, \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438, \u0443 \u043d\u0430\u0441 \u043e\u0441\u0442\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u043e\u0431\u0449\u0438\u043c \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e\u043c pid \u0441 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0432\u0437\u044f\u0442\u044b\u043c \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c!<\/p>\n<p>  \u041f\u0440\u043e \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u0442\u0430\u043b\u044c\u043d\u0435\u0435 \u043f\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0437\u0434\u0435\u0441\u044c: <a href=\"https:\/\/iximiuz.com\/en\/posts\/containers-vs-pods\/\">\u041f\u0440\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0438 \u043f\u043e\u0434\u044b<\/a><\/p>\n<p>  <a href=\"https:\/\/github.com\/kubernetes\/cri-api\/blob\/1c90a6f7abe8f5b7331c95960a5106c9876a9e4f\/pkg\/apis\/runtime\/v1\/api.pb.go#L593-L613\">\u0421\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044f Kubernetes CRI<\/a> \u044f\u0432\u043d\u044b\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u0431 \u044d\u0442\u043e\u043c \u0443\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 (\u044d\u0442\u043e\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u0432 \u0446\u0435\u043b\u043e\u043c \u043e\u0447\u0435\u043d\u044c \u0437\u0430\u043d\u044f\u0442\u043d\u043e\u0435 \u0447\u0442\u0438\u0432\u043e, \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e):<\/p>\n<pre><code class=\"bash\">\/\/ NamespaceOption provides options for Linux namespaces. type NamespaceOption struct {   \/\/ Network namespace for this container\/sandbox.   \/\/ Note: There is currently no way to set CONTAINER scoped network in the Kubernetes API.   \/\/ Namespaces currently set by the kubelet: POD, NODE   Network NamespaceMode `protobuf:\"varint,1,opt,name=network,proto3,enum=runtime.v1.NamespaceMode\" json:\"network,omitempty\"`   \/\/ PID namespace for this container\/sandbox.   \/\/ Note: The CRI default is POD, but the v1.PodSpec default is CONTAINER.   \/\/ The kubelet's runtime manager will set this to CONTAINER explicitly for v1 pods.   \/\/ Namespaces currently set by the kubelet: POD, CONTAINER, NODE, TARGET   Pid NamespaceMode `protobuf:\"varint,2,opt,name=pid,proto3,enum=runtime.v1.NamespaceMode\" json:\"pid,omitempty\"`   \/\/ IPC namespace for this container\/sandbox.   \/\/ Note: There is currently no way to set CONTAINER scoped IPC in the Kubernetes API.   \/\/ Namespaces currently set by the kubelet: POD, NODE   Ipc NamespaceMode `protobuf:\"varint,3,opt,name=ipc,proto3,enum=runtime.v1.NamespaceMode\" json:\"ipc,omitempty\"`   \/\/ Target Container ID for NamespaceMode of TARGET. This container must have been   \/\/ previously created in the same pod. It is not possible to specify different targets   \/\/ for each namespace.   TargetId             string   `protobuf:\"bytes,4,opt,name=target_id,json=targetId,proto3\" json:\"target_id,omitempty\"` } <\/code><\/pre>\n<p>  \u0418 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e, \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0438\u0441\u0442\u0430\u043b\u044c\u043d\u043e \u0432\u0437\u0433\u043b\u044f\u043d\u0443\u0432 \u043d\u0430 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u044b \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl debug<\/code>, \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u0444\u043b\u0430\u0433 <code>--target<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u044f \u0443\u043f\u0443\u0441\u0442\u0438\u043b:<\/p>\n<pre><code class=\"bash\"># \u041e\u0431\u043d\u043e\u0432\u0438\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e POD_NAME: $ POD_NAME=$(kubectl get pods -l app=slim -o jsonpath='{.items[0].metadata.name}')  $ kubectl debug -it -c debugger --target=app --image=busybox ${POD_NAME} <\/code><\/pre>\n<p>  \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u043a \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0443 \u00abapp\u00bb. \u0415\u0441\u043b\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u044b \u043f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043d\u0435 \u0432\u0438\u0434\u043d\u044b, \u044d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435\u043c \u0432\u0430\u0448\u0435\u0433\u043e container runtime.<\/p>\n<pre><code class=\"bash\">$# ps auxf PID   USER     TIME  COMMAND     1 root      0:00 python -m http.server 8080    13 root      0:00 sh    25 root      0:00 ps auxf <\/code><\/pre>\n<p>  \u0421\u0432\u044f\u0437\u043a\u0430 containerd + runc \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 ?<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/ps\/ph\/pd\/psphpdxwhoplwqf4cj5qriajjog.png\" data-src=\"https:\/\/habrastorage.org\/webt\/ps\/ph\/pd\/psphpdxwhoplwqf4cj5qriajjog.png\"\/><\/p>\n<h3>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c kubectl debug \u0441 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043f\u043e\u0434\u0430<\/h3>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>kubectl debug<\/code> \u0441 \u043e\u043f\u0446\u0438\u0435\u0439 <code>--target<\/code> \u0434\u043b\u044f \u043e\u0442\u043b\u0430\u0434\u043a\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u043e\u0434\u0430 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u043e \u0441\u0442\u0430\u043d\u0435\u0442 \u043c\u043e\u0438\u043c \u043b\u044e\u0431\u0438\u043c\u044b\u043c \u0441\u043f\u043e\u0441\u043e\u0431\u043e\u043c, \u043d\u043e \u0435\u0441\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0440\u0435\u0436\u0438\u043c, \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u0442\u043e\u0438\u0442 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c.<\/p>\n<p>  \u0412 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043b\u0443\u0447\u0448\u0435\u0439 \u0438\u0434\u0435\u0435\u0439 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u043f\u0440\u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u043a\u043e\u043f\u0438\u044e \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u0434\u0430. \u0414\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438 \u0442\u043e\u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0444\u043b\u0430\u0433 <code>--copy-to &lt;new-name><\/code>. \u041d\u043e\u0432\u044b\u0439 \u043f\u043e\u0434 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0430\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u043c\u0443 Deployment (\u0438\u043b\u0438 StatefulSet\/DaemonSet\/Job), \u0430 \u0442\u0430\u043a\u0436\u0435 Service \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0435\u0433\u043e \u043f\u0440\u0438 \u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0430\u043a\u0435\u0442\u043e\u0432. \u042d\u0442\u043e \u0431\u0443\u0434\u0435\u0442 \u00ab\u0442\u0438\u0445\u0430\u044f\u00bb \u043a\u043e\u043f\u0438\u044f \u043d\u0430\u0448\u0435\u0433\u043e \u043f\u043e\u0434\u0430 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  \u0410 \u0442\u0430\u043a \u043a\u0430\u043a \u044d\u0442\u043e \u043a\u043e\u043f\u0438\u044f, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u043d\u0430 \u043d\u0435\u0439 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u043e \u0432\u044b\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0430\u0442\u0440\u0438\u0431\u0443\u0442 shareProcessNamespace, \u043d\u0435 \u0432\u043b\u0438\u044f\u044f \u043d\u0430 \u0431\u043e\u0435\u0432\u043e\u0439 \u043f\u043e\u0434. \u042d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u0435\u0449\u0451 \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u043b\u0430\u0433\u0430 <code>--share-processes<\/code>:<\/p>\n<pre><code class=\"bash\">$ kubectl debug -it -c debugger --image=busybox \\   --copy-to test-pod \\   --share-processes \\   ${POD_NAME}  # All processes are here! $# ps auxf PID   USER     TIME  COMMAND     1 65535     0:00 \/pause     7 root      0:00 python -m http.server 8080    19 root      0:00 \/nodejs\/bin\/node -e setTimeout(() => console.log(\"done\"), 999999)    37 root      0:00 sh    49 root      0:00 ps auxf <\/code><\/pre>\n<p>  \u0412\u043e\u0442 \u0447\u0442\u043e \u043c\u044b \u0443\u0432\u0438\u0434\u0438\u043c \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u044d\u0442\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/p>\n<pre><code class=\"bash\">$ kubectl get all NAME                        READY   STATUS    RESTARTS   AGE pod\/slim-79487d6484-h4rss   2\/2     Running   0          63s pod\/test-pod                3\/3     Running   0          20s  NAME                 TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE service\/kubernetes   ClusterIP   10.96.0.1    &lt;none>        443\/TCP   11d  NAME                   READY   UP-TO-DATE   AVAILABLE   AGE deployment.apps\/slim   1\/1     1            1           64s  NAME                              DESIRED   CURRENT   READY   AGE replicaset.apps\/slim-79487d6484   1         1         1       64s <\/code><\/pre>\n<h3>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0431\u043e\u043d\u0443\u0441\u0430: \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0431\u0435\u0437 kubectl debug<\/h3>\n<p>  \u041c\u043d\u0435 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e\u0441\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043d\u044f\u0442\u044c \u0438 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0431\u0435\u0437 kubectl, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u0435\u043b\u044e\u0441\u044c \u0437\u0434\u0435\u0441\u044c \u0441\u0432\u043e\u0438\u043c \u043e\u043f\u044b\u0442\u043e\u043c.<\/p>\n<div class=\"spoiler\" role=\"button\" tabindex=\"0\">                         <b class=\"spoiler_title\">? \u0417\u0430\u0447\u0435\u043c \u043c\u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u043e\u043d\u0430\u0434\u043e\u0431\u0438\u0442\u044c\u0441\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u043d\u0435 \u0447\u0435\u0440\u0435\u0437 kubectl debug?<\/b>                         <\/p>\n<div class=\"spoiler_text\">\u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043d\u0430\u043c \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0447\u0443\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438. \u041a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0441 kubectl debug \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440 \u0441 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c \u0442\u043e\u043c\u043e\u043c (volume mount), \u0430 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 API \u044d\u0442\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u043c\u043e.<\/p><\/div>\n<\/p><\/div>\n<p>  \u0427\u0435\u0440\u0435\u0437 <code>kubectl debug -v 8<\/code> \u044f \u0432\u044b\u044f\u0441\u043d\u0438\u043b, \u0447\u0442\u043e \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 API, \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043a \u043f\u043e\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 PATCH \u043d\u0430 \u0438\u0445 \u043f\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441 \/ephemeralcontainers. <a href=\"https:\/\/medium.com\/01001101\/ephemeral-containers-the-future-of-kubernetes-workload-debugging-c5b7ded3019f\">\u0412 \u0441\u0442\u0430\u0442\u044c\u0435 2019 \u0433\u043e\u0434\u0430<\/a> \u044f \u043d\u0430\u0448\u0435\u043b \u0441\u043e\u0432\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443:<\/p>\n<pre><code class=\"bash\">kubectl replace --raw \/api\/v1\/namespaces\/&lt;ns>\/pods\/&lt;name>\/ephemeralcontainers <\/code><\/pre>\n<p>  \u043d\u043e \u044d\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 Kubernetes \u0432\u0435\u0440\u0441\u0438\u0438 1.23 \u0438 \u0432\u044b\u0448\u0435. <\/p>\n<p>  \u0412 \u0446\u0435\u043b\u043e\u043c, \u044f \u043d\u0435 \u043d\u0430\u0448\u0435\u043b \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 kubectl \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043a\u0440\u043e\u043c\u0435 debug, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440. \u041d\u043e \u0432\u043e\u0442 \u043f\u0440\u0438\u043c\u0435\u0440 \u044d\u0442\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0447\u0438\u0441\u0442\u044b\u043c Kubernetes API:<\/p>\n<pre><code class=\"bash\">$ kubectl proxy  $ POD_NAME=$(kubectl get pods -l app=slim -o jsonpath='{.items[0].metadata.name}')  $ curl localhost:8001\/api\/v1\/namespaces\/default\/pods\/${POD_NAME}\/ephemeralcontainers \\   -XPATCH \\   -H 'Content-Type: application\/strategic-merge-patch+json' \\   -d ' {     \"spec\":     {         \"ephemeralContainers\":         [             {                 \"name\": \"debugger\",                 \"command\": [\"sh\"],                 \"image\": \"busybox\",                 \"targetContainerName\": \"app\",                 \"stdin\": true,                 \"tty\": true,                 \"volumeMounts\": [{                     \"mountPath\": \"\/var\/run\/secrets\/kubernetes.io\/serviceaccount\",                     \"name\": \"kube-api-access-qnhvv\",                     \"readOnly\": true                 }]             }         ]     } }' <\/code><\/pre>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u044f\u0436\u0435\u043b\u044b\u0435 \u043e\u0431\u0440\u0430\u0437\u044b \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u0432 Kubernetes \u044d\u0442\u043e \u043d\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e (\u0432\u0441\u0435 \u043c\u044b \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b\u0438 \u0441\u0431\u043e\u0440\u043a\u0438 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0432 CI\/CD, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043b\u044f\u0442\u0441\u044f \u0438\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0434\u043e\u043b\u0433\u043e) \u0438 \u043d\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e (\u0447\u0435\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0432 \u043e\u0431\u0440\u0430\u0437, \u0442\u0435\u043c \u0432\u044b\u0448\u0435 \u0448\u0430\u043d\u0441\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u0443\u044e \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c). \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043e\u0447\u043d\u044b\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u2014 \u044d\u0442\u043e \u043a\u0440\u0430\u0439\u043d\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b, \u0438 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 Kubernetes \u043d\u0430\u043a\u043e\u043d\u0435\u0446 \u0434\u0430\u043b\u0438 \u043d\u0430\u043c \u044d\u0442\u0443 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>  \u041c\u043d\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043d\u0440\u0430\u0432\u0438\u043b\u043e\u0441\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443 kubectl debug \u043f\u043e\u0441\u043b\u0435 \u0435\u0435 \u043f\u0435\u0440\u0435\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f (\u0440\u0430\u043d\u044c\u0448\u0435 \u0435\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0431\u044b\u043b\u0438 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b). \u041d\u043e \u0437\u0434\u0435\u0441\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0437\u043d\u0430\u043d\u0438\u044f \u043d\u0438\u0437\u043a\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0441 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c\u0438 \u0438 Kubernetes \u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e. \u0418\u043d\u0430\u0447\u0435 \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0442\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u043d\u0430 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e\u0435 \u043f\u043e\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432, \u043d\u0435\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0434\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0434\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0432 \u0438 \u0444\u0430\u0439\u043b\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u0435\u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u044b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0436\u0438\u0432\u044b\u0445 \u043f\u043e\u0434\u043e\u0432.<\/p>\n<p>  \u041d\u0430\u0434\u0435\u044e\u0441\u044c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u043e\u043c\u043e\u0433\u043b\u0430 \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f debug-\u0442\u0435\u0445\u043d\u0438\u043a\u0430\u043c\u0438 \u0438 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0432\u0430\u043c \u0432 \u0431\u0443\u0434\u0443\u0449\u0435\u043c. \u0423\u0441\u043f\u0435\u0445\u043e\u0432!<\/p>\n<h3>\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b<\/h3>\n<p>  <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/ephemeral-containers\/\">Kubernetes Documentation \u2014 Ephemeral Containers.<\/a><br \/>  <a href=\"https:\/\/kubernetes.io\/docs\/tasks\/debug\/debug-application\/debug-running-pod\/#ephemeral-container\">Kubernetes Documentation \u2014 Debugging with an ephemeral debug container.<\/a><br \/>  <a href=\"https:\/\/opensource.googleblog.com\/2022\/01\/Introducing%20Ephemeral%20Containers.html\">Google Open Source Blog \u2014 Introducing Ephemeral Containers<\/a><br \/>  <a href=\"https:\/\/medium.com\/01001101\/ephemeral-containers-the-future-of-kubernetes-workload-debugging-c5b7ded3019f\">Ephemeral Containers \u2014 the future of Kubernetes workload debugging \u2014 an early take (2019)<\/a><br \/>  <a href=\"https:\/\/loft.sh\/blog\/using-kubernetes-ephemeral-containers-for-troubleshooting\/\">Using Kubernetes Ephemeral Containers for Troubleshooting<\/a><\/p>\n<h3>\u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u043e\u0432\u0430\u043d\u043e \u043a \u043f\u0440\u043e\u0447\u0442\u0435\u043d\u0438\u044e<\/h3>\n<p>  <a href=\"https:\/\/iximiuz.com\/en\/posts\/containers-vs-pods\/\">Containers vs. Pods \u2014 Taking a Deeper Look<\/a><br \/>  <a href=\"https:\/\/iximiuz.com\/en\/posts\/kubernetes-api-call-simple-http-client\/\">How To Call Kubernetes API using Simple HTTP Client<\/a><br \/>  <a href=\"https:\/\/iximiuz.com\/en\/posts\/linux-pty-what-powers-docker-attach-functionality\/\">Linux PTY \u2014 How docker attach and docker exec Commands Work Inside<\/a><\/p>\n<blockquote><p><a href=\"https:\/\/t.me\/timewebru\"><b>\u041d\u043e\u0432\u043e\u0441\u0442\u0438, \u043e\u0431\u0437\u043e\u0440\u044b \u043f\u0440\u043e\u0434\u0443\u043a\u0442\u043e\u0432 \u0438 \u043a\u043e\u043d\u043a\u0443\u0440\u0441\u044b \u043e\u0442 \u043a\u043e\u043c\u0430\u043d\u0434\u044b Timeweb.Cloud \u2014 \u0432 \u043d\u0430\u0448\u0435\u043c Telegram-\u043a\u0430\u043d\u0430\u043b\u0435<\/b><\/a> <b>\u21a9<\/b><\/p><\/blockquote>\n<p>  <a href=\"https:\/\/timeweb.cloud\/?i=106909\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/webt\/r8\/ms\/jc\/r8msjcfet9mgza3ybpor_sdgrt0.jpeg\" data-src=\"https:\/\/habrastorage.org\/webt\/r8\/ms\/jc\/r8msjcfet9mgza3ybpor_sdgrt0.jpeg\" data-blurred=\"true\"\/><\/a><\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/720510\/\"> https:\/\/habr.com\/ru\/articles\/720510\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-1\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/webt\/k2\/ze\/io\/k2zeio9fu6t71wwlhdhlmuc4wxa.png\" alt=\"image\" data-src=\"https:\/\/habrastorage.org\/webt\/k2\/ze\/io\/k2zeio9fu6t71wwlhdhlmuc4wxa.png\"\/><\/p>\n<h3>\u041f\u0440\u0435\u0434\u0438\u0441\u043b\u043e\u0432\u0438\u0435<\/h3>\n<p>  \u0421 \u0432\u0435\u0440\u0441\u0438\u0438 Kubernetes 1.16 \u0431\u044b\u043b\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 (Ephemeral Containers). \u042d\u0442\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 Pod&#8217;\u043e\u0432, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043c\u043e\u0447\u044c \u0432 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043b\u0438\u0447\u043d\u044b\u0445 \u0437\u0430\u0434\u0430\u0447 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  \u042d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043d\u0435 \u0437\u0430\u043c\u0435\u043d\u044f\u044e\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u0432 Pod&#8217;\u0430\u0445, \u0430 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u044e\u0442\u0441\u044f \u0440\u044f\u0434\u043e\u043c \u0441 \u043d\u0438\u043c\u0438 \u0432 \u0440\u0430\u043c\u043a\u0430\u0445 \u0442\u043e\u0433\u043e \u0436\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0433\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u0430 \u0438 \u0441 \u0442\u0435\u043c\u0438 \u0436\u0435 \u0442\u043e\u0447\u043a\u0430\u043c\u0438 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u042d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u044d\u0444\u0435\u043c\u0435\u0440\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b \u043c\u043e\u0433\u0443\u0442 \u043b\u0435\u0433\u043a\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c Pod&#8217;\u0430, \u0442\u0430\u043a\u0438\u043c \u043a\u0430\u043a \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0438\u043b\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u044b.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-386264","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/386264","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=386264"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/386264\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=386264"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=386264"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=386264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}