- PVSM.RU - https://www.pvsm.ru -
Этой ночью официально выпустят новую версию Kubernetes — 1.23. Рассказываем о самых интересных нововведениях (alpha), а также о некоторых фичах, которые перешли на уровень выше (beta, stable).

Для подготовки статьи использовалась информация из таблицы Kubernetes enhancements tracking [1], CHANGELOG-1.23 [2], обзор Sysdig [3], а также конкретные issues, pull requests и Kubernetes Enhancement Proposals (KEPs).
В новом релизе 47 улучшений — это на 9 меньше, чем в прошлом [4]. Из них:
19 новых функций (alpha);
17 продолжают улучшаться (beta);
11 признаны стабильными (stable).
По количеству нововведений и функций, которые стабилизировались, в этот раз лидируют связанные с хранилищем — начнем с них.
Мы сознательно не стали переводить названия фич на русский. Они преимущественно состоят из специальной терминологии, с которой инженеры чаще встречаются в оригинальной формулировке. К тому же соответствующие issues и KEPs проще гуглить по-английски.
Политика возврата (reclaim policy) томов типа Persistent Volume (PV) может не соблюдаться, если PV работает в связке с PVC (Persistent Volume Claim):
PV соблюдает политику, если PVC удаляется до удаления PV.
Если первым из пары удаляется PV, политика возврата не выполняется, а связанный с PV внешний ресурс хранения не удаляется.
Альфа-версия новой фичи отвечает за обязательное соблюдение политики возврата PV, если его удаление происходит раньше, чем удаление PVC. Как это обеспечивается:
добавляется метка deletionTimestamp, которая вызывает обновление;
если обновление обрабатывается до того, как PVC удален, удаление связанного PV игнорируется.
Перед тем, как CSI-том монтируется внутрь контейнера, Kubernetes изменяет владение томом через поле fsGroup. Для большинства плагинов kubelet делает это рекурсивно с помощью chown и chmod файлов и директорий. Но поскольку chown и chmod — Unix-примитивы, они недоступны для некоторых CSI-драйверов, например для AzureFile.
Нововведение предлагает предоставить CSI-драйверу fsGroup Pod’ов в виде явного поля, чтобы применять политику сразу во время монтирования. Механизм активируется с помощью feature gate’а DelegateFSGroupToCSIDriver для CSI-драйверов, которые поддерживают node capability под названием VOLUME_MOUNT_GROUP. Поле fsGroup должно быть определено в securityContext.
С помощью PVC можно расширять емкость хранилища, запрашивая у провайдера том нужного объема. Иногда пользователи запрашивают больше, чем может выдать провайдер — например, 500 Гб, когда доступно только 100. При этом контроллер, который отвечает за расширение томов, хотя и получает отказ, продолжает повторять запросы. Процесс зацикливается.
С новым улучшением пользователи могут отменить запрос на расширение, если он еще не завершен или некорректен, и повторить его, указав меньший объем тома с помощью параметра pvc.Spec.Resources. Для это реализовано три ключевых изменения:
ослаблена проверка API при обновлении PVC, чтобы разрешить уменьшение pvc.Spec.Resources;
в API добавлено поле pvc.Status.AllocatedResources, чтобы отслеживать размер хранилища;
добавлено поле pvc.Status.ResizeStatus, чтобы отслеживать статус процесса изменения размера тома.
Авторы KEP’а приводят алгоритм обработки запроса на изменение PVC:

Также приводится шесть примеров различных пользовательских сценариев [11], при которых фича может быть полезна.
Для более детального знакомства с CSI рекомендуем статьи:
«Понимаем Container Storage Interface (в Kubernetes и не только) [12]»;
«Плагины томов для хранилищ в Kubernetes: от Flexvolume к CSI [13]».
#2589 [14]; Alpha
Очередной прогресс в рамках большого проекта [15] по миграции со встроенных в кодовую базу Kubernetes плагинов (in-tree) на CSI-драйверы. На этот раз свой CSI-драйвер получило хранилище Portworx [16] от компании Pure Storage. Подробнее об этом драйвере можно почитать в документации проекта [17].
Фича, при активации которой все операции с плагинами RBD перенаправляются на внешний CSI-драйвер для Ceph [20]. К слову, этот CSI-драйвер помогает избавиться от проблемы с блокировкой RBD [21], с которой мы регулярно сталкиваемся на практике при использовании containerd.
До стабильного уровня дошли:
AWS EBS in-tree to CSI driver migration — миграция на CSI-драйвер для AWS EBS (#1487 [22]).
Non-recursive volume ownership (FSGroup) — оптимизация процесса делегирования прав при bind-монтировании томов в контейнер (KEP [23]).
Config FSGroup Policy in CSI Driver object — возможность для CSI-драйверов определять права доступа на основе FSGroup (KEP [24]).
Generic inline ephemeral volumes — API, чтобы определять встроенные эфемерные тома непосредственно в спецификации Pod’ов (KEP [25]).
Новая фича предлагает упрощенный вариант проверки пользовательских ресурсов (custom resources), которые добавляются в CRD (Custom Resource Definition). Ранее для этого использовались только вебхуки, в которых прописывались правила проверки. Такой механизм усложнял разработку и мог влиять на работоспособность CRD. Теперь правила можно писать на скриптовом языке Common Expression Language (CEL [28]) прямо в схемах CustomResourceDefinition с помощью x-kubernetes-validations extension:
...
openAPIV3Schema:
type: object
properties:
spec:
type: object
x-kubernetes-validation-rules:
- rule: "self.replicas <= self.maxReplicas"
message: "replicas should be smaller than or equal to maxReplicas."
properties:
...
replicas:
type: integer
maxReplicas:
type: integer
required:
- replicas
- maxReplicas
CEL — достаточно легкий, простой и безопасный язык. Он поддерживает предварительный анализ и проверку выражений, чтобы обнаруживать синтаксические и другие ошибки во время проверки custom resources.
Альфа-версия улучшения в OpenAPI, который теперь поддерживает перечисления, то есть данные типа enum. По умолчанию данные enum отображаются в конфигурации API как обычные строки с комментариями, в которых указывается тип данных. Это усложняет код и приводит к дублированию.
Теперь, если определить значения как строки:
type Protocol string
const (
ProtocolTCP Protocol = "TCP"
ProtocolUDP Protocol = "UDP"
ProtocolSCTP Protocol = "SCTP"
)
… то далее с помощью маркера +enum можно явно вводить алиас, который найдет и использует все нужные возможные значения:
// +enum
type Protocol string
Генератор OpenAPI поймет, что допустимые значения — только TCP, UDP и SCTP.
Повысился статус у фичи Priority and Fairness Server Requests (#1040 [31]), которая предлагает более продвинутую систему приоритизации запросов типа max-in-flight. Подробнее о новом обработчике запросов мы рассказывали в обзоре K8s 1.18 [32].
Усовершенствование обобщает усилия по организации процесса, при котором вся статистика о запущенных контейнерах и Pod’ах извлекается из Container Runtime Interface (CRI). Тем самым отпадает необходимость в cAdvisor [35].
В числе причин, по которым решили отказаться от cAdvisor:
среда исполнения контейнеров лучше «осведомлена» об их поведении, чем cAdvisor;
cAdvisor не поддерживает некоторые среды, например виртуальные машины, а также Windows-контейнеры;
сейчас метрики, которые обслуживают API и endpoint /metrics/cadvisor, собираются преимущественно cAdvidor’ом и дополняются CRI. Наличие двух источников лишает процесс ясности и приводит к дублированию.
Поэтому было решено улучшить возможности CRI, чтобы предоставлять все требуемые метрики. Фича активируется с помощью feature gate PodAndContainerStatsFromCRI.
Политика CPU Manager получила обновление в альфа-версии, которое улучшает распределение ресурсов ЦПУ при работе с NUMA-узлами (Non-Uniform Memory Architecture).
По умолчанию CPU Manager выделяет процессоры NUMA-узлам последовательно из общего пула ресурсов: сначала одному, затем второму и так далее. У некоторых узлов при этом может быть меньше ресурсов, чем у других — например, потому, что общий ресурс ЦПУ ограничен. Это приводит к появлению узких мест при исполнении параллельного кода, основанного на барьерах и других примитивах синхронизации. Код такого рода выполняется настолько быстро, насколько позволяет самый медленный worker — в нашем случае это тот NUMA-узел, которому досталось меньше процессорной мощности.
Новая фича распределяет ресурсы ЦПУ равномерно между всеми NUMA-узлами. Это ускоряет общую производительность приложений, которые создаются под NUMA-архитектуру. Опция устанавливается с помощью параметра distribute-cpus-across-numa в настройке политики CPU Manager типа static и активируется, когда запрос на ресурсы поступает от двух и более узлов.
Liveness-, Readiness- и Startup probes — три разных типа проверки состояния Pod’а. Сейчас они работают по протоколам HTTP(S) и TCP. Новая фича добавляет поддержку gRPC — открытого фреймворка для удаленного вызова процедур, который часто используется в микросервисной архитектуре.
Возможность использовать встроенный gRPC среди прочего избавляет от необходимости использовать сторонние инструменты для проверки состояния контейнеров вроде grpc_health_probe(1) [40]. Вот как выглядит вариант конфигурации для readinessProbe:
readinessProbe:
grpc:
port: 9090
service: my-service
initialDelaySeconds: 5
periodSeconds: 10
Add options to reject non SMT-aligned workload. Фичу представили в предыдущем релизе [41]. Благодаря ей CPU Manager более точечно распределяет ресурсы CPU между специфическими рабочими нагрузками. В частности — дает больший приоритет приложениям, адаптированным под одновременную многопоточность (SMT). Подробности — в KEP [42].
Ephemeral Containers. «Эфемерные контейнеры» — легковесные контейнеры, которые помогают при отладке обычных контейнеров. Впервые фича [43] появилась еще в Kubernetes 1.16 [44]. По своему назначению «эфемерные контейнеры» схожи с плагином kubectl-debug [45], необходимость в котором теперь отпадает.
Kubelet CRI Support. Поддержка CRI (Container Runtime Interface). Меж тем распространение исполняемых сред на базе CRI типа containerd растет [46] и CRI-O на фоне приближающегося устаревания [47] Dockershim.
Job controller отслеживает статус Job’ы по полю active (внутри Job.status.active), которое показывает количество запущенных Pod’ов в состоянии Running (запущен) или Pending (ожидает). В реальности Job’а может находиться в состоянии Pending долгое время — например, если у кластера ограниченные ресурсы и образы скачиваются медленно. Поскольку Job.status.active показывает еще и Pod’ы в состоянии ожидания, конечный пользователь или контроллер может не знать реального прогресса по запущенным Pod’ам — готовы они или нет. Это особенно важно, если Pod’ы работают как worker’ы и общаются между собой.
Инициаторы улучшения предложили добавить в API поле Job.status.ready, чтобы отслеживать все Pod’ы в состоянии готовности. Этот принцип уже реализован для двух рабочих нагрузок — Deployment и StatefulSet. Новая фича избавит от необходимости контролировать отдельные Pod’ы.
Job tracking without lingering Pods. Функция, которая позволяет Job’ам быстрее удалять неиспользуемые Pod’ы, чтобы освободить ресурсы кластера. Подробнее — в нашем предыдущем обзоре [50] и в KEP [51].
Add minReadySeconds to StatefulSets. Возможность указывать в настройках StatefulSets минимальное количество секунд, за которые созданный Pod должен перейти в состояние готовности (KEP [52]). То же самое ранее было реализовано, например, для Deployment и DaemonSet.
CronJobs периодически запускают в кластере Kubernetes задания по аналогии с тем, как это делает cron в UNIX-подобных системах. Фича была представлена [53] в Kubernetes 1.4 и переведена в beta-статус в версии 1.8.
TTL after finish. Фича [54] автоматически очищает Job’ы в статусе Finished или Complete. Это помогает снизить нагрузку на API-сервер, потому что в противном случае система продолжает считать эти Job’ы незавершенными.
Статус beta получило улучшение Topology Aware Hints, которое помогает контролировать трафик между зонами в мультикластерной инфраструктуре и увеличивать производительность сети (KEP [55]).
Две фичи перешли в категорию stable:
Add IPv4/IPv6 dual-stack support. Поддержка двойного сетевого стека, которая позволяет назначать Pod’ам оба протокола (KEP [56]).
Namespace Scoped Ingress Class Parameters. Возможность определять в параметрах IngressClass пространство имен для scope (KEP [57]).
По умолчанию при подключении Pod’а к API-серверу его ОС не идентифицируется. Поэтому некоторые плагины доступа — такие как PodSecurityAdmission — могут накладывать ненужные ограничения безопасности на Pod и мешать его работе. Другие же плагины, наоборот, вообще не применяют ограничения безопасности, что еще хуже.
Теперь плагины доступа могут автоматически определять ОС контейнеров Pod’а непосредственно во время подключения к API-серверу. Фича реализована с помощью добавления нового поля OS в спецификации PodSpec.
klog [62] — библиотека для записи логов, реализованная на Go. klog применяется для логирования компонентов ядра K8s: kube-apiserver, kube-controller-manager, kube-scheduler, kubelet. У библиотеки масса недостатков. Например, запись логов при помощи klog в 7-8 раз медленнее, чем в JSON-формате [63]. Еще — внушительное legacy от родительского проекта glog.
Сообщество решило, что устранять все проблемы и поддерживать klog нецелесообразно. Вместо этого предлагается использовать альтернативные форматы и оптимизировать существующие, например JSON. В этом релизе поддержка флагов для настройки klog признается устаревшей, а позже будет удалена (когда именно — пока неизвестно).
Фича меняет формат именования правил для ConfigMap и RBAC. Привычный формат выглядит так: kubelet-config-x.y, где x — мажорная версия Kubernetes, y — минорная (например: kubelet-config-1.23). Новое именование исключает -x.y. Чем это мотивировано:
ссылка на -x.y берется из управляющего слоя, хотя было бы логичнее — из kubelet;
во время обновления новые правила ConfigMap и RBAC создаются с учетом новой версии K8s, но правила со старыми значениями -x.y не удаляются.
Цель улучшения — устранить сложности, которые добавляет привычный процесс управления версиями, оставив единственным «источником правды» kube-system/kubelet-config.
Существующий способ получить информацию о событиях в кластере — команда kubectl get events. У нее есть ограничения: события сортируются только по времени, причем:
сортировка неупорядоченная [68];
вывод команды с опцией --watch неинформативный [69], а иногда избыточный [70];
есть и другие проблемы [71].
Новая команда kubectl events снимает эти ограничения и добавляет новые возможности. Теперь, например, определенные события можно отфильтровать по типу, менять порядок сортировки событий, отбирать события только за последние N минут, увидеть изменения конкретного объекта. Разработчики получают более детальную информацию о событиях, от которых непосредственно зависит работа приложения.
HPA API. После пяти лет «боевой» эксплуатации в статусе beta и многих доработок 2-я версия HPA (Horizontal Pod Autoscaler) признана стабильной [72]. Важно: это значит, что во всех манифестах с kind: HorizontalPodAutoscaler нужно заменить apiVersion: autoscaling/v2beta2 на apiVersion: autoscaling/v2.
Defend against logging secrets via static analysis. Защита от логирования секретов на основе статического анализа (#1933 [73]). Подробнее о работе фичи и причинах ее появления — в нашем обзоре K8s 1.20 [74].
Reduce Kubernetes build maintenance. Улучшение во внутренней инфраструктуре Kubernetes, которое обобщает проделанную работу по перемещению всех сценариев сборки K8s в make build и удалению bazel build (KEP [75]).
Метрика scheduler_volume_scheduling_duration_seconds.
Флаг --experimental-bootstrap-kubeconfig.
Этап update-cluster-status при выполнении команды kubeadm reset.
Kubectl-опция --dry-run теперь поддерживает только значения server, client или none.
Обновления в зависимостях Kubernetes [76]:
cri-tools v1.22.0;
etcd 3.5.1;
используемая версия Go 1.17.3;
containerd v1.4.11.
Читайте также в нашем блоге:
Автор: Oleg Zinovyev
Источник [79]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/sistemnoe-administrirovanie/370307
Ссылки в тексте:
[1] Kubernetes enhancements tracking: https://docs.google.com/spreadsheets/d/1P1J1QpayRmh2SNjs8T-wBCb6SgEOdWTRQ7MBol7yibk/edit?usp=sharing
[2] CHANGELOG-1.23: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md
[3] обзор Sysdig: https://sysdig.com/blog/kubernetes-1-23-whats-new/
[4] прошлом: https://habr.com/ru/company/flant/blog/571184/
[5] #2644: https://github.com/kubernetes/enhancements/issues/2644
[6] KEP: https://github.com/kubernetes/enhancements/blob/master/keps/sig-storage/2644-honor-pv-reclaim-policy/README.md#summary
[7] #2317: https://github.com/kubernetes/enhancements/issues/2317
[8] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/2317-fsgroup-on-mount#summary
[9] #1790: https://github.com/kubernetes/enhancements/issues/1790
[10] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1790-recover-resize-failure#summary
[11] пользовательских сценариев: https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1790-recover-resize-failure#user-flow-stories
[12] Понимаем Container Storage Interface (в Kubernetes и не только): https://habr.com/ru/company/flant/blog/424211/
[13] Плагины томов для хранилищ в Kubernetes: от Flexvolume к CSI: https://habr.com/ru/company/flant/blog/465417/
[14] #2589: https://github.com/kubernetes/enhancements/issues/2589
[15] большого проекта: https://github.com/kubernetes/enhancements/issues/625
[16] Portworx: https://portworx.com/use-case/kubernetes-storage/
[17] документации проекта: https://docs.portworx.com/portworx-install-with-kubernetes/storage-operations/csi/
[18] #2923: https://github.com/kubernetes/enhancements/issues/2923
[19] KEP: https://github.com/Jiawei0227/enhancements/tree/dbfe36f97e0ffa8f790a69b52f8d6af945ed4687/keps/sig-storage/2923-csi-migration-ceph-rbd#summary
[20] на внешний CSI-драйвер для Ceph: https://github.com/ceph/ceph-csi
[21] от проблемы с блокировкой RBD: https://habr.com/ru/company/flant/news/t/589503/#:~:text=2.%20%D0%91%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0%20Ceph%20RBD.
[22] #1487: https://github.com/kubernetes/enhancements/issues/1487
[23] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/695-skip-permission-change#summary
[24] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-storage/1682-csi-driver-skip-permission#summary
[25] KEP: https://github.com/pohly/enhancements/blob/generic-inline-volumes/keps/sig-storage/1698-generic-ephemeral-volumes/README.md#summary
[26] #2876: https://github.com/kubernetes/enhancements/issues/2876
[27] KEP: https://github.com/jpbetz/enhancements/blob/c01fcb1cf3230b9eb9954300c6d830d536767f20/keps/sig-api-machinery/2876-crd-validation-expression-language/README.md#summary
[28] CEL: https://github.com/google/cel-go
[29] #2887: https://github.com/kubernetes/enhancements/issues/2887
[30] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-api-machinery/2887-openapi-enum-types#summary
[31] #1040: https://github.com/kubernetes/enhancements/issues/1040
[32] в обзоре K8s 1.18: https://habr.com/ru/company/flant/blog/493284/#:~:text=%D0%90%D0%BB%D1%8C%D1%84%D0%B0%2D%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20Priority%20and%20Fairness%20%D0%B4%D0%BB%D1%8F%20API%20(KEP)
[33] #2371: https://github.com/kubernetes/enhancements/issues/2371
[34] KEP: https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2371-cri-pod-container-stats/README.md#summary
[35] cAdvisor: https://github.com/google/cadvisor
[36] #2902: https://github.com/kubernetes/enhancements/issues/2902
[37] KEP: https://github.com/klueska/enhancements/blob/3fee0794fe3500d3d4aeaa74aa36d3254ae96b96/keps/sig-node/2902-cpumanager-distribute-cpus-policy-option/README.md#summary
[38] #2727: https://github.com/kubernetes/enhancements/issues/2727
[39] KEP: https://github.com/bowei/enhancements/blob/05a21ed3645f1c6702cabe16fad402a87ff82e47/keps/sig-node/2727-grpc-probe/README.md#goals
[40] grpc_health_probe(1): https://github.com/grpc-ecosystem/grpc-health-probe
[41] предыдущем релизе: https://habr.com/ru/company/flant/blog/571184/#:~:text=New%20CPU%20Manager%20Policies
[42] в KEP: https://github.com/fromanirh/enhancements/tree/0ac5a812eccfee0322c7d939f837420cb52c8ba5/keps/sig-node/2625-cpumanager-policies-thread-placement#summary
[43] фича: https://github.com/kubernetes/enhancements/issues/277
[44] в Kubernetes 1.16: https://habr.com/ru/company/flant/blog/467477/#:~:text=%D0%BF%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D1%8B%20%D1%82%D0%B0%D0%BA%20%D0%BD%D0%B0%D0%B7%D1%8B%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5%20%C2%AB%D1%8D%D1%84%D0%B5%D0%BC%D0%B5%D1%80%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%D1%8B%C2%BB%20(Ephemeral%20Containers)%2C%20%D0%BF%D1%80%D0%B8%D0%B7%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%83%D0%BF%D1%80%D0%BE%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D1%8B%20%D0%BE%D1%82%D0%BB%D0%B0%D0%B4%D0%BA%D0%B8%20%D0%B2%20pod%27%D0%B0%D1%85.
[45] kubectl-debug: https://github.com/aylei/kubectl-debug
[46] растет: https://habr.com/ru/company/flant/blog/591475/#:~:text=Docker%20%D0%B2%D1%81%D0%B5%20%D0%BC%D0%B5%D0%BD%D0%B5%D0%B5%20%D0%BF%D0%BE%D0%BF%D1%83%D0%BB%D1%8F%D1%80%D0%B5%D0%BD%20%D0%BA%D0%B0%D0%BA%20%D1%81%D1%80%D0%B5%D0%B4%D0%B0%20%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%B2%20K8s
[47] приближающегося устаревания: https://habr.com/ru/company/flant/news/t/589503/
[48] #2879: https://github.com/kubernetes/enhancements/issues/2879
[49] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/2879-ready-pods-job-status#summary
[50] в нашем предыдущем обзоре: https://habr.com/ru/company/flant/blog/571184/#:~:text=Job%20tracking%20without%20lingering%20Pods
[51] в KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-apps/2307-job-tracking-without-lingering-pods#summary
[52] KEP: https://github.com/ravisantoshgudimetla/enhancements/blob/0acdf5208a30d649c214aa330ad198a737d44f35/keps/sig-apps/2599-minreadyseconds-for-statefulsets/README.md#summary
[53] представлена: https://github.com/kubernetes/enhancements/issues/19
[54] Фича: https://github.com/kubernetes/enhancements/issues/592
[55] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/2433-topology-aware-hints#summary
[56] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/563-dual-stack#summary
[57] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-network/2365-ingressclass-namespaced-params#summary
[58] #2802: https://github.com/kubernetes/enhancements/issues/2802
[59] KEP: https://github.com/ravisantoshgudimetla/enhancements/blob/03f3dd8ec5c56b519bfc49c00ae71895d8e85e28/keps/sig-windows/2802-identify-windows-pods-apiserver-admission/README.md#summary
[60] #2845: https://github.com/kubernetes/enhancements/issues/2845
[61] KEP: https://github.com/kubernetes/enhancements/blob/master/keps/sig-instrumentation/2845-deprecate-klog-specific-flags-in-k8s-components/README.md#summary
[62] klog: https://github.com/kubernetes/klog
[63] чем в JSON-формате: https://github.com/kubernetes/enhancements/tree/master/keps/sig-instrumentation/1602-structured-logging#logger-implementation-performance
[64] #2915: https://github.com/kubernetes/enhancements/issues/2915
[65] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-cluster-lifecycle/kubeadm/2915-kubeadm-replace-kubelet-config-x.y#summary
[66] #1440: https://sysdig.com/blog/kubernetes-1-23-whats-new/#1440
[67] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/1440-kubectl-events#summary
[68] неупорядоченная: https://github.com/kubernetes/kubernetes/issues/29838
[69] неинформативный: https://github.com/kubernetes/kubernetes/issues/65646
[70] избыточный: https://github.com/kubernetes/kubectl/issues/704
[71] другие проблемы: https://github.com/kubernetes/enhancements/tree/master/keps/sig-cli/1440-kubectl-events#limitations-of-the-existing-design
[72] признана стабильной: https://github.com/kubernetes/enhancements/issues/2702
[73] #1933: https://github.com/kubernetes/enhancements/issues/1933
[74] в нашем обзоре K8s 1.20: https://habr.com/ru/company/flant/blog/530924/#:~:text=%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%B0%20%D0%BE%D1%82%20%D0%BB%D0%BE%D0%B3%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F%20%D1%81%D0%B5%D0%BA%D1%80%D0%B5%D1%82%D0%BE%D0%B2%20%D0%BD%D0%B0%20%D0%BE%D1%81%D0%BD%D0%BE%D0%B2%D0%B5%20%D1%81%D1%82%D0%B0%D1%82%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%BE%D0%B3%D0%BE%20%D0%B0%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0
[75] KEP: https://github.com/kubernetes/enhancements/tree/master/keps/sig-testing/2420-reducing-kubernetes-build-maintenance#summary
[76] в зависимостях Kubernetes: https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md#changed-1
[77] В Kubernetes 1.22 режим seccomp сделают активным по умолчанию: https://habr.com/ru/company/flant/news/t/557836/
[78] Kubernetes 1.20: обзор основных новшеств: https://habr.com/ru/company/flant/blog/530924/
[79] Источник: https://habr.com/ru/post/593735/?utm_source=habrahabr&utm_medium=rss&utm_campaign=593735
Нажмите здесь для печати.