
Сегодня, 18 сентября, выходит очередная версия Kubernetes — 1.16. Как всегда нас ждет много улучшений и новинок. Но я хотел бы обратить ваше внимание на разделы Action Required файла . В этих разделах публикуются изменения, которые могут сломать работу вашего приложения, инструментов по обслуживанию кластера или требуют внесения изменений в файлы конфигурации.
В общем, требуют ручного вмешательства…
Начнем сразу с изменения, которое, скорее всего, затронет всех, кто достаточно долго работает с kubernetes. Kubernetes API перестал поддерживать устаревшие версии API ресурсов.
Если кто не знал, или забыл…Версия API ресурса указывается в манифесте, в поле apiVersion: apps/v1
А именно:
Тип ресурса
Старая версия
На что надо заменить
Все ресурсы
apps/v1beta1
apps/v1beta2
apps/v1
deployments
daemonset
replicaset
extension/v1beta1
apps/v1
networkpolicies
extensions/v1beta1
networking.k8s.io/v1
podsecuritypolicies
extensions/v1beta1
policy/v1beta1
Также хочу обратить внимание, что у объектов типа Ingress также сменился apiVersion на networking.k8s.io/v1beta1. Старое значение extensions/v1beta1 еще поддерживается, но есть хороший повод заодно обновить и эту версию в манифестах.
Достаточно много изменений в различных системных метках (Node labels), которые устанавливаются на узлы.
Kubelet запретили устанавливать произвольные метки (раньше их можно было задавать через ключи запуска kubelet --node-labels), оставили только вот этот список :
kubernetes.io/hostname
kubernetes.io/instance-type
kubernetes.io/os
kubernetes.io/arch
beta.kubernetes.io/instance-type
beta.kubernetes.io/os
beta.kubernetes.io/arch
failure-domain.beta.kubernetes.io/zone
failure-domain.beta.kubernetes.io/region
failure-domain.kubernetes.io/zone
failure-domain.kubernetes.io/region
[*.]kubelet.kubernetes.io/*
[*.]node.kubernetes.io/*
Метки beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready and beta.kubernetes.io/kube-proxy-ds-ready больше не добавляются на новые узлы, и различные дополнительные компоненты стали использовать немного другие метки в качестве node selector:
Компонент
Старая метка
Актуальная метка
kube-proxy
beta.kubernetes.io/kube-proxy-ds-ready
node.kubernetes.io/kube-proxy-ds-ready
ip-mask-agent
beta.kubernetes.io/masq-agent-ds-ready
node.kubernetes.io/masq-agent-ds-ready
metadata-proxy
beta.kubernetes.io/metadata-proxy-ready
cloud.google.com/metadata-proxy-ready
kubeadm теперь удаляет за собой файл начальной конфигурации кублета bootstrap-kubelet.conf. Если ваши инструменты обращались к этому файлу, то переключитесь на использование kubelet.conf, в котором хранятся актуальные настройки доступа.
Cadvisor больше не отдает метрики pod_name и container_name, если вы использовали их в Prometheus, переходите на метрики pod и container соответственно.
Убрали ключи командой строки:
Компонент
Убранный ключ
hyperkube
—make-symlink
kube-proxy
—resource-container
Шедулер стал использовать версию v1beta1 Event API. Если вы используете сторонние инструменты для взаимодействия с Event API, переключитесь на актуальную версию.
Минутка юмора. В процессе подготовки релиза 1.16 были сделаны следующие изменения:
- убрали аннотацию
scheduler.alpha.kubernetes.io/critical-podв версии v1.16.0-alpha.1 - вернули аннотацию
scheduler.alpha.kubernetes.io/critical-podв версии v1.16.0-alpha.2 - убрали аннотацию
scheduler.alpha.kubernetes.io/critical-podв версии v1.16.0-beta.1
Используйте поле spec.priorityClassName для указания важности пода.
Источник: habr.com
