Kubernetes 1.16 — как обновиться и ничего не сломать

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!



Сегодня, 18 сентября, выходит очередная версия Kubernetes — 1.16. Как всегда нас ждет много улучшений и новинок. Но я хотел бы обратить ваше внимание на разделы Action Required файла CHANGELOG-1.16.md. В этих разделах публикуются изменения, которые могут сломать работу вашего приложения, инструментов по обслуживанию кластера или требуют внесения изменений в файлы конфигурации.

В общем, требуют ручного вмешательства…

Начнем сразу с изменения, которое, скорее всего, затронет всех, кто достаточно долго работает с 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 для указания важности пода.
Источник: https://habr.com/ru/company/southbridge/blog/467883/


Интересные статьи

Интересные статьи

Ознакомившись с этим руководством, вы научитесь легко задавать целевые уровни обслуживания (SLO, от англ. Service Level Objectives) для работоспособности сервисов в Kubernetes с помощью&n...
Уважаемые читатели, доброго дня! В данной статье Игорь Котенко, главный архитектор компании «Неофлекс», делится опытом развертывания платформы контейнеризации на инфраструктуре пре...
Коллеги, всем привет! На этой неделе состоялся релиз очередной версии нашего плагина DevOpsProdigy KubeGraf v1.4.0. Он разработан для Grafana и предназначен для мониторинга kuberne...
Примечание: эта статья не претендует на статус лучшей практики. В ней описан опыт конкретной реализации инфраструктурной задачи в условиях использования Kubernetes и Helm, который может быть ...
Среди советов по улучшению юзабилити интернет-магазина, которые можно встретить в инете, один из явных лидеров — совет «сообщайте посетителю стоимость доставки как можно раньше».