{"id":332123,"date":"2022-04-19T15:00:59","date_gmt":"2022-04-19T15:00:59","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=332123"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=332123","title":{"rendered":"<span>Kubernetes 1.24: \u043e\u0431\u0437\u043e\u0440 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042d\u0442\u043e\u0439 \u043d\u043e\u0447\u044c\u044e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044f\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Kubernetes. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 Dockershim \u2014 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0435, \u0442\u043e \u0443\u0436 \u0442\u043e\u0447\u043d\u043e \u0441\u0430\u043c\u043e\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435 1.24. \u0422\u0430\u043a\u0436\u0435 \u0441\u0440\u0435\u0434\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439: \u00ab\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f\u00bb \u0442\u043e\u043c\u043e\u0432; Network Policy Status \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432; \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u0441\u0442\u043e\u0432, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c Windows-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043a production.<\/p>\n<p>\u0412 \u043e\u0431\u0437\u043e\u0440\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\u0445 \u2014 \u043d\u043e\u0432\u044b\u0445 (alpha) \u0438 \u043e \u0442\u0435\u0445, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u044b\u0448\u0435 (beta, stable).<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/a36\/34c\/85c\/a3634c85c592dc2ff364a3e841f0ee56.png\" width=\"1600\" height=\"920\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/a36\/34c\/85c\/a3634c85c592dc2ff364a3e841f0ee56.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1T21mUTvPh70NB2eseHjCyD4LgRjyxWI9Bd1SoP8zAwA\/edit#gid=0\"><u>Kubernetes enhancements tracking<\/u><\/a>, <a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/blob\/master\/CHANGELOG\/CHANGELOG-1.24.md\"><u>CHANGELOG-1.24<\/u><\/a>, <a href=\"https:\/\/sysdig.com\/blog\/kubernetes-1-24-whats-new\/\"><u>\u043e\u0431\u0437\u043e\u0440\u0430 Sysdig<\/u><\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 issues, pull requests \u0438 Kubernetes Enhancement Proposals (KEPs).<\/p>\n<p>\u0412\u0441\u0435\u0433\u043e \u0432 \u043d\u043e\u0432\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 45 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0418\u0437 \u043d\u0438\u0445:<\/p>\n<ul>\n<li>\n<p>13 \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (alpha);\u00a0<\/p>\n<\/li>\n<li>\n<p>15 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c\u0441\u044f (beta);<\/p>\n<\/li>\n<li>\n<p>15 \u043f\u0440\u0438\u0437\u043d\u0430\u043d\u044b \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c\u0438 (stable);<\/p>\n<\/li>\n<li>\n<p>2 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041c\u044b \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0438\u0447 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439. \u041e\u043d\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0447\u0430\u0449\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0435. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 issues \u0438 KEPs \u043f\u0440\u043e\u0449\u0435 \u0433\u0443\u0433\u043b\u0438\u0442\u044c \u043f\u043e-\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438.<\/p>\n<\/div>\n<\/details>\n<h2>Dockershim removal<\/h2>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/2221\"><em><u>#2221<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/blob\/master\/keps\/sig-node\/2221-remove-dockershim\/README.md#summary\"><em><u>KEP<\/u><\/em><\/a><em>, Stable<\/em><\/p>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Docker \u0432 kubelet <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/531120\/\"><u>\u043f\u0440\u0438\u0437\u043d\u0430\u043b\u0438<\/u><\/a> \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u0432 \u043a\u043e\u043d\u0446\u0435 2020 \u0433\u043e\u0434\u0430. \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044f dockershim, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 CRI \u0434\u043b\u044f Docker. \u0412\u043c\u0435\u0441\u0442\u043e dockershim \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c containerd \u0438 CRI-O \u2014 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, <a href=\"https:\/\/kubernetes.io\/blog\/2022\/02\/17\/dockershim-faq\/#are-there-examples-of-folks-using-other-runtimes-in-production-today\"><u>\u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a production<\/u><\/a>. \u0412 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e \u0438\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0442 Docker \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u0443 \u0432\u0441\u0435\u043c: \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b K8s. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/kubernetes.io\/blog\/2022\/03\/31\/ready-for-dockershim-removal\/\"><u>Is Your Cluster Ready for v1.24?<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/migrating-from-dockershim\/\"><u>Migrating from dockershim<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/kubernetes.io\/blog\/2022\/02\/17\/dockershim-faq\/\"><u>Dockershim removal FAQ<\/u><\/a><\/p>\n<\/li>\n<\/ul>\n<h2>\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/h2>\n<h3>CSI volume health monitoring<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/1432\"><em><u>#1432<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/pull\/1077\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0432 K8s \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Persistent Volumes (PV) \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 PV, \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 PV, \u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u2014 \u043d\u0435 \u044f\u0441\u043d\u043e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0443 PV \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u0435\u043c\u043a\u043e\u0441\u0442\u044c. \u0418\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u043b PV \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0410 \u0435\u0441\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435, \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043c\u043e\u0433\u043b\u043e \u0441\u0442\u0430\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0443\u0437\u043b\u0430.<\/p>\n<p>\u0421 \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u2014 \u00ab\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f\u00bb \u0442\u043e\u043c\u043e\u0432, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 PV \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435, \u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 CSI \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u0432\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430:<\/p>\n<ol>\n<li>\n<p>\u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a sidecar CSI-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u2014 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/kubernetes-csi\/external-provisioner\"><u>external-provisioner<\/u><\/a>. \u041e\u043d \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 CSI-\u0442\u043e\u043c\u043e\u0432 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043e\u0442\u043a\u0430\u0437\u043e\u043c \u0443\u0437\u043b\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>NodeGetVolumeStats<\/code> (kubelet \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0435 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0442\u043e\u043c\u0430\u0445);<\/p>\n<\/li>\n<li>\n<p>\u0432\u043d\u0435\u0448\u043d\u0438\u0439 Node-\u0430\u0433\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a sidecar \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 CSI node driver \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0443\u0437\u043b\u0435 Kubernetes. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PV.<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0442\u043e\u043c\u043e\u0432 kubelet \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0435\u0442\u0440\u0438\u043a <code>VolumeStats<\/code>. \u0415\u0441\u043b\u0438 \u0442\u043e\u043c \u00ab\u043d\u0435\u0437\u0434\u043e\u0440\u043e\u0432\u00bb, \u043c\u0435\u0442\u0440\u0438\u043a\u0430 <code>kubelet_volume_stats_health_status_abnormal<\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043d\u0430\u0431\u0436\u0435\u043d\u0430 \u043b\u0435\u0439\u0431\u043b\u043e\u043c <code>persistentvolumeclaim<\/code> \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>1<\/code>; \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>0<\/code>.<\/p>\n<h3>Non-graceful node shutdown<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/2268\"><em><u>#2268<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-storage\/2268-non-graceful-shutdown#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em>\u00a0<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 2020-\u0433\u043e <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/530924\/\"><u>\u0432 Kubernetes 1.20<\/u><\/a> \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0430\u043b\u044c\u0444\u0430-\u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0438\u0447\u0438 Graceful Node Shutdown (<a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-node\/2000-graceful-node-shutdown\"><u>KEP-2000<\/u><\/a>). \u0415\u0441\u043b\u0438 \u0444\u0438\u0447\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0430, kubelet \u00ab\u043c\u044f\u0433\u043a\u043e\u00bb (graceful) \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 Pod&#8217;\u044b \u043d\u0430 \u0443\u0437\u043b\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0443.\u00a0<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 Node Shutdown Mananger \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0443\u0437\u0435\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b \u043f\u043e\u043b\u044f <code>ShutdownGracePeriod<\/code> \u0438 <code>ShutdownGracePeriodCriticalPods<\/code>. \u0422\u043e\u0433\u0434\u0430 Pod\u2019\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b StatefulSet\u2019\u043e\u043c \u043d\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u0443\u0437\u043b\u0435, \u043f\u043e\u0434\u0432\u0438\u0441\u0430\u044e\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 <em>Terminating<\/em>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c StatefulSet \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c Pod\u2019\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0443\u0437\u043b\u0435. \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0443\u0441\u0443\u0433\u0443\u0431\u043b\u044f\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 Pod\u2019\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u043e\u043c\u0430: VolumeAttachments \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u043a \u043f\u043e\u0434\u0432\u0438\u0441\u0448\u0438\u043c Pod\u2019\u0430\u043c. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0435 \u0432 StatefulSet\u2019\u0435, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f Pod\u2019\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 Node Shutdown Mananger \u043d\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/taint-and-toleration\/\"><u>taint\u2019\u0430<\/u><\/a> <code>out-of-service=nodeshutdown:NoExecute<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c Pod\u2019\u044b \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a \u043d\u0438\u043c \u0442\u043e\u043c\u0430 \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u044b, \u0430 \u043d\u043e\u0432\u044b\u0435 \u2014 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0443\u0437\u043b\u0435. \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u0441\u0442\u0440\u043e\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0443\u0437\u0435\u043b, \u043d\u0443\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u0434\u0430\u043b\u0438\u0442\u044c taint \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a Pod\u2019\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u044f\u0442\u0441\u044f \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0443\u0437\u043b\u0435.<\/p>\n<p>\u0424\u0438\u0447\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 Graceful Node Shutdown. \u041e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u0432\u0438\u0441\u0430\u043d\u0438\u0435 Pod\u2019\u043e\u0432 \u0432\u044b\u0437\u0432\u0430\u043d\u043e \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u00ab\u0436\u0435\u043b\u0435\u0437\u0430\u00bb \u0438\u043b\u0438 \u0438\u0437-\u0437\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u041e\u0421 \u0443\u0437\u043b\u0430.<\/p>\n<h3>Control volume mode conversion between source and target PVC<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3141\"><em><u>#3141<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-storage\/3141-prevent-volume-mode-conversion#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e API-\u0440\u0435\u0441\u0443\u0440\u0441\u0430 <code>VolumeSnapshot<\/code> \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c PVC (PersistentVolumeClaim) \u0438\u0437 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0432 <code>PVC<\/code> \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>Spec.dataSource<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u200b\u200b<code>VolumeSnapshot<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u043e\u043c\u0443 \u0443 \u0432\u043d\u043e\u0432\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e <code>PVC<\/code> \u0440\u0435\u0436\u0438\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e <code>PVC<\/code>. \u0410\u0432\u0442\u043e\u0440\u044b KEP\u2019\u0430 \u0441\u0447\u0438\u0442\u0430\u044e\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u0440\u0435\u0448\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u0437\u043b\u043e\u043c\u0430\u0442\u044c \u044f\u0434\u0440\u043e Linux.<\/p>\n<blockquote>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f<\/strong><\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c:<br \/>1) \u0441\u043e\u0437\u0434\u0430\u0435\u0442 PVC \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <code>volumeMode: Block<\/code> \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 Pod \u0441 \u044d\u0442\u0438\u043c \u0442\u043e\u043c\u043e\u043c; <br \/>2) \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 ext4; <br \/>3) \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043d\u0430\u043f\u0448\u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043c\u0430; <br \/>4) \u0441\u043e\u0437\u0434\u0430\u0435\u0442 PVC \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <code>volumeMode: Filesystem<\/code> \u0438\u0437 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430 \u0432\u044b\u0448\u0435; <br \/>5) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 PVC \u0432 Pod\u2019\u0435. <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 kubelet \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Pod\u2019\u0430. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0432\u0437\u043b\u043e\u043c\u0430\u0442\u044c \u044f\u0434\u0440\u043e, \u0435\u0441\u043b\u0438 \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c. <\/p>\n<\/blockquote>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u043e\u043c\u0443:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0432\u043d\u0435\u0441\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e API <code>VolumeSnapshotContent<\/code>: \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 <code>SourceVolumeMode<\/code>; \u0432 \u043d\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u043e\u043c\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u043d \u0441\u043d\u0430\u043f\u0448\u043e\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043b\u044f <code>VolumeSnapshot<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0437\u0430 <code>snapshot-controller<\/code> \u0438 <code>external-provisioner<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u0440\u044b KEP\u2019\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 <a href=\"https:\/\/access.redhat.com\/security\/cve\/cve-2020-12655\"><u>CVE-2020-12655<\/u><\/a> \u2014 \u0441 \u0435\u0435 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c DoS-\u0430\u0442\u0430\u043a\u0443 \u043d\u0430 \u044f\u0434\u0440\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 CVE, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0443\u0433\u0440\u043e\u0436\u0430\u043b\u0430 \u044f\u0434\u0440\u0443 (\u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 K8s), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0438\u0447\u0430, \u043f\u043e \u0441\u0443\u0442\u0438, \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442 \u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0433\u0440\u043e\u0437.<\/p>\n<h3>Beta-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>Volume populator<\/strong> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f Kubernetes 1.18 \u0438 \u0437\u0430\u043b\u043e\u0436\u0438\u0432\u0448\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u043c\u043e\u0432 \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u043d\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u2014 Generic Data Populators (<a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-storage\/1495-volume-populators\"><u>KEP<\/u><\/a>). \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432, \u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044f <code>DataSource<\/code>. \u041f\u0440\u0438\u043c\u0435\u0440\u044b:\u00a0<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0438\u0441\u043a\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u041e\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Azure file in-tree to CSI driver migration<\/strong> \u043f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Azure File \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u00ab\u0434\u0435\u0440\u0435\u0432\u0430\u00bb K8s (out-of-tree). \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 (in-tree) \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043d\u0430 CSI-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b.<\/p>\n<p><strong>Always honor reclaim policy<\/strong> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 PV, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 PVC. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0438 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/593735\/#:~:text=Honor%20Persistent%20Volume%20reclaim%20policy\"><u>\u0432 \u043e\u0431\u0437\u043e\u0440\u0435 Kubernetes 1.23<\/u><\/a>.<\/p>\n<h3>Stable-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>CSI volume expansion<\/strong> \u2014 \u043d\u0430\u0431\u043e\u0440 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 CSI-\u0442\u043e\u043c\u043e\u0432 (PV).\u00a0<\/p>\n<p><strong>Storage Capacity Tracking<\/strong> \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 Pod\u2019\u043e\u0432 \u043f\u043e \u0443\u0437\u043b\u0430\u043c, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b CSI-\u0442\u043e\u043c\u0430 \u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0439 \u0435\u043c\u043a\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p><strong>OpenStack in-tree to CSI driver migration<\/strong> \u043f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/volumes\/#openstack-csi-migration\"><u>\u043f\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443 \u043a\u043e\u0434\u0430 OpenStack Cinder<\/u><\/a> \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u00ab\u0434\u0435\u0440\u0435\u0432\u0430\u00bb Kubernetes.\u00a0<\/p>\n<p><strong>Azure disk in-tree to CSI driver migration<\/strong> \u0432\u044b\u0432\u043e\u0434\u0438\u0442 Azure Disk \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b Kubernetes.<\/p>\n<h2>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h2>\n<h3>maxUnavailable for StatefulSets<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/961\"><em><u>#961<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/blob\/master\/keps\/sig-apps\/961-maxunavailable-for-statefulset\/README.md#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0443 Stateful-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Pod\u2019\u043e\u0432 (rolling update) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 Pod\u2019\u0443 \u0437\u0430 \u0440\u0430\u0437. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c Pod \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f. \u041f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 StatefulSet\u2019\u0430 \u0432 \u043f\u043e\u043b\u0435 <code>.spec.updateStrategy.type<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>RollingUpdate<\/code>.<\/p>\n<p>\u041d\u043e\u0432\u0430\u044f \u0444\u0438\u0447\u0430 \u0432\u0432\u043e\u0434\u0438\u0442 \u0432 <code>RollingUpdate<\/code> \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 <code>maxUnavailable<\/code>, \u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e Pod\u2019\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c (\u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c) \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0424\u0438\u0447\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 stateful-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 leader\/followers: \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 followers \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e, \u0447\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>maxUnavailable<\/code> \u0432\u044b\u043a\u0430\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0441\u0435\u0439\u0447\u0430\u0441.<\/p>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u043d\u043e \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c, \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 recreate (\u00ab\u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u00bb), \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<h3>TimeZone support in CronJob<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3140\"><em><u>#3140<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/blob\/master\/keps\/sig-apps\/3140-TimeZone-support-in-CronJob\/README.md#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>CronJob \u0441\u043e\u0437\u0434\u0430\u0435\u0442 Job\u2019\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Job, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0447\u0430\u0441\u043e\u0432\u043e\u043c\u0443 \u043f\u043e\u044f\u0441\u0443 kube-controller-manager\u2019\u0430. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0431\u044b\u043b \u044d\u0442\u043e \u0443\u0447\u0435\u0441\u0442\u044c, Job\u2019\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043d\u0435 \u043f\u043e \u043f\u043b\u0430\u043d\u0443.<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0435\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432 CronJob API \u2014 <code>.spec.timeZone<\/code>, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Job.<\/p>\n<h3>Beta- \u0438 Stable-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>Track Ready Pods in Job status <\/strong>(Beta) \u0441\u043d\u0430\u0431\u0436\u0430\u0435\u0442 API \u043d\u043e\u0432\u044b\u043c \u043f\u043e\u043b\u0435\u043c <code>Job.status.ready<\/code> \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 Pod\u2019\u043e\u0432 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <code>Running<\/code> (\u00ab\u0437\u0430\u043f\u0443\u0449\u0435\u043d\u00bb) \u0438\u043b\u0438 <code>Pending<\/code> (\u00ab\u043e\u0436\u0438\u0434\u0430\u0435\u0442\u00bb). \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u043d\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u043b\u044f Deployment \u0438 StatefulSet.<\/p>\n<p><strong>Indexed Job semantics in Job API<\/strong> (Stable)<strong> <\/strong>\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432 Pod\u2019\u044b \u0442\u0435\u0445 Job, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0439 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e. \u0424\u0438\u0447\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043d\u043d\u044b\u0445 Job.<\/p>\n<p><strong>batch\/v1: add suspend field to Jobs API <\/strong>(Stable) \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c Job\u2019\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>true<\/code> \u0432 \u043f\u043e\u043b\u0435 <code>.spec.suspend<\/code> \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u043c\u0435\u043d\u044f\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 <code>false<\/code>.<\/p>\n<h2>\u0421\u0435\u0442\u044c<\/h2>\n<h3>Network Policy Status<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/2943\"><em><u>#2943<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/pull\/2947\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b Network Policy \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043e \u0442\u043e\u043c, \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043c\u043e\u0436\u0435\u0442, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443, \u0441\u043e\u0437\u0434\u0430\u0442\u044c NetworkPolicy \u0441 \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c \u043d\u0430\u0431\u043e\u0440\u043e\u043c \u043f\u043e\u0440\u0442\u043e\u0432, \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430\u043c\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c, \u0438\u043b\u0438 \u043d\u0435 \u0443\u0447\u0435\u0441\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0438\u043a\u0430\u043a\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e\u0442 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442.<\/p>\n<p>\u0424\u0438\u0447\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0438 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 NetworkPolicy \u0441 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441\u0430: <code>NetworkPolicyStatus<\/code>. \u041f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440 Network Policy \u0441\u043e\u043e\u0431\u0449\u0430\u0435\u0442 \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u043f\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441\u0430 \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0433\u043e \u043e\u0431\u044a\u0435\u043a\u0442\u0430, \u043a \u043a\u043e\u0442\u043e\u0440\u043e\u043c\u0443 \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430. \u0412 \u0446\u0435\u043b\u043e\u043c \u0444\u0438\u0447\u0443 \u043c\u043e\u0436\u043d\u043e \u0441\u0447\u0438\u0442\u0430\u0442\u044c \u0435\u0449\u0435 \u043e\u0434\u043d\u0438\u043c \u0432\u0430\u0436\u043d\u044b\u043c \u0448\u0430\u0433\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432 Kubernetes.\u00a0<\/p>\n<h3>Reserve Service IP Ranges For Dynamic and Static IP Allocation<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3070\"><em><u>#3070<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-network\/3070-reserved-service-ip-range#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0441\u043e\u0437\u0434\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0438\u0441 \u0438 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0435\u043c\u0443 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Cluster IP, \u043e\u043d \u043c\u043e\u0436\u0435\u0442 \u043d\u0435 \u0437\u043d\u0430\u0442\u044c, \u0447\u0442\u043e \u044d\u0442\u043e\u0442 \u0430\u0434\u0440\u0435\u0441 \u0443\u0436\u0435 \u043f\u0440\u0438\u0441\u0432\u043e\u0435\u043d \u0434\u0440\u0443\u0433\u043e\u043c\u0443 \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438. \u0422\u0430\u043a \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u044b. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 \u0445\u043e\u0447\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0438 \u0437\u0430\u0440\u0435\u0437\u0435\u0440\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d IP \u0434\u043b\u044f \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043a\u0430\u043a\u043e\u043c-\u043d\u0438\u0431\u0443\u0434\u044c \u0441\u0435\u0440\u0432\u0438\u0441\u0443 \u0438\u0437 \u0433\u0440\u0443\u043f\u043f\u044b \u0431\u0443\u0434\u0435\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d \u0443\u0436\u0435 \u0437\u0430\u043d\u044f\u0442\u044b\u0439 IP-\u0430\u0434\u0440\u0435\u0441, \u0441\u0435\u0440\u0432\u0438\u0441 \u043d\u0435 \u0441\u043e\u0437\u0434\u0430\u0441\u0442\u0441\u044f.<\/p>\n<p>\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u0432\u0432\u043e\u0434\u0438\u0442 \u0436\u0435\u0441\u0442\u043a\u043e\u0435 \u0437\u0430\u043a\u0440\u0435\u043f\u043b\u0435\u043d\u0438\u0435 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 IP-\u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0434\u043b\u044f \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0438 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u0440\u0430\u0437\u0434\u0430\u0447\u0438 \u2014 \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e\u0431\u044b \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u043a\u043e\u043d\u0444\u043b\u0438\u043a\u0442\u043e\u0432 \u043f\u0440\u0438 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u0441\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 IP.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/458\/010\/1cb\/4580101cb504ef03d5bc935fae2693e1.png\" width=\"1206\" height=\"234\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/458\/010\/1cb\/4580101cb504ef03d5bc935fae2693e1.png\"\/><figcaption><\/figcaption><\/figure>\n<p>\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438\u0435 IP \u0431\u0443\u0434\u0443\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u0430\u0434\u0440\u0435\u0441\u043e\u0432. \u0415\u0441\u043b\u0438 \u0436\u0435 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u0447\u0435\u0440\u043f\u0430\u043d \u2014 \u0438\u0437 \u0447\u0438\u0441\u043b\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u044b\u0445 \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u044b\u0432\u0430\u044e\u0442\u0441\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u043e\u0432, \u043c\u043e\u0436\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c <a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-network\/3070-reserved-service-ip-range#proposed-services-clusterips-allocation-model\"><u>\u0432 KEP<\/u><\/a>.<\/p>\n<h3>Beta-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>Support of mixed protocols in Services with type=LoadBalancer<\/strong> \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u043e\u0434\u043d\u0438 \u0438 \u0442\u0435 \u0436\u0435 \u043f\u043e\u0440\u0442\u044b \u0434\u043b\u044f \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u0432 UDP \u0438 TCP \u0432 \u0441\u0435\u0440\u0432\u0438\u0441\u0430\u0445 <code>LoadBalancer<\/code>. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043e\u0434\u0438\u043d \u043f\u043e\u0440\u0442 \u043c\u043e\u0436\u0435\u0442 \u043e\u0431\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c \u0438 TCP-, \u0438 UDP-\u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e\u0442 DNS- \u0438\u043b\u0438 SIP-\u0441\u0435\u0440\u0432\u0435\u0440\u0430.<\/p>\n<p><strong>Service internal traffic policy<\/strong> \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0430\u0446\u0438\u0438 \u0442\u0440\u0430\u0444\u0438\u043a\u0430 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u043b\u044f <code>spec.trafficPolicy<\/code> \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0442\u0438\u043f\u0430 <code>Service<\/code> \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e (<code>Cluster<\/code>), \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u0442\u043e\u043f\u043e\u043b\u043e\u0433\u0438\u0438 (<code>Topology<\/code>), \u0436\u0435\u0441\u0442\u043a\u043e \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u0440\u0430\u0444\u0438\u043a \u043d\u0430 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u043c \u0443\u0437\u043b\u0435 (<code>Local<\/code>) \u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u043f\u0440\u0435\u0434\u043f\u043e\u0447\u0442\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u043e\u043f\u0446\u0438\u0435\u0439 (<code>PreferLocal<\/code>).<\/p>\n<h2>CLI<\/h2>\n<h3>kubectl return code normalization (standardization)<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/2551\"><em><u>#2551<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/pull\/2574\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>kubectl \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u043c\u0438 \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u0438\u043d\u043e\u0433\u0434\u0430 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0431\u044b\u043b\u0430 \u043b\u0438 \u0438\u0441\u0445\u043e\u0434\u043d\u0430\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430 kubectl \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e. \u0410 \u0435\u0441\u043b\u0438 \u0431\u044b\u043b\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u2014 \u0442\u043e \u0433\u0434\u0435 \u043e\u043d\u0430: \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 \u0434\u0435\u043b\u043e \u0432 \u043e\u0448\u0438\u0431\u043a\u0435 \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b. \u0415\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e issues \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443. \u041f\u0440\u0438\u043c\u0435\u0440\u044b:<\/p>\n<ul>\n<li>\n<p>\u00ab<code>kubectl diff --not-yet-supported<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 1, \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044f &#171;\u041e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u0438\u044f&#187;\u00bb (<a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/99354\"><u>#99354<\/u><\/a>).<\/p>\n<\/li>\n<li>\n<p>\u00ab\u041d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u0439 \u043a\u043e\u0434 \u043e\u0448\u0438\u0431\u043a\u0438, \u0435\u0441\u043b\u0438 \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0443\u0441\u0442\u00bb (<a href=\"https:\/\/github.com\/kubernetes\/kubectl\/issues\/847\"><u>#847<\/u><\/a>).<\/p>\n<\/li>\n<li>\n<p>\u00abkubectl exec \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u0435\u0442\u0441\u044f \u0441 \u043a\u043e\u0434\u043e\u043c 0\u00bb (<a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/73056\"><u>#73056<\/u><\/a>).<\/p>\n<\/li>\n<\/ul>\n<p>\u0422\u0430\u043a \u0432\u043e\u0437\u043d\u0438\u043a\u043b\u0430 \u0438\u0434\u0435\u044f \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u0434\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f kubectl \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0430\u0432\u0442\u043e\u0440\u044b KEP\u2019\u0430:<\/p>\n<ol>\n<li>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u043e\u0448\u0438\u0431\u043e\u043a \u043d\u0430 \u0441\u0442\u043e\u0440\u043e\u043d\u0435 \u043a\u043b\u0438\u0435\u043d\u0442\u0430 \u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u0435\u0442 \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0437\u0430\u043f\u0440\u043e\u0441 kubectl.<\/p>\n<\/li>\n<li>\n<p>\u0421\u043e\u0441\u0442\u0430\u0432\u0438\u043b\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u0441 \u043a\u043e\u0434\u0430\u043c\u0438 \u043e\u0448\u0438\u0431\u043e\u043a, \u0447\u0442\u043e\u0431\u044b:<\/p>\n<p>\u0430) \u0440\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044c \u0432\u043d\u0435\u0448\u043d\u0438\u043c \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c \u0438\u043b\u0438 \u043f\u043e\u0434\u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>diff<\/code> \u0438 <code>exec<\/code>) \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u0447\u0430\u0449\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u0441\u0432\u043e\u0438 \u043a\u043e\u0434\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439;<\/p>\n<p>\u0431) \u043e\u0442\u043b\u0438\u0447\u0430\u0442\u044c \u043a\u043e\u0434\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f, \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0430\u043c\u0438\u043c kubectl, \u043e\u0442 \u043a\u043e\u0434\u043e\u0432 \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u043a\u043e\u043c\u0430\u043d\u0434 \u0438 \u043f\u043e\u0434\u043a\u043e\u043c\u0430\u043d\u0434.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u043e\u0431\u0449\u0438\u0439 \u043c\u0435\u0442\u043e\u0434, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043c\u043e\u0433\u0443\u0442 \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e (\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0430\u0446\u0438\u044e) \u043a\u043e\u0434\u0430 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438.\u00a0<\/p>\n<\/li>\n<\/ol>\n<p>\u0421\u043f\u0438\u0441\u043e\u043a \u043d\u043e\u0432\u044b\u0445 \u043a\u043e\u0434\u043e\u0432 \u043e\u0448\u0438\u0431\u043e\u043a:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\"><strong>\u041a\u043e\u0434<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"left\"><strong>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">1-200<\/p>\n<\/td>\n<td>\n<p align=\"left\">Reserved for exit codes from exec and external commands<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">201<\/p>\n<\/td>\n<td>\n<p align=\"left\">Catch-all for errors where the condition is unknown or no better codes exist to describe it<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">202<\/p>\n<\/td>\n<td>\n<p align=\"left\">Missing or improper use of keyword, command, or argument<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">203<\/p>\n<\/td>\n<td>\n<p align=\"left\">Client configuration error, invalid or missing configuration<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">204<\/p>\n<\/td>\n<td>\n<p align=\"left\">Network failure, API could not be reached<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">205<\/p>\n<\/td>\n<td>\n<p align=\"left\">Authentication failure, identity could not be determined<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">206<\/p>\n<\/td>\n<td>\n<p align=\"left\">Authorization failure, identity was determined, but does not have access to requested resource(s)<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">207<\/p>\n<\/td>\n<td>\n<p align=\"left\">Unknown or invalid request to API<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">208<\/p>\n<\/td>\n<td>\n<p align=\"left\">Request timed out<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">209<\/p>\n<\/td>\n<td>\n<p align=\"left\">Resource not found<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">210<\/p>\n<\/td>\n<td>\n<p align=\"left\">Resource already exists<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">211<\/p>\n<\/td>\n<td>\n<p align=\"left\">Resource expired<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">212<\/p>\n<\/td>\n<td>\n<p align=\"left\">Conflict while updating resource<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">213<\/p>\n<\/td>\n<td>\n<p align=\"left\">An underlying service was unavailable<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">214<\/p>\n<\/td>\n<td>\n<p align=\"left\">API internal error<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">215<\/p>\n<\/td>\n<td>\n<p align=\"left\">Too many requests<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">216<\/p>\n<\/td>\n<td>\n<p align=\"left\">Request entity too large<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">217<\/p>\n<\/td>\n<td>\n<p align=\"left\">Unexpected response from API<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td data-colwidth=\"70\" width=\"70\">\n<p align=\"left\">255<\/p>\n<\/td>\n<td>\n<p align=\"left\">An external command returned an exit code equal to or greater than 201, which is reserved for kubectl<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0424\u0438\u0447\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 <code>KUBECTL_ERROR_CODES<\/code>: \u0435\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0431\u044b\u0442\u044c \u043d\u0435\u043f\u0443\u0441\u0442\u044b\u043c \u0438 \u043e\u0442\u043b\u0438\u0447\u043d\u044b\u043c \u043e\u0442 <code>0<\/code> \/ <code>false<\/code>.<\/p>\n<h3>Add subresource support in kubectl<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/2590\"><em><u>#2590<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-cli\/2590-kubectl-subresource#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u041f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 API-\u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 <code>status<\/code> \u0438 <code>scale<\/code> \u0447\u0435\u0440\u0435\u0437 kubectl \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u0435\u043d: \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f <code>kubectl --raw<\/code>. \u0410 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 curl. \u042d\u0442\u043e \u0443\u0441\u043b\u043e\u0436\u043d\u044f\u0435\u0442 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u043e\u0442\u043b\u0430\u0434\u043a\u0443 \u043f\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432.<\/p>\n<p>\u041d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u0444\u043b\u0430\u0433 <code>--subresource=[subresource-name]<\/code> \u043a \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c <code>kubectl get<\/code> \u0438 <code>kubectl patch<\/code>. \u042d\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u0438\u0442 \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c \u043f\u0440\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441\u044b <code>status<\/code> \u0438 <code>scale<\/code>, \u043e\u043f\u0435\u0440\u0438\u0440\u0443\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u0430\u043c\u0438 kubectl.<\/p>\n<p>\u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u0435 <code>get<\/code> \u0438 \u0444\u043b\u0430\u0433\u0430 <code>--subresource=status<\/code> \u0432\u044b\u0434\u0430\u0441\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u043f\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441\u0435 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u044d\u0442\u043e \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0434\u043b\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430:<\/p>\n<pre><code>$ kubectl get deployment nginx-deployment --subresource=status NAME               READY   UP-TO-DATE   AVAILABLE   AGE nginx-deployment   3\/3     3            3           43s<\/code><\/pre>\n<pre><code>$ kubectl get deployment nginx-deployment --subresource=scale NAME               DESIREDREPLICAS   AVAILABLEREPLICAS nginx-deployment   3                 3<\/code><\/pre>\n<p>\u0422\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u2014 \u0441 Custom Resources:<\/p>\n<pre><code>$ kubectl get crontab cron --subresource=status NAME   SPEC          REPLICAS   AGE cron   * * * * *\/5   3          4m52s<\/code><\/pre>\n<pre><code>$ kubectl get crontab cron --subresource=scale NAME   DESIREDREPLICAS   AVAILABLEREPLICAS cron   3                 0<\/code><\/pre>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440 \u0441 <code>patch<\/code>, \u043a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c <code>spec.replicas<\/code>:<\/p>\n<pre><code>$ kubectl patch deployment nginx-deployment --subresource='scale' --type='merge' -p '{\"spec\":{\"replicas\":2}}' scale.autoscaling\/nginx-deployment patched<\/code><\/pre>\n<p>\u0414\u0430\u043b\u0435\u0435 \u043c\u043e\u0436\u043d\u043e \u0443\u0432\u0438\u0434\u0435\u0442\u044c, \u0447\u0442\u043e <code>spec.replicas<\/code> \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0434\u043b\u044f \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0440\u0435\u0441\u0443\u0440\u0441\u0430:<\/p>\n<pre><code>$ kubectl get deploy nginx-deployment NAME               READY   UP-TO-DATE   AVAILABLE   AGE nginx-deployment   2\/2     2            2           4m<\/code><\/pre>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u044f\u0442\u044c \u0444\u0438\u0447\u0443 \u0438 \u0434\u043b\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b <code>kubectl apply<\/code> \u2014 \u0435\u0441\u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043e\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430.<\/p>\n<h2>\u0423\u0437\u043b\u044b<\/h2>\n<p>Alpha-\u0444\u0438\u0447 \u043d\u0435\u0442.<\/p>\n<h3>Beta- \u0438 Stable-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>Kubelet Credential Provider <\/strong>(Beta) \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 \u043f\u043e\u0441\u0442\u0430\u0432\u0449\u0438\u043a\u043e\u0432 \u0443\u0447\u0435\u0442\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 container registry ACR, ECR \u0438 GCR \u0432\u043d\u0435\u0448\u043d\u0438\u043c\u0438. \u0422\u0435\u043f\u0435\u0440\u044c kubelet \u043c\u043e\u0436\u0435\u0442 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430.<\/p>\n<p><strong>PriorityClassValueBasedGracefulShutdown<\/strong> (Beta) \u0434\u0430\u0435\u0442 Pod\u2019\u0430\u043c \u0441 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043e\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443, \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u043d\u0430 \u0443\u0437\u043b\u0430\u0445 \u0441 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u043e\u0439 \u00ab\u043c\u044f\u0433\u043a\u043e\u0433\u043e\u00bb \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0431\u0438\u0440\u0430\u0442\u044c \u0440\u0430\u0437\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>priorityClassName<\/code>.\u00a0<\/p>\n<p><strong>gRPC probes<\/strong> (Beta)<strong> <\/strong>\u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432 \u0430\u043b\u044c\u0444\u0430-\u0432\u0435\u0440\u0441\u0438\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/593735\/#:~:text=Add%20gRPC%20probe%20to%20Pod\"><u>\u0432 \u043f\u0440\u043e\u0448\u043b\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 K8s<\/u><\/a>. \u0422\u0435\u043f\u0435\u0440\u044c liveness-, readiness- \u0438 startup-\u043f\u0440\u043e\u0431\u044b, \u043f\u043e\u043c\u0438\u043c\u043e HTTP(S) \u0438 TCP, \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u044e\u0442 gRPC \u2014 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u0439 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440. gRPC \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u0435\u043d \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435.\u00a0<\/p>\n<p><strong>PodOverhead<\/strong> (Stable)<strong> <\/strong>\u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 Pod\u2019\u0443 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0441\u0432\u0435\u0440\u0445 \u0437\u0430\u043f\u0440\u043e\u0448\u0435\u043d\u043d\u044b\u0445, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f.\u00a0<\/p>\n<h2>API<\/h2>\n<p>Alpha-\u0444\u0438\u0447 \u043d\u0435\u0442.<\/p>\n<h3>Beta- \u0438 Stable-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>Beta Graduation Criteria for Field Validation<\/strong> (Beta) \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0443 \u043d\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 K8s, \u0435\u0441\u043b\u0438 \u0432 \u0437\u0430\u043f\u0440\u043e\u0441\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u044b \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0435 \u0438\u043b\u0438 \u043d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0435 \u043f\u043e\u043b\u044f. \u0410\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 <code>kubectl -validate=true<\/code>.<\/p>\n<p><strong>OpenAPI enum types<\/strong> (Beta) \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 OpenAPI, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f, \u0442\u043e \u0435\u0441\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0442\u0438\u043f\u0430 enum. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u0444\u0438\u0447\u0435 \u2014 <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/593735\/#:~:text=%D0%BF%D1%80%D0%BE%D0%B2%D0%B5%D1%80%D0%BA%D0%B8%20custom%20resources.-,OpenAPI%20enum%20types,-%232887%3B%20KEP%3B%20Alpha\"><u>\u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u0431\u0437\u043e\u0440\u0435 Kubernetes 1.23<\/u><\/a>.\u00a0<\/p>\n<p><strong>OpenAPI v3<\/strong> (Beta) \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 <code>kube-apiserver<\/code> \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0438 \u0442\u0438\u043f\u044b Kubernetes \u043a\u0430\u043a \u043e\u0431\u044a\u0435\u043a\u0442\u044b OpenAPI v3. \u0420\u0430\u043d\u0435\u0435 \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u0430\u0446\u0438\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0439 OpenAPI v3 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u043b\u0430\u0441\u044c \u0447\u0435\u0440\u0435\u0437 CRD; \u0434\u0435\u043b\u0430\u043b\u043e\u0441\u044c \u044d\u0442\u043e \u043d\u0435 \u0432\u043f\u043e\u043b\u043d\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p><strong>Efficient watch resumption<\/strong> (Stable) \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 kube-apiserver\u2019\u0443 \u043f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0435\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c watch-\u043a\u044d\u0448.<\/p>\n<h2>\u0420\u0430\u0437\u043d\u043e\u0435<\/h2>\n<h3>A Windows-[operational readiness] definition and tooling convergence<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/2578\"><em><u>#2578<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/pull\/2975\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 Windows \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0432 Kubernetes 1.14. \u0421 \u0442\u0435\u0445 \u043f\u043e\u0440 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e E2E-\u0442\u0435\u0441\u0442\u043e\u0432, \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043d\u044b\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <a href=\"https:\/\/onsi.github.io\/ginkgo\/\"><u>Ginkgo<\/u><\/a> (\u00ab\u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0435\u00bb, \u0438\u043b\u0438 conformance tests). \u041e\u0434\u043d\u0430\u043a\u043e \u0438\u0445 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b \u043c\u0430\u043b\u043e \u0433\u043e\u0432\u043e\u0440\u044f\u0442 \u043e \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0439 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 K8s-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0431\u0438\u0437\u043d\u0435\u0441-\u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043e\u0434 Windows. \u042d\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043e\u0446\u0435\u043d\u043a\u0430 production-\u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u0434\u043b\u044f Windows-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043f\u0440\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u043d\u0430 \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043d\u0435 \u0442\u0430\u043a \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043a\u0430\u043a \u0434\u043b\u044f Linux-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432.<\/p>\n<p>\u0412 \u0440\u0430\u043c\u043a\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u00ab\u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 \u043a \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438\u00bb Kubernetes-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043d\u0430 \u0431\u0430\u0437\u0435 Windows. \u041e\u043d \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u043d\u0430\u0433\u0440\u0443\u0437\u043e\u043a \u0432 production, \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043f\u0440\u0430\u0432\u0438\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 E2E-\u0442\u0435\u0441\u0442\u043e\u0432, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u0440\u0438\u0442\u0435\u0440\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f Windows-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0430 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430 \u0434\u0438\u0430\u0433\u043d\u043e\u0441\u0442\u0438\u043a\u0438 <a href=\"https:\/\/sonobuoy.io\/\"><u>Sonobuoy<\/u><\/a>. \u0415\u0449\u0435 \u043e\u0434\u043d\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0430 \u2014 \u0438\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u0446\u0435\u043d\u0437\u0435\u043d\u0442\u043e\u0432 \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u043c\u0438 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 <a href=\"https:\/\/github.com\/kubernetes\/community\/tree\/master\/sig-windows\"><u>SIG-Windows<\/u><\/a> \u043e\u0431 \u043e\u0431\u0449\u0438\u0445 \u0446\u0435\u043b\u044f\u0445 \u0442\u0435\u0441\u0442\u043e\u0432.<\/p>\n<p>\u0414\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438 Windows-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0442\u0435\u0441\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043a\u0440\u043e\u044e\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043e\u0431\u043b\u0430\u0441\u0442\u0435\u0439:<\/p>\n<ul>\n<li>\n<p>\u0411\u0430\u0437\u043e\u0432\u043e\u0435 \u0441\u0435\u0442\u0435\u0432\u043e\u0435 \u0432\u0437\u0430\u0438\u043c\u043e\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0411\u0430\u0437\u043e\u0432\u044b\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0430\u043a\u043a\u0430\u0443\u043d\u0442\u044b \u0438 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0411\u0430\u0437\u043e\u0432\u043e\u0435 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435.<\/p>\n<\/li>\n<li>\n<p>\u0411\u0430\u0437\u043e\u0432\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0439 \u0440\u0430\u0431\u043e\u0442\u044b.<\/p>\n<\/li>\n<li>\n<p>\u041e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u0430\u044f \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c Windows HostProcess.<\/p>\n<\/li>\n<li>\n<p>Active Directory.<\/p>\n<\/li>\n<li>\n<p>\u0421\u0435\u0442\u0435\u0432\u044b\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438.<\/p>\n<\/li>\n<li>\n<p>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435 \u0441\u0435\u0442\u0435\u0432\u044b\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Windows \u0438 \u043f\u0440\u043e\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0443\u0436\u0431.<\/p>\n<\/li>\n<li>\n<p>\u041a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0440\u0430\u0431\u043e\u0447\u0438\u0445 \u0441\u0442\u0430\u043d\u0446\u0438\u0439 Windows.<\/p>\n<\/li>\n<\/ul>\n<p>\u0424\u0438\u0447\u0430 \u043f\u0435\u0440\u0435\u0439\u0434\u0435\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441 \u0431\u0435\u0442\u0430-\u0432\u0435\u0440\u0441\u0438\u0438, \u043a\u043e\u0433\u0434\u0430 \u0431\u0443\u0434\u0443\u0442 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u044b \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0442\u0435\u0441\u0442\u044b.<\/p>\n<h3>Contextual logging<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3077\"><em><u>#3077<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-instrumentation\/3077-contextual-logging#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u042d\u0442\u043e \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u2014 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0439 \u0448\u0430\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043d\u0438\u0436\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c \u043e\u0442 klog (\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f K8s) \u0438 \u0435\u0435 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0439. \u041a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u043e\u0435 \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u043e \u043d\u0430 \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u043e\u0435 <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/516322\/#:~:text=%D0%94%D1%80%D1%83%D0%B3%D0%BE%D0%B5%20%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B5%20%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B5%3A%20%D0%B2%D1%8B%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%B0%D0%BD%20%D1%81%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%20%D0%B4%D0%BB%D1%8F%20%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D1%85%20%D0%BB%D0%BE%D0%B3%D0%BE%D0%B2.\"><u>\u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0432 Kubernetes 1.19<\/u><\/a>. \u0424\u0438\u0447\u0430 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0434\u0432\u0430 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u043d\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432:<\/p>\n<ul>\n<li>\n<p>\u0421\u043c\u0435\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439: \u0432\u043c\u0435\u0441\u0442\u043e \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e <code>logger<\/code>\u2019\u0430 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0442\u0435\u043f\u0435\u0440\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u044d\u043a\u0437\u0435\u043c\u043f\u043b\u044f\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u043c \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442\u0441\u044f.<\/p>\n<\/li>\n<li>\n<p>\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>WithValues<\/code> \u0438 <code>WithName<\/code>, \u0447\u0442\u043e\u0431\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e logger\u2019\u0443 (\u0438 \u043d\u0430 \u0432\u044b\u0432\u043e\u0434 \u043b\u043e\u0433\u0430).\u00a0\u00a0<\/p>\n<\/li>\n<\/ul>\n<p>\u041d\u043e\u0432\u044b\u0439 logger \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0441\u043e\u0437\u0434\u0430\u043d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>WithName<\/code>:<\/p>\n<pre><code>logger := klog.FromContext(ctx).WithName(\"foo\")<\/code><\/pre>\n<p>\u0422\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u0442\u0430\u043a\u043e\u043c \u0435\u0433\u043e \u0432\u044b\u0437\u043e\u0432\u0435:<\/p>\n<pre><code>logger.Info(\"Done\")<\/code><\/pre>\n<p>\u2026 \u0432\u044b\u0432\u043e\u0434 \u0431\u0443\u0434\u0435\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 <code>foo<\/code>.\u00a0<\/p>\n<p>\u041e\u0434\u0438\u043d \u0438\u0437 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u0435\u0439\u0441\u043e\u0432 \u2014 \u044e\u043d\u0438\u0442-\u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u043a\u043e\u0433\u0434\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 \u0445\u043e\u0442\u044f\u0442 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u044c \u043b\u043e\u0433\u0438 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0438\u0437 \u0442\u0435\u0441\u0442\u043e\u0432 \u043f\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c \u0432\u044b\u0432\u043e\u0434\u0430\u043c. \u0422\u0435\u043f\u0435\u0440\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u043a\u043e\u0434 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a.<\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0441\u043c\u0435\u043d\u0430 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0438\u0437\u0431\u0430\u0432\u0438\u0442\u044c\u0441\u044f \u043e\u0442 \u0432\u043b\u0438\u044f\u043d\u0438\u044f klog. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 logger \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u0443\u044e \u0438\u043c\u043f\u043b\u0435\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044e <code>logr.Logger<\/code>.<\/p>\n<h3>Min domains in PodTopologySpread<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3022\"><u>#3022<\/u><\/a>; <a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-scheduling\/3022-min-domains-in-pod-topology-spread#summary\"><u>KEP<\/u><\/a>; Alpha<\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0438\u0447\u0438 <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/workloads\/pods\/pod-topology-spread-constraints\/\"><u>Pod Topology Spread<\/u><\/a> \u043c\u043e\u0436\u043d\u043e \u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c Pod&#8217;\u044b \u043f\u043e multi-zone-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0443. \u0423 \u0444\u0438\u0447\u0438 \u0435\u0441\u0442\u044c \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>maxSkew<\/code>; \u043e\u043d \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442, \u0441\u043a\u043e\u043b\u044c\u043a\u043e Pod\u2019\u043e\u0432 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043e \u043d\u0435\u0440\u0430\u0432\u043d\u043e\u043c\u0435\u0440\u043d\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 (topology domains \u2014 \u0442\u043e \u0435\u0441\u0442\u044c \u0440\u0435\u0433\u0438\u043e\u043d\u043e\u0432, \u0437\u043e\u043d \u0438 \u0442. \u043f.), \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f \u044d\u0442\u0438 Pod\u2019\u044b, \u043d\u0435\u0442. \u0412 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c Pod\u2019\u044b \u043f\u043e \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u043c\u0443 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0443 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0438, \u0435\u0441\u043b\u0438 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e, \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c Cluster Autoscaler \u0438\u0445 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c.<\/p>\n<p>\u041c\u043e\u0436\u0435\u0442 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u0443\u0442\u044c \u0438 \u0435\u0449\u0435 \u043e\u0434\u043d\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430: \u0434\u043e\u043c\u0435\u043d, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b\u043b \u043f\u0435\u0440\u0435\u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d Cluster Autoscaler\u2019\u043e\u043c \u0434\u043e 0, \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u043c \u0434\u043b\u044f scheduler\u2019\u0430. \u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0431\u0443\u0434\u0443\u0442 \u043d\u0435\u0432\u043e\u0441\u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u044b.<\/p>\n<p>\u041d\u043e\u0432\u0430\u044f \u0444\u0438\u0447\u0430 \u0440\u0435\u0448\u0430\u0435\u0442 \u043e\u0431\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0442\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u0435\u0442 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b \u2014 \u0434\u0430\u0436\u0435 \u0435\u0441\u043b\u0438 \u043e\u043d\u0438 \u043d\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0442 \u043d\u0430 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u043d\u043e\u0432\u044b\u0445 Pod\u2019\u043e\u0432. \u041f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0434\u043e\u043c\u0435\u043d \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c\u0441\u044f, \u0430 Cluster Autoscaler \u2014 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0442\u044c \u043d\u043e\u0432\u044b\u0435 \u0443\u0437\u043b\u044b \u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430.\u00a0<\/p>\n<p>\u0424\u0438\u0447\u0430 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440 <code>minDomains<\/code> \u2014 \u043d\u043e \u043f\u0440\u0438 \u0443\u0441\u043b\u043e\u0432\u0438\u0438, \u0447\u0442\u043e \u0432 \u043f\u043e\u043b\u0435 <code>whenUnsatisfiable<\/code> \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>DoNotSchedule<\/code>.<\/p>\n<p>\u041f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<pre><code class=\"yaml\">apiVersion: apps\/v1 kind: Deployment metadata:   name: nginx-deployment spec:   selector:     matchLabels:       app: nginx   replicas: 10   template:     metadata:       labels:         foo: bar     spec:       containers:         - name: nginx           image: nginx:1.14.2           ports:             - containerPort: 80       topologySpreadConstraints:         - maxSkew: 2           minDomains: 5           topologyKey: kubernetes.io\/hostname           whenUnsatisfiable: DoNotSchedule           labelSelector:             matchLabels:               foo: bar<\/code><\/pre>\n<p>\u0414\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0435\u0441\u0442\u044c \u0442\u0440\u0438 \u0443\u0437\u043b\u0430, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043c\u043e\u0433\u0443\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c\u0441\u044f Pod\u2019\u044b. 6 \u0438\u0437 10 Pod\u2019\u043e\u0432 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e \u044d\u0442\u0438\u043c \u0442\u0440\u0435\u043c \u0443\u0437\u043b\u0430\u043c. \u041e\u0441\u0442\u0430\u0432\u0448\u0438\u0435\u0441\u044f 4 Pod\u2019\u0430 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u044b, \u0442\u043e\u043b\u044c\u043a\u043e \u0435\u0441\u043b\u0438 \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440 \u0434\u043e\u0431\u0430\u0432\u044f\u0442\u0441\u044f \u0435\u0449\u0435 \u0434\u0432\u0430 \u0443\u0437\u043b\u0430. \u0412 \u0438\u0442\u043e\u0433\u0435, \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, Deployment \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043f\u043e \u043a\u0440\u0430\u0439\u043d\u0435\u0439 \u043c\u0435\u0440\u0435 \u043f\u043e \u043f\u044f\u0442\u0438 \u0443\u0437\u043b\u0430\u043c, \u0438 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 <code>maxSkew<\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u043e.<\/p>\n<h3>Signing release artifacts<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3031\"><em><u>#3031<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/pull\/3061\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0435 \u043d\u0430\u0446\u0435\u043b\u0435\u043d\u043e \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e\u0431\u044b \u0437\u0430\u0449\u0438\u0442\u0438\u0442\u044c \u041f\u041e, \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u043e\u0435 \u0432 K8s, \u043e\u0442 \u0430\u0442\u0430\u043a\u0438 \u043d\u0430 \u0446\u0435\u043f\u043e\u0447\u043a\u0443 \u043f\u043e\u0441\u0442\u0430\u0432\u043e\u043a (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Supply_chain_attack\"><u>supply chain attack<\/u><\/a>). \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c \u0438 \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u043e\u0434\u043f\u0438\u0441\u0438 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432 \u0440\u0435\u043b\u0438\u0437\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u043e Kubernetes. \u041f\u043e\u0434 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430\u043c\u0438 \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e\u0442\u0441\u044f \u0431\u0438\u043d\u0430\u0440\u043d\u044b\u0435 \u0444\u0430\u0439\u043b\u044b, \u043e\u0431\u0440\u0430\u0437\u044b, \u0447\u0435\u043a-\u0441\u0443\u043c\u043c\u044b \u0444\u0430\u0439\u043b\u043e\u0432, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u044f, \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0435 \u0438 \u0434\u0440\u0443\u0433\u043e\u0435. \u0417\u0430 \u043e\u0441\u043d\u043e\u0432\u0443 \u0432\u0437\u044f\u0442 <a href=\"https:\/\/www.sigstore.dev\/\"><u>sigstore<\/u><\/a> \u2014 \u043f\u0440\u043e\u0435\u043a\u0442 Linux Foundation, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u043d\u0430\u0431\u043e\u0440 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0434\u043b\u044f \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u043f\u043e\u0434\u043f\u0438\u0441\u0438.\u00a0<\/p>\n<p>\u041a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0446\u0435\u043f\u043e\u0447\u043a\u0438 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u2014 <a href=\"https:\/\/github.com\/sigstore\/cosign\"><u>cosign<\/u><\/a>, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u043f\u043e\u0434\u043f\u0438\u0441\u0438, \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0438 \u0445\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0432 <a href=\"https:\/\/opencontainers.org\/\"><u>OCI<\/u><\/a>-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.\u00a0<\/p>\n<p>\u0424\u0438\u0447\u0443 \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0443\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441 Beta \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a \u043f\u043e\u044f\u0432\u0438\u0442\u0441\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u043e\u0434\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0435 \u0434\u043b\u044f Kubernetes \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u044b \u0440\u0435\u043b\u0438\u0437\u0430 \u2014 \u0431\u0438\u043d\u0430\u0440\u043d\u0438\u043a\u0438 \u0438 \u043e\u0431\u0440\u0430\u0437\u044b; \u0432 Stable \u2014 \u043a\u043e\u0433\u0434\u0430 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0437\u0430\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0434\u043b\u044f \u0432\u0441\u0435\u0445 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u043e\u0432.<\/p>\n<h3>Beta-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>Reduction of Secret-based Service Account Tokens<\/strong> \u0438\u0437\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d <code>Secret<\/code> \u0441 \u0443\u0447\u0435\u0442\u043d\u044b\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a API. \u0422\u0435\u043f\u0435\u0440\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u0434\u0442\u044f\u0433\u0438\u0432\u0430\u044e\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 <a href=\"https:\/\/kubernetes.io\/docs\/reference\/kubernetes-api\/authentication-resources\/token-request-v1\/\"><u>TokenRequest API<\/u><\/a> \u0438 \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0432 Pod \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u0430\u0449\u0438\u0449\u0435\u043d\u043d\u043e\u0433\u043e \u0442\u043e\u043c\u0430.<\/p>\n<p><strong>Identify Windows pods at API admission level authoritatively<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0435 <code>OS<\/code> \u0432 <code>PodSpec<\/code>, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043d\u0430 \u0431\u0430\u0437\u0435 \u043a\u0430\u043a\u043e\u0439 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0434\u043e\u043b\u0436\u0435\u043d \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c\u0441\u044f Pod. \u042d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 Kubernetes \u0432 \u0447\u0430\u0441\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f Pod\u2019\u0430\u043c\u0438. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0440\u0430\u0441\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u044b Pod\u2019\u043e\u0432 \u043d\u0430 \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0445 \u0443\u0437\u043b\u0430\u0445 \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a.<\/p>\n<p><strong>Deprecate klog specific flags in Kubernetes components<\/strong> \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u0442\u0440\u0435\u0442\u0438\u0439 \u044d\u0442\u0430\u043f \u0431\u043e\u043b\u044c\u0448\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044e \u0440\u0430\u0431\u043e\u0442\u044b \u0441 \u043b\u043e\u0433\u0430\u043c\u0438 \u0432 Kubernetes. \u0413\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0434\u0430\u0447\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u2014 \u043e\u0442\u043a\u0430\u0437 \u043e\u0442 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 klog. \u0421 \u044d\u0442\u043e\u0439 \u0444\u0438\u0447\u0435\u0439 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0444\u043b\u0430\u0433\u043e\u0432 \u0434\u043b\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 klog \u043f\u0440\u0438\u0437\u043d\u0430\u043d\u0430 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439. \u041f\u043e \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c \u043f\u043b\u0430\u043d\u0430\u043c, \u0444\u043b\u0430\u0433\u0438 \u0443\u0434\u0430\u043b\u044f\u0442 \u0432 Kubernetes 1.26. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435 \u043e\u0431 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0438 \u2014 <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/593735\/#:~:text=Deprecate%20klog%20specific%20flags%20in%20Kubernetes%20components\"><u>\u0432 \u043d\u0430\u0448\u0435\u043c \u043e\u0431\u0437\u043e\u0440\u0435 K8s 1.23<\/u><\/a>.<\/p>\n<h3>Stable-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>Non-preempting Priority to GA<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043e\u043f\u0446\u0438\u044e <code>PreemptionPolicy: Never<\/code>, \u043f\u0440\u0438 \u0430\u043a\u0442\u0438\u0432\u0430\u0446\u0438\u0438 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 Pod\u2019\u044b \u0441 \u0432\u044b\u0441\u043e\u043a\u0438\u043c \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043e\u043c \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u044b \u0432 \u043e\u0447\u0435\u0440\u0435\u0434\u0438 \u043f\u043b\u0430\u043d\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0432\u044b\u0448\u0435, \u0447\u0435\u043c \u043d\u0438\u0437\u043a\u043e\u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u043d\u044b\u0435. \u041e\u0434\u043d\u0430\u043a\u043e \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u00ab\u043f\u0440\u0438\u0432\u0438\u043b\u0435\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435\u00bb Pod\u2019\u044b \u043d\u0435 \u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0442\u0435\u0441\u043d\u044f\u0442\u044c \u0434\u0440\u0443\u0433\u0438\u0435 Pod\u2019\u044b.<\/p>\n<p><strong>Pod affinity NamespaceSelector to GA<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043f\u043e\u043b\u0435 <code>namespaceSelector<\/code> \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e Pod\u2019\u0430, \u0447\u0442\u043e\u0431\u044b \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0442\u044c \u0443\u0437\u043b\u044b \u043f\u043e \u043b\u0435\u0439\u0431\u043b\u0443, \u0430 \u043d\u0435 \u043f\u043e \u0438\u043c\u0435\u043d\u0438; \u0434\u0435\u043b\u0430\u0442\u044c \u044d\u0442\u043e \u043c\u043e\u0436\u043d\u043e \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438. \u0424\u0438\u0447\u0430 \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 node affinity, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u043e\u0439 Pod\u2019\u0430\u043c \u043c\u043e\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c, \u043d\u0430 \u043a\u0430\u043a\u0438\u0445 \u0443\u0437\u043b\u0430\u0445 \u0438\u043c \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c\u0441\u044f. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043b\u0435\u0439\u0431\u043b\u044b.\u00a0<\/p>\n<p><strong>Service Type=LoadBalancer Class<\/strong> \u0440\u0430\u0437\u0440\u0435\u0448\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0439 <code>Service Type=LoadBalancer<\/code> \u0432 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u0435.<\/p>\n<p><strong>Leader migration to GA<\/strong> \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0434\u043b\u044f \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u0441 \u0436\u0435\u0441\u0442\u043a\u0438\u043c\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f\u043c\u0438 \u043a \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0443\u043f\u0440\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0433\u043e \u0441\u043b\u043e\u044f.<\/p>\n<p><strong>CSR Duration<\/strong> \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 <code>ExpirationSeconds<\/code> \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e <code>CertificateSigningRequestSpec<\/code> \u0441 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0441 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c 600 \u0441\u0435\u043a\u0443\u043d\u0434 (10 \u043c\u0438\u043d\u0443\u0442).<\/p>\n<p><strong>Beta APIs are off by default<\/strong> \u0437\u0430\u043f\u0440\u0435\u0449\u0430\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e API, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043b\u0438 \u0441\u0442\u0430\u0442\u0443\u0441\u0430 Stable. \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0446\u0435\u043b\u044c \u2014 \u0443\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0431\u0430\u0433\u043e\u0432.\u00a0<\/p>\n<h2>\u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u0437 \u0443\u0434\u0430\u043b\u0435\u043d\u043d\u044b\u0445 \u0444\u0438\u0447<\/h2>\n<ul>\n<li>\n<p>\u042d\u043a\u0441\u043f\u0435\u0440\u0438\u043c\u0435\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u00ab\u0441\u0430\u043d\u0430\u0446\u0438\u0438\u00bb \u043b\u043e\u0433\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p>\u041d\u0435\u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0430\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f \u0438\u0437 \u043f\u0430\u043a\u0435\u0442\u0430 <code>cloud-provider<\/code>\u2019\u0430, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438 <code>cloud-controller-managers<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0424\u043b\u0430\u0433\u0438 \u200b\u200b<code>--address<\/code> \u0438 <code>--port<\/code> \u0432 <code>kube-controller-manager<\/code>.<\/p>\n<\/li>\n<li>\n<p><code>DynamicKubeletConfig<\/code> \u0432 kubelet.<\/p>\n<\/li>\n<li>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e <code>VolumeSnapshot v1beta1<\/code> \u0442\u0435\u043f\u0435\u0440\u044c \u043d\u0443\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>v1<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u0412\u043c\u0435\u0441\u0442\u043e <code>tolerate-unready-endpoints annotation<\/code> \u0432 Service \u2014 <code>Service.spec.publishNotReadyAddresses<\/code>.<\/p>\n<\/li>\n<\/ul>\n<h2>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044f\u0445 Kubernetes<\/h2>\n<ul>\n<li>\n<p>containerd v1.4.12;<\/p>\n<\/li>\n<li>\n<p>SELinux v1.10.0;<\/p>\n<\/li>\n<li>\n<p>eBPF v0.7.0;<\/p>\n<\/li>\n<li>\n<p>Go 1.17.4.<\/p>\n<\/li>\n<\/ul>\n<h2>P.S.<\/h2>\n<p>\u0427\u0438\u0442\u0430\u0439\u0442\u0435 \u0442\u0430\u043a\u0436\u0435 \u0432 \u043d\u0430\u0448\u0435\u043c \u0431\u043b\u043e\u0433\u0435:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/593735\/\">\u00ab<u>Kubernetes 1.23: \u043e\u0431\u0437\u043e\u0440 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043d\u043e\u0432\u0448\u0435\u0441\u0442\u0432<\/u>\u00bb<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/571184\/\">\u00ab<u>Kubernetes 1.22: \u043e\u0431\u0437\u043e\u0440 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043d\u043e\u0432\u0448\u0435\u0441\u0442\u0432<\/u>\u00bb<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/flant\/news\/t\/589503\/\">\u00ab<u>\u0420\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0438 Kubernetes: \u0412\u0441\u0435 \u043b\u0438 \u0433\u043e\u0442\u043e\u0432\u044b \u043a \u043e\u0442\u043a\u0430\u0437\u0443 \u043e\u0442 Docker?<\/u>\u00bb<\/a>;<\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/habr.com\/ru\/company\/flant\/news\/t\/652265\/\">\u00ab<u>\u041d\u0430 YouTube \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0444\u0438\u043b\u044c\u043c Kubernetes: The Documentary. \u041c\u044b \u0434\u043e\u0431\u0430\u0432\u0438\u043b\u0438 \u0435\u043c\u0443 \u0440\u0443\u0441\u0441\u043a\u0438\u0435 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u044b<\/u>\u00bb<\/a>.<\/p>\n<\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"v-portal\" style=\"display:none;\"><\/div>\n<\/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\/company\/flant\/blog\/661763\/\"> https:\/\/habr.com\/ru\/company\/flant\/blog\/661763\/<\/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-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u042d\u0442\u043e\u0439 \u043d\u043e\u0447\u044c\u044e \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u044f\u0442 \u043d\u043e\u0432\u0443\u044e \u0432\u0435\u0440\u0441\u0438\u044e Kubernetes. \u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435 Dockershim \u2014 \u0435\u0441\u043b\u0438 \u043d\u0435 \u0441\u0430\u043c\u043e\u0435 \u0437\u043d\u0430\u0447\u0438\u043c\u043e\u0435, \u0442\u043e \u0443\u0436 \u0442\u043e\u0447\u043d\u043e \u0441\u0430\u043c\u043e\u0435 \u043e\u0431\u0441\u0443\u0436\u0434\u0430\u0435\u043c\u043e\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u0432 \u0440\u0435\u043b\u0438\u0437\u0435 1.24. \u0422\u0430\u043a\u0436\u0435 \u0441\u0440\u0435\u0434\u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0445 \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0439: \u00ab\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f\u00bb \u0442\u043e\u043c\u043e\u0432; Network Policy Status \u0434\u043b\u044f \u043e\u0446\u0435\u043d\u043a\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f \u043f\u043e\u0434\u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432; \u043d\u0430\u0431\u043e\u0440 \u0442\u0435\u0441\u0442\u043e\u0432, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u0442\u0441\u044f \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u044c Windows-\u043a\u043b\u0430\u0441\u0442\u0435\u0440\u043e\u0432 \u043a production.<\/p>\n<p>\u0412 \u043e\u0431\u0437\u043e\u0440\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u043c \u043e\u0431\u043e \u0432\u0441\u0435\u0445 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f\u0445 \u2014 \u043d\u043e\u0432\u044b\u0445 (alpha) \u0438 \u043e \u0442\u0435\u0445, \u0447\u0442\u043e \u043f\u0435\u0440\u0435\u0448\u043b\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0432\u044b\u0448\u0435 (beta, stable).<\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p>\u0414\u043b\u044f \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u043a\u0438 \u0441\u0442\u0430\u0442\u044c\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0438\u0437 \u0442\u0430\u0431\u043b\u0438\u0446\u044b <a href=\"https:\/\/docs.google.com\/spreadsheets\/d\/1T21mUTvPh70NB2eseHjCyD4LgRjyxWI9Bd1SoP8zAwA\/edit#gid=0\"><u>Kubernetes enhancements tracking<\/u><\/a>, <a href=\"https:\/\/github.com\/kubernetes\/kubernetes\/blob\/master\/CHANGELOG\/CHANGELOG-1.24.md\"><u>CHANGELOG-1.24<\/u><\/a>, <a href=\"https:\/\/sysdig.com\/blog\/kubernetes-1-24-whats-new\/\"><u>\u043e\u0431\u0437\u043e\u0440\u0430 Sysdig<\/u><\/a>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u044b\u0435 issues, pull requests \u0438 Kubernetes Enhancement Proposals (KEPs).<\/p>\n<p>\u0412\u0441\u0435\u0433\u043e \u0432 \u043d\u043e\u0432\u043e\u043c \u0440\u0435\u043b\u0438\u0437\u0435 45 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439. \u0418\u0437 \u043d\u0438\u0445:<\/p>\n<ul>\n<li>\n<p>13 \u043d\u043e\u0432\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 (alpha);\u00a0<\/p>\n<\/li>\n<li>\n<p>15 \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u044e\u0442 \u0443\u043b\u0443\u0447\u0448\u0430\u0442\u044c\u0441\u044f (beta);<\/p>\n<\/li>\n<li>\n<p>15 \u043f\u0440\u0438\u0437\u043d\u0430\u043d\u044b \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u043c\u0438 (stable);<\/p>\n<\/li>\n<li>\n<p>2 \u0443\u0441\u0442\u0430\u0440\u0435\u043b\u0438.<\/p>\n<\/li>\n<\/ul>\n<details class=\"spoiler\">\n<summary>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/summary>\n<div class=\"spoiler__content\">\n<p>\u041c\u044b \u0441\u043e\u0437\u043d\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0438\u043c \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u044f \u0444\u0438\u0447 \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u0438\u0439. \u041e\u043d\u0438 \u0441\u043e\u0441\u0442\u043e\u044f\u0442 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0438\u0437 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0439 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u0438, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u044b \u0447\u0430\u0449\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u044e\u0442\u0441\u044f \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u044c\u043d\u043e\u0439 \u0444\u043e\u0440\u043c\u0443\u043b\u0438\u0440\u043e\u0432\u043a\u0435. \u041a \u0442\u043e\u043c\u0443 \u0436\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 issues \u0438 KEPs \u043f\u0440\u043e\u0449\u0435 \u0433\u0443\u0433\u043b\u0438\u0442\u044c \u043f\u043e-\u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438.<\/p>\n<\/div>\n<\/details>\n<h2>Dockershim removal<\/h2>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/2221\"><em><u>#2221<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/blob\/master\/keps\/sig-node\/2221-remove-dockershim\/README.md#summary\"><em><u>KEP<\/u><\/em><\/a><em>, Stable<\/em><\/p>\n<p>\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 Docker \u0432 kubelet <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/531120\/\"><u>\u043f\u0440\u0438\u0437\u043d\u0430\u043b\u0438<\/u><\/a> \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0435\u0439 \u0432 \u043a\u043e\u043d\u0446\u0435 2020 \u0433\u043e\u0434\u0430. \u0413\u043b\u0430\u0432\u043d\u0430\u044f \u043f\u0440\u0438\u0447\u0438\u043d\u0430 \u2014 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u043e\u0434\u0443\u043b\u044f dockershim, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 CRI \u0434\u043b\u044f Docker. \u0412\u043c\u0435\u0441\u0442\u043e dockershim \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442\u0441\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c containerd \u0438 CRI-O \u2014 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, <a href=\"https:\/\/kubernetes.io\/blog\/2022\/02\/17\/dockershim-faq\/#are-there-examples-of-folks-using-other-runtimes-in-production-today\"><u>\u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u043a production<\/u><\/a>. \u0412 \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0435 \u0433\u043e\u0432\u043e\u0440\u044f\u0442, \u0447\u0442\u043e \u0438\u0437\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043e\u0442 Docker \u043f\u043e\u0439\u0434\u0435\u0442 \u043d\u0430 \u043f\u043e\u043b\u044c\u0437\u0443 \u0432\u0441\u0435\u043c: \u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c, \u0438 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043e\u0431\u0441\u043b\u0443\u0436\u0438\u0432\u0430\u044e\u0442 \u043a\u043b\u0430\u0441\u0442\u0435\u0440\u044b K8s. \u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u043f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0443\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0434\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u0433\u0430\u0440\u0430\u043d\u0442\u0438\u0439 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0438 \u0441\u043e\u0432\u043c\u0435\u0441\u0442\u0438\u043c\u043e\u0441\u0442\u0438.<\/p>\n<p>\u041f\u043e\u043b\u0435\u0437\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u044c\u0438 \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043f\u043b\u0430\u043d\u0438\u0440\u0443\u0435\u0442 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044e:<\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/kubernetes.io\/blog\/2022\/03\/31\/ready-for-dockershim-removal\/\"><u>Is Your Cluster Ready for v1.24?<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/kubernetes.io\/docs\/tasks\/administer-cluster\/migrating-from-dockershim\/\"><u>Migrating from dockershim<\/u><\/a><\/p>\n<\/li>\n<li>\n<p><a href=\"https:\/\/kubernetes.io\/blog\/2022\/02\/17\/dockershim-faq\/\"><u>Dockershim removal FAQ<\/u><\/a><\/p>\n<\/li>\n<\/ul>\n<h2>\u0425\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435<\/h2>\n<h3>CSI volume health monitoring<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/1432\"><em><u>#1432<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/pull\/1077\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0432 K8s \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 Persistent Volumes (PV) \u043f\u043e\u0441\u043b\u0435 \u0438\u0445 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f. \u0418\u0437-\u0437\u0430 \u044d\u0442\u043e\u0433\u043e, \u043a\u043e\u0433\u0434\u0430 \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 PV, \u0432\u044b\u044f\u0432\u0438\u0442\u044c \u0438\u0441\u0445\u043e\u0434\u043d\u0443\u044e \u043f\u0440\u0438\u0447\u0438\u043d\u0443 \u043d\u0435 \u043f\u0440\u043e\u0441\u0442\u043e. \u041d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u0438\u0433\u043d\u0430\u043b\u0438\u0437\u0438\u0440\u0443\u0435\u0442, \u0447\u0442\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 PV, \u043d\u043e \u043f\u043e\u0447\u0435\u043c\u0443 \u2014 \u043d\u0435 \u044f\u0441\u043d\u043e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u0443 PV \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0430\u0441\u044c \u0441\u0432\u043e\u0431\u043e\u0434\u043d\u0430\u044f \u0435\u043c\u043a\u043e\u0441\u0442\u044c. \u0418\u043b\u0438 \u043a\u0442\u043e-\u0442\u043e \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u043b PV \u0432\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435. \u0410 \u0435\u0441\u043b\u0438 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0435, \u043f\u0440\u0438\u0447\u0438\u043d\u043e\u0439 \u043c\u043e\u0433\u043b\u043e \u0441\u0442\u0430\u0442\u044c \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0443\u0437\u043b\u0430.<\/p>\n<p>\u0421 \u043d\u043e\u0432\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439, \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u2014 \u00ab\u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u043e\u043c \u0437\u0434\u043e\u0440\u043e\u0432\u044c\u044f\u00bb \u0442\u043e\u043c\u043e\u0432, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 PV \u043c\u043e\u0436\u043d\u043e \u0432\u044b\u044f\u0432\u043b\u044f\u0442\u044c \u0440\u0430\u043d\u044c\u0448\u0435, \u0430 \u0438\u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0432 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 CSI \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u044b \u0434\u0432\u0430 \u043d\u043e\u0432\u044b\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442\u0430:<\/p>\n<ol>\n<li>\n<p>\u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a sidecar CSI-\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430 \u2014 \u043f\u043e \u0430\u043d\u0430\u043b\u043e\u0433\u0438\u0438 \u0441 \u0442\u0435\u043c, \u043a\u0430\u043a \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f <a href=\"https:\/\/github.com\/kubernetes-csi\/external-provisioner\"><u>external-provisioner<\/u><\/a>. \u041e\u043d \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 CSI-\u0442\u043e\u043c\u043e\u0432 \u0438 \u0441\u043e\u0431\u044b\u0442\u0438\u044f, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u0441 \u043e\u0442\u043a\u0430\u0437\u043e\u043c \u0443\u0437\u043b\u043e\u0432. \u0422\u0430\u043a\u0436\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0430\u0442\u044c \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>NodeGetVolumeStats<\/code> (kubelet \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0435 \u0434\u043b\u044f \u0441\u0431\u043e\u0440\u0430 \u0434\u0430\u043d\u043d\u044b\u0445 \u043e \u0442\u043e\u043c\u0430\u0445);<\/p>\n<\/li>\n<li>\n<p>\u0432\u043d\u0435\u0448\u043d\u0438\u0439 Node-\u0430\u0433\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0430\u043a sidecar \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 CSI node driver \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u0443\u0437\u043b\u0435 Kubernetes. \u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f PV.<\/p>\n<\/li>\n<\/ol>\n<p>\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0442\u043e\u043c\u043e\u0432 kubelet \u043f\u0435\u0440\u0435\u0434\u0430\u0435\u0442 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0435\u0442\u0440\u0438\u043a <code>VolumeStats<\/code>. \u0415\u0441\u043b\u0438 \u0442\u043e\u043c \u00ab\u043d\u0435\u0437\u0434\u043e\u0440\u043e\u0432\u00bb, \u043c\u0435\u0442\u0440\u0438\u043a\u0430 <code>kubelet_volume_stats_health_status_abnormal<\/code> \u0431\u0443\u0434\u0435\u0442 \u0441\u043d\u0430\u0431\u0436\u0435\u043d\u0430 \u043b\u0435\u0439\u0431\u043b\u043e\u043c <code>persistentvolumeclaim<\/code> \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>1<\/code>; \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u2014 \u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>0<\/code>.<\/p>\n<h3>Non-graceful node shutdown<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/2268\"><em><u>#2268<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-storage\/2268-non-graceful-shutdown#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em>\u00a0<\/p>\n<p>\u0412 \u043a\u043e\u043d\u0446\u0435 2020-\u0433\u043e <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/530924\/\"><u>\u0432 Kubernetes 1.20<\/u><\/a> \u043f\u043e\u044f\u0432\u0438\u043b\u0430\u0441\u044c \u0430\u043b\u044c\u0444\u0430-\u0432\u0435\u0440\u0441\u0438\u044f \u0444\u0438\u0447\u0438 Graceful Node Shutdown (<a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-node\/2000-graceful-node-shutdown\"><u>KEP-2000<\/u><\/a>). \u0415\u0441\u043b\u0438 \u0444\u0438\u0447\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u0430, kubelet \u00ab\u043c\u044f\u0433\u043a\u043e\u00bb (graceful) \u0432\u044b\u043a\u043b\u044e\u0447\u0430\u0435\u0442 Pod&#8217;\u044b \u043d\u0430 \u0443\u0437\u043b\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0442 \u0440\u0430\u0431\u043e\u0442\u0443.\u00a0<\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 Node Shutdown Mananger \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u0435\u0442, \u0447\u0442\u043e \u0443\u0437\u0435\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d \u2014 \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0438\u0437-\u0437\u0430 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u043b \u043f\u043e\u043b\u044f <code>ShutdownGracePeriod<\/code> \u0438 <code>ShutdownGracePeriodCriticalPods<\/code>. \u0422\u043e\u0433\u0434\u0430 Pod\u2019\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b StatefulSet\u2019\u043e\u043c \u043d\u0430 \u0432\u044b\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u043e\u043c \u0443\u0437\u043b\u0435, \u043f\u043e\u0434\u0432\u0438\u0441\u0430\u044e\u0442 \u0432 \u0441\u0442\u0430\u0442\u0443\u0441\u0435 <em>Terminating<\/em>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c StatefulSet \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c Pod\u2019\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0443\u0437\u043b\u0435. \u0421\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0443\u0441\u0443\u0433\u0443\u0431\u043b\u044f\u0435\u0442\u0441\u044f, \u0435\u0441\u043b\u0438 Pod\u2019\u044b \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442 \u0442\u043e\u043c\u0430: VolumeAttachments \u0442\u0430\u043a \u0438 \u043e\u0441\u0442\u0430\u043d\u0443\u0442\u0441\u044f \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u043a \u043f\u043e\u0434\u0432\u0438\u0441\u0448\u0438\u043c Pod\u2019\u0430\u043c. \u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435, \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u043d\u043e\u0435 \u0432 StatefulSet\u2019\u0435, \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0430\u043a\u0442\u0438\u0432\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f Pod\u2019\u043e\u0432 \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 Node Shutdown Mananger \u043d\u0435 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442. \u0414\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/scheduling-eviction\/taint-and-toleration\/\"><u>taint\u2019\u0430<\/u><\/a> <code>out-of-service=nodeshutdown:NoExecute<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c Pod\u2019\u044b \u0438 \u043f\u0440\u0438\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0435 \u043a \u043d\u0438\u043c \u0442\u043e\u043c\u0430 \u0431\u0443\u0434\u0443\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u044b, \u0430 \u043d\u043e\u0432\u044b\u0435 \u2014 \u0437\u0430\u043f\u0443\u0449\u0435\u043d\u044b \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u043c \u0443\u0437\u043b\u0435. \u0422\u0435\u043c \u0441\u0430\u043c\u044b\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u0441\u044f \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0427\u0442\u043e\u0431\u044b \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432 \u0441\u0442\u0440\u043e\u0439 \u0441\u0442\u0430\u0440\u044b\u0439 \u0443\u0437\u0435\u043b, \u043d\u0443\u0436\u043d\u043e \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0443\u0434\u0430\u043b\u0438\u0442\u044c taint \u043f\u043e\u0441\u043b\u0435 \u0442\u043e\u0433\u043e, \u043a\u0430\u043a Pod\u2019\u044b \u0437\u0430\u043f\u0443\u0441\u0442\u044f\u0442\u0441\u044f \u043d\u0430 \u043d\u043e\u0432\u043e\u043c \u0443\u0437\u043b\u0435.<\/p>\n<p>\u0424\u0438\u0447\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 \u043e\u0448\u0438\u0431\u043e\u0447\u043d\u043e\u0439 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0435\u0439 Graceful Node Shutdown. \u041e\u043d\u0430 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043a\u043e\u0433\u0434\u0430 \u043f\u043e\u0434\u0432\u0438\u0441\u0430\u043d\u0438\u0435 Pod\u2019\u043e\u0432 \u0432\u044b\u0437\u0432\u0430\u043d\u043e \u043e\u0448\u0438\u0431\u043a\u0430\u043c\u0438 \u043d\u0430 \u0443\u0440\u043e\u0432\u043d\u0435 \u00ab\u0436\u0435\u043b\u0435\u0437\u0430\u00bb \u0438\u043b\u0438 \u0438\u0437-\u0437\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0441 \u041e\u0421 \u0443\u0437\u043b\u0430.<\/p>\n<h3>Control volume mode conversion between source and target PVC<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3141\"><em><u>#3141<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-storage\/3141-prevent-volume-mode-conversion#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e API-\u0440\u0435\u0441\u0443\u0440\u0441\u0430 <code>VolumeSnapshot<\/code> \u043c\u043e\u0436\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c PVC (PersistentVolumeClaim) \u0438\u0437 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430. \u042d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 \u0432 <code>PVC<\/code> \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 <code>Spec.dataSource<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u200b\u200b<code>VolumeSnapshot<\/code>. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435\u0442 \u043d\u0438\u043a\u0430\u043a\u043e\u0433\u043e \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043b\u0438 \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u043e\u043c\u0443 \u0443 \u0432\u043d\u043e\u0432\u044c \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u043e\u0433\u043e <code>PVC<\/code> \u0440\u0435\u0436\u0438\u043c\u0443 \u0434\u043e\u0441\u0442\u0443\u043f\u0430, \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u043c\u0443 \u0434\u043b\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u043e\u0433\u043e <code>PVC<\/code>. \u0410\u0432\u0442\u043e\u0440\u044b KEP\u2019\u0430 \u0441\u0447\u0438\u0442\u0430\u044e\u0442, \u0447\u0442\u043e \u044d\u0442\u043e \u0431\u0440\u0435\u0448\u044c, \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043c\u043e\u0433\u0443\u0442 \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0438, \u0447\u0442\u043e\u0431\u044b \u0432\u0437\u043b\u043e\u043c\u0430\u0442\u044c \u044f\u0434\u0440\u043e Linux.<\/p>\n<blockquote>\n<p><strong>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0446\u0435\u043d\u0430\u0440\u0438\u044f<\/strong><\/p>\n<p>\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c:<br \/>1) \u0441\u043e\u0437\u0434\u0430\u0435\u0442 PVC \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <code>volumeMode: Block<\/code> \u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442 Pod \u0441 \u044d\u0442\u0438\u043c \u0442\u043e\u043c\u043e\u043c; <br \/>2) \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u043e\u043c \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 ext4; <br \/>3) \u0434\u0435\u043b\u0430\u0435\u0442 \u0441\u043d\u0430\u043f\u0448\u043e\u0442 \u044d\u0442\u043e\u0433\u043e \u0442\u043e\u043c\u0430; <br \/>4) \u0441\u043e\u0437\u0434\u0430\u0435\u0442 PVC \u0441 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u043c <code>volumeMode: Filesystem<\/code> \u0438\u0437 \u0441\u043d\u0430\u043f\u0448\u043e\u0442\u0430 \u0432\u044b\u0448\u0435; <br \/>5) \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u044d\u0442\u043e\u0442 PVC \u0432 Pod\u2019\u0435. <\/p>\n<p>\u0414\u0430\u043b\u0435\u0435 kubelet \u043f\u044b\u0442\u0430\u0435\u0442\u0441\u044f \u0441\u043c\u043e\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Pod\u2019\u0430. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043c\u043e\u0436\u0435\u0442 \u0432\u0437\u043b\u043e\u043c\u0430\u0442\u044c \u044f\u0434\u0440\u043e, \u0435\u0441\u043b\u0438 \u0432 \u043d\u0435\u043c \u0435\u0441\u0442\u044c \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c. <\/p>\n<\/blockquote>\n<p>\u0427\u0442\u043e\u0431\u044b \u0443\u043b\u0443\u0447\u0448\u0438\u0442\u044c \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u0440\u0435\u0436\u0438\u043c\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u043e\u043c\u0443:\u00a0<\/p>\n<ul>\n<li>\n<p>\u0432\u043d\u0435\u0441\u0435\u043d\u044b \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0432 \u0441\u043f\u0435\u0446\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u044e API <code>VolumeSnapshotContent<\/code>: \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u043d\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435 <code>SourceVolumeMode<\/code>; \u0432 \u043d\u0435\u043c \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0436\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u043a \u0442\u043e\u043c\u0443, \u0441 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0441\u0434\u0435\u043b\u0430\u043d \u0441\u043d\u0430\u043f\u0448\u043e\u0442;<\/p>\n<\/li>\n<li>\n<p>\u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u0430\u043d\u043d\u043e\u0442\u0430\u0446\u0438\u044f \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u043e\u0439 \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0439 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0434\u043b\u044f <code>VolumeSnapshot<\/code>;<\/p>\n<\/li>\n<li>\n<p>\u0438\u0437\u043c\u0435\u043d\u0435\u043d\u044b \u043c\u0435\u0442\u043e\u0434\u044b \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044f \u0437\u0430 <code>snapshot-controller<\/code> \u0438 <code>external-provisioner<\/code>.<\/p>\n<\/li>\n<\/ul>\n<p>\u0412 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u0430 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u043f\u0430\u0441\u043d\u043e\u0439 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u0438 \u0430\u0432\u0442\u043e\u0440\u044b KEP\u2019\u0430 \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0442 <a href=\"https:\/\/access.redhat.com\/security\/cve\/cve-2020-12655\"><u>CVE-2020-12655<\/u><\/a> \u2014 \u0441 \u0435\u0435 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0442\u044c DoS-\u0430\u0442\u0430\u043a\u0443 \u043d\u0430 \u044f\u0434\u0440\u043e. \u041e\u0434\u043d\u0430\u043a\u043e \u0441\u0435\u0439\u0447\u0430\u0441 \u043d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u043e\u0439 CVE, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0431\u044b \u0440\u0435\u0430\u043b\u044c\u043d\u043e \u0443\u0433\u0440\u043e\u0436\u0430\u043b\u0430 \u044f\u0434\u0440\u0443 (\u043f\u0440\u0438 \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 K8s), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0444\u0438\u0447\u0430, \u043f\u043e \u0441\u0443\u0442\u0438, \u0437\u0430\u0449\u0438\u0449\u0430\u0435\u0442 \u043e\u0442 \u0433\u0438\u043f\u043e\u0442\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0443\u0433\u0440\u043e\u0437.<\/p>\n<h3>Beta-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>Volume populator<\/strong> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0430\u044f Kubernetes 1.18 \u0438 \u0437\u0430\u043b\u043e\u0436\u0438\u0432\u0448\u0430\u044f \u043e\u0441\u043d\u043e\u0432\u0443 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0442\u043e\u043c\u043e\u0432 \u0441 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0437\u0430\u0433\u0440\u0443\u0436\u0435\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u043d\u0438\u0445 \u0434\u0430\u043d\u043d\u044b\u043c\u0438 \u2014 Generic Data Populators (<a href=\"https:\/\/github.com\/kubernetes\/enhancements\/tree\/master\/keps\/sig-storage\/1495-volume-populators\"><u>KEP<\/u><\/a>). \u0427\u0442\u043e\u0431\u044b \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430\u043c\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0433\u043b\u0438 \u0431\u044b\u0442\u044c \u043e\u0431\u044a\u0435\u043a\u0442\u044b \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u044b\u0445 \u0442\u0438\u043f\u043e\u0432, \u043e\u0441\u043b\u0430\u0431\u043b\u0435\u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u044f <code>DataSource<\/code>. \u041f\u0440\u0438\u043c\u0435\u0440\u044b:\u00a0<\/p>\n<ul>\n<li>\n<p>\u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0434\u0438\u0441\u043a\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u041e\u0421;<\/p>\n<\/li>\n<li>\n<p>\u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0435\u0437\u0435\u0440\u0432\u043d\u043e\u0433\u043e \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 \u0432\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445.<\/p>\n<\/li>\n<\/ul>\n<p><strong>Azure file in-tree to CSI driver migration<\/strong> \u043f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0443 \u043f\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443 \u043f\u043b\u0430\u0433\u0438\u043d\u0430 Azure File \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u00ab\u0434\u0435\u0440\u0435\u0432\u0430\u00bb K8s (out-of-tree). \u0422\u0430\u043a\u0436\u0435 \u044d\u0442\u043e \u0447\u0430\u0441\u0442\u044c \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u043f\u043e \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 \u0441\u043e \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0445 (in-tree) \u043f\u043b\u0430\u0433\u0438\u043d\u043e\u0432 \u043d\u0430 CSI-\u0434\u0440\u0430\u0439\u0432\u0435\u0440\u044b.<\/p>\n<p><strong>Always honor reclaim policy<\/strong> \u043e\u0442\u0432\u0435\u0447\u0430\u0435\u0442 \u0437\u0430 \u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0441\u043e\u0431\u043b\u044e\u0434\u0435\u043d\u0438\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0432\u043e\u0437\u0432\u0440\u0430\u0442\u0430 PV, \u0435\u0441\u043b\u0438 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0440\u0430\u043d\u044c\u0448\u0435, \u0447\u0435\u043c \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 PVC. \u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043e\u0431 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0438 \u043c\u044b \u043f\u0438\u0441\u0430\u043b\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/593735\/#:~:text=Honor%20Persistent%20Volume%20reclaim%20policy\"><u>\u0432 \u043e\u0431\u0437\u043e\u0440\u0435 Kubernetes 1.23<\/u><\/a>.<\/p>\n<h3>Stable-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>CSI volume expansion<\/strong> \u2014 \u043d\u0430\u0431\u043e\u0440 \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u0439 \u0434\u043b\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0440\u0430\u0437\u043c\u0435\u0440\u0430 CSI-\u0442\u043e\u043c\u043e\u0432 (PV).\u00a0<\/p>\n<p><strong>Storage Capacity Tracking<\/strong> \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 Pod\u2019\u043e\u0432 \u043f\u043e \u0443\u0437\u043b\u0430\u043c, \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u044b CSI-\u0442\u043e\u043c\u0430 \u0441 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e\u0439 \u0435\u043c\u043a\u043e\u0441\u0442\u044c\u044e.<\/p>\n<p><strong>OpenStack in-tree to CSI driver migration<\/strong> \u043f\u043e\u0434\u044b\u0442\u043e\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0440\u0430\u0431\u043e\u0442\u044b <a href=\"https:\/\/kubernetes.io\/docs\/concepts\/storage\/volumes\/#openstack-csi-migration\"><u>\u043f\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0443 \u043a\u043e\u0434\u0430 OpenStack Cinder<\/u><\/a> \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u00ab\u0434\u0435\u0440\u0435\u0432\u0430\u00bb Kubernetes.\u00a0<\/p>\n<p><strong>Azure disk in-tree to CSI driver migration<\/strong> \u0432\u044b\u0432\u043e\u0434\u0438\u0442 Azure Disk \u0437\u0430 \u043f\u0440\u0435\u0434\u0435\u043b\u044b \u043a\u043e\u0434\u043e\u0432\u043e\u0439 \u0431\u0430\u0437\u044b Kubernetes.<\/p>\n<h2>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f<\/h2>\n<h3>maxUnavailable for StatefulSets<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/961\"><em><u>#961<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/blob\/master\/keps\/sig-apps\/961-maxunavailable-for-statefulset\/README.md#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u0443 Stateful-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 Pod\u2019\u043e\u0432 (rolling update) \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e, \u043f\u043e \u043e\u0434\u043d\u043e\u043c\u0443 Pod\u2019\u0443 \u0437\u0430 \u0440\u0430\u0437. \u041f\u0440\u0438 \u044d\u0442\u043e\u043c Pod \u0432\u043e \u0432\u0440\u0435\u043c\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0438 \u0447\u0435\u0440\u0435\u0437 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0435\u0442\u0441\u044f. \u041f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430\u0445 StatefulSet\u2019\u0430 \u0432 \u043f\u043e\u043b\u0435 <code>.spec.updateStrategy.type<\/code> \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>RollingUpdate<\/code>.<\/p>\n<p>\u041d\u043e\u0432\u0430\u044f \u0444\u0438\u0447\u0430 \u0432\u0432\u043e\u0434\u0438\u0442 \u0432 <code>RollingUpdate<\/code> \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043f\u043e\u043b\u0435 <code>maxUnavailable<\/code>, \u0433\u0434\u0435 \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e Pod\u2019\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c (\u0438 \u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u0442\u044c) \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u0424\u0438\u0447\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u0430, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 stateful-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u0445\u043e\u0434 \u0441 leader\/followers: \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e\u0435 \u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 followers \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043c\u0435\u043d\u0435\u0435 \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u043e, \u0447\u0435\u043c \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>maxUnavailable<\/code> \u0432\u044b\u043a\u0430\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0439 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442\u044c \u0431\u044b\u0441\u0442\u0440\u0435\u0435, \u0447\u0435\u043c \u0441\u0435\u0439\u0447\u0430\u0441.<\/p>\n<p>\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0430 \u043d\u0443\u0436\u043d\u043e \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u043d\u043e \u043e\u043a\u0430\u0436\u0435\u0442\u0441\u044f \u0441\u043b\u0438\u0448\u043a\u043e\u043c \u0431\u043e\u043b\u044c\u0448\u0438\u043c, \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u043e\u0436\u0435\u0442 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0438\u0442\u044c\u0441\u044f \u043d\u0430 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0438\u043f\u0430 recreate (\u00ab\u043f\u0435\u0440\u0435\u0441\u043e\u0437\u0434\u0430\u043d\u0438\u0435\u00bb), \u0447\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u0442 \u043a \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430.<\/p>\n<h3>TimeZone support in CronJob<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/3140\"><em><u>#3140<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/blob\/master\/keps\/sig-apps\/3140-TimeZone-support-in-CronJob\/README.md#summary\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>CronJob \u0441\u043e\u0437\u0434\u0430\u0435\u0442 Job\u2019\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441 \u0433\u0440\u0430\u0444\u0438\u043a\u043e\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c. \u041e\u0434\u043d\u0430\u043a\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f Job, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u0447\u0430\u0441\u043e\u0432\u043e\u043c\u0443 \u043f\u043e\u044f\u0441\u0443 kube-controller-manager\u2019\u0430. \u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0437\u0430\u0431\u044b\u043b \u044d\u0442\u043e \u0443\u0447\u0435\u0441\u0442\u044c, Job\u2019\u0430 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0430 \u043d\u0435 \u043f\u043e \u043f\u043b\u0430\u043d\u0443.<\/p>\n<p>\u041f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0435\u043d\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u043e\u0432\u043e\u0433\u043e \u043f\u043e\u043b\u044f \u0432 CronJob API \u2014 <code>.spec.timeZone<\/code>, \u0433\u0434\u0435 \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u043f\u043e\u044f\u0441 \u0434\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u043a\u0430 Job.<\/p>\n<h3>Beta- \u0438 Stable-\u0444\u0438\u0447\u0438<\/h3>\n<p><strong>Track Ready Pods in Job status <\/strong>(Beta) \u0441\u043d\u0430\u0431\u0436\u0430\u0435\u0442 API \u043d\u043e\u0432\u044b\u043c \u043f\u043e\u043b\u0435\u043c <code>Job.status.ready<\/code> \u0434\u043b\u044f \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043d\u0438\u044f \u0432\u0441\u0435\u0445 Pod\u2019\u043e\u0432 \u0432 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0433\u043e\u0442\u043e\u0432\u043d\u043e\u0441\u0442\u0438, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 <code>Running<\/code> (\u00ab\u0437\u0430\u043f\u0443\u0449\u0435\u043d\u00bb) \u0438\u043b\u0438 <code>Pending<\/code> (\u00ab\u043e\u0436\u0438\u0434\u0430\u0435\u0442\u00bb). \u0410\u043d\u0430\u043b\u043e\u0433\u0438\u0447\u043d\u044b\u0439 \u043c\u0435\u0445\u0430\u043d\u0438\u0437\u043c \u0440\u0430\u043d\u0435\u0435 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043b\u0438 \u0434\u043b\u044f Deployment \u0438 StatefulSet.<\/p>\n<p><strong>Indexed Job semantics in Job API<\/strong> (Stable)<strong> <\/strong>\u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u044f \u0432 Pod\u2019\u044b \u0442\u0435\u0445 Job, \u0443 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0439 \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043e. \u0424\u0438\u0447\u0430 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0442\u044c \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0430\u0431\u043e\u0442\u0443 \u0441\u0438\u043b\u044c\u043d\u043e \u0440\u0430\u0441\u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u0435\u043d\u043d\u044b\u0445 Job.<\/p>\n<p><strong>batch\/v1: add suspend field to Jobs API <\/strong>(Stable) \u0434\u0430\u0435\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u0438\u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c Job\u2019\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>true<\/code> \u0432 \u043f\u043e\u043b\u0435 <code>.spec.suspend<\/code> \u0438 \u043f\u0435\u0440\u0435\u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u043f\u043e\u0437\u0436\u0435, \u043c\u0435\u043d\u044f\u044f \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 <code>false<\/code>.<\/p>\n<h2>\u0421\u0435\u0442\u044c<\/h2>\n<h3>Network Policy Status<\/h3>\n<p><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/issues\/2943\"><em><u>#2943<\/u><\/em><\/a><em>; <\/em><a href=\"https:\/\/github.com\/kubernetes\/enhancements\/pull\/2947\"><em><u>KEP<\/u><\/em><\/a><em>; Alpha<\/em><\/p>\n<p>\u0421\u0435\u0439\u0447\u0430\u0441 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u044b Network Policy \u043d\u0435 \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u0439 \u0441\u0432\u044f\u0437\u0438 \u043e \u0442\u043e\u043c, \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e \u043b\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\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-332123","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/332123","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=332123"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/332123\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=332123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=332123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=332123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}