Kubernetes 1.16 - jak dokonać aktualizacji bez psucia czegokolwiek

Kubernetes 1.16 - jak dokonać aktualizacji bez psucia czegokolwiek

Dziś, 18 września, zostaje wydana kolejna wersja Kubernetesa – 1.16. Jak zawsze czeka na nas wiele ulepszeń i nowości. Chciałbym jednak zwrócić uwagę na sekcje pliku Wymagane działanie DZIENNIK ZMIAN-1.16.md. W tych sekcjach publikuje się zmiany, które mogą spowodować uszkodzenie aplikacji, narzędzi do konserwacji klastra lub wymagać zmian w plikach konfiguracyjnych.

Ogólnie rzecz biorąc, wymagają ręcznej interwencji...

Zacznijmy od razu od zmiany, która najprawdopodobniej dotknie każdego, kto wystarczająco długo pracuje z kubernetesem. Interfejs API Kubernetes nie obsługuje już starszych wersji interfejsu API zasobów.

Jeśli ktoś nie wiedział lub zapomniał...Wersja API zasobu jest wskazana w manifeście, w polu apiVersion: apps/v1

A mianowicie:

Typ zasobu
stara wersja
Na co należy wymienić

Wszystkie zasoby
aplikacje/v1beta1
aplikacje/v1beta2
aplikacje / v1

wdrożenia
demonset
zestaw replik
rozszerzenie/v1beta1
aplikacje / v1

zasady sieciowe
rozszerzenia/v1beta1
sieć.k8s.io/v1

zasady podbezpieczeństwa
rozszerzenia/v1beta1
polityka/v1beta1

Chciałbym również zwrócić uwagę na fakt, że obiekty typu Ingress również się zmieniło apiVersion na networking.k8s.io/v1beta1. Stare znaczenie extensions/v1beta1 jest nadal obsługiwany, ale istnieje dobry powód, aby jednocześnie zaktualizować tę wersję w manifestach.

Istnieje sporo zmian w różnych etykietach systemowych (etykietach węzłów), które są instalowane na węzłach.

Kubeletowi zakazano ustawiania dowolnych etykiet (wcześniej można było je ustawić za pomocą klawiszy uruchamiania kubelet --node-labels), pozostawili tylko tę listę dozwolony:

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/*

tagi beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready i beta.kubernetes.io/kube-proxy-ds-ready nie są już dodawane do nowych węzłów, a różne dodatkowe komponenty zaczęły używać nieco innych etykiet jako selektorów węzłów:

komponent
Stara etykieta
Aktualna etykieta

kube-proxy
beta.kubernetes.io/kube-proxy-ds-ready
node.kubernetes.io/kube-proxy-ds-ready

agent maski ip
beta.kubernetes.io/masq-agent-ds-ready
node.kubernetes.io/masq-agent-ds-ready

metadane-proxy
beta.kubernetes.io/metadata-proxy-ready
cloud.google.com/metadata-proxy-ready

kubeadm usuwa teraz znajdujący się za nim początkowy plik konfiguracyjny kubletu bootstrap-kubelet.conf. Jeśli Twoje narzędzia miały dostęp do tego pliku, przełącz się na użycie kubelet.conf, który przechowuje aktualne ustawienia dostępu.

Cadvisor nie udostępnia już wskaźników pod_name и container_namejeśli używałeś ich w Prometeuszu, przejdź do metryk pod и container odpowiednio.

Usunięto klawisze za pomocą polecenia line:

komponent
Schowany klucz

hiperkube
--make-dowiązanie symboliczne

kube-proxy
--kontener-zasobów

Osoba planująca zaczęła używać wersji v1beta1 interfejsu API zdarzeń. Jeśli do interakcji z Event API używasz narzędzi innych firm, przełącz się na najnowszą wersję.

Chwila humoru. Podczas przygotowywania wersji 1.16 wprowadzono następujące zmiany:

  • usunąłem adnotację scheduler.alpha.kubernetes.io/critical-pod w wersji v1.16.0-alfa.1
  • zwrócił adnotację scheduler.alpha.kubernetes.io/critical-pod w wersji v1.16.0-alfa.2
  • usunąłem adnotację scheduler.alpha.kubernetes.io/critical-pod w wersji v1.16.0-beta.1

Skorzystaj z pola spec.priorityClassName aby wskazać znaczenie kapsuły.

Źródło: www.habr.com

Dodaj komentarz