
Dziś, 18 września, ukazuje się kolejna wersja Kubernetes - 1.16. Jak zawsze możemy oczekiwać wielu ulepszeń i nowości. Chciałbym jednak zwrócić uwagę na sekcje Action Required w pliku . W tych sekcjach publikowane są zmiany, które mogą zakłócić działanie Twojej aplikacji, narzędzi do zarządzania klastrem lub wymagają wprowadzenia zmian w plikach konfiguracyjnych.
Generalnie wymagają one ręcznej interwencji…
Zacznijmy od zmiany, która najprawdopodobniej dotknie wszystkich, którzy pracują z kubernetes od dłuższego czasu. API Kubernetes przestało wspierać przestarzałe wersje API zasobów.
Jeśli ktoś nie wiedział, lub zapomniał…Wersja API zasobu jest podawana w manifeście, w polu apiVersion: apps/v1
A mianowicie:
Typ zasobu
Stara wersja
Na co trzeba wymienić
Wszystkie zasoby
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
Chcę też zwrócić uwagę, że obiekty typu Ingress zmieniły się również apiVersion na networking.k8s.io/v1beta1. Stara wartość extensions/v1beta1 wciąż jest wspierana, ale jest dobry powód, aby również zaktualizować tę wersję w manifestach.
Jest wiele zmian w różnych etykietach systemowych (Node labels), które są ustawiane na węzłach.
Kubelet zablokował możliwość ustawiania dowolnych etykiet (wcześniej można je było ustawiać za pomocą flagi uruchamiania kubelet --node-labels), pozostawiając tylko tę listę :
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 oraz 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 selektora węzłów:
Komponent
Stara etykieta
Aktualna etykieta
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 teraz usuwa za sobą plik początkowej konfiguracji kubeleta bootstrap-kubelet.conf. Jeśli Twoje narzędzia odnosiły się do tego pliku, przełącz się na użycie kubelet.conf, w którym przechowywane są aktualne ustawienia dostępu.
Cadvisor nie zwraca już metryk pod_name i container_name, jeśli używałeś ich w Prometheus, przejdź na metryki pod i container odpowiednio.
Usunięto klucze argumentów linii poleceń:
Komponent
Usunięty klucz
hyperkube
—make-symlink
kube-proxy
—resource-container
Scheduler zaczął korzystać z wersji v1beta1 Event API. Jeśli używasz narzędzi innych firm do interakcji z Event API, przełącz się na aktualną wersję.
Chwila humoru. W trakcie przygotowań do wydania 1.16 wprowadzono następujące zmiany:
- usunięto adnotację
scheduler.alpha.kubernetes.io/critical-podw wersji v1.16.0-alpha.1 - przywrócono adnotację
scheduler.alpha.kubernetes.io/critical-podw wersji v1.16.0-alpha.2 - usunięto adnotację
scheduler.alpha.kubernetes.io/critical-podw wersji v1.16.0-beta.1
Użyj pola spec.priorityClassName do określenia ważności poda.
Źródło: habr.com
