Kubernetes 1.16 — как да актуализирате и да не счупите нищо

Kubernetes 1.16 — как да актуализирате и да не счупите нищо

Днес, 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 и beta.kubernetes.io/kube-proxy-ds-ready вече не се добавят на новите възли, и различни допълнителни компоненти започнаха да използват малко различни етикети за селектор на възли:

Компонент
Старият етикет
Актуален етикет

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 вече изтрива файла за начална конфигурация на kubelet 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

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster