Kubernetes 1.16: come aggiornare senza rompere nulla

Kubernetes 1.16: come aggiornare senza rompere nulla

Oggi, 18 settembre, viene rilasciata la prossima versione di Kubernetes: 1.16. Come sempre ci aspettano tanti miglioramenti e novità. Vorrei però attirare la vostra attenzione sulle sezioni Azione richiesta del file CHANGELOG-1.16.md. Queste sezioni pubblicano modifiche che potrebbero danneggiare l'applicazione, gli strumenti di manutenzione del cluster o richiedere modifiche ai file di configurazione.

In generale, richiedono un intervento manuale...

Cominciamo subito con un cambiamento che molto probabilmente interesserà tutti coloro che lavorano con Kubernetes da abbastanza tempo. L'API Kubernetes non supporta più le versioni API delle risorse legacy.

Se qualcuno non lo sapeva o se ne era dimenticato...La versione API della risorsa è indicata nel manifest, nel campo apiVersion: apps/v1

Vale a dire

Tipo di risorsa
vecchia versione
Con cosa dovrebbe essere sostituito

Tutte le risorse
app/v1beta1
app/v1beta2
app / v1

implementazioni
demonset
set di repliche
estensione/v1beta1
app / v1

politiche di rete
estensioni/v1beta1
networking.k8s.io/v1

podsecuritypolicies
estensioni/v1beta1
policy/v1beta1

Vorrei anche attirare la vostra attenzione sul fatto che gli oggetti di tipo Ingress anche cambiato apiVersion su networking.k8s.io/v1beta1. Vecchio significato extensions/v1beta1 è ancora supportato, ma c'è una buona ragione per aggiornare contemporaneamente questa versione nei manifest.

Ci sono molti cambiamenti nelle varie etichette di sistema (etichette dei nodi) installate sui nodi.

A Kubelet era vietato impostare etichette arbitrarie (in precedenza potevano essere impostate tramite chiavi di avvio kubelet --node-labels), hanno lasciato solo questo elenco consentito:

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

tag beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready e beta.kubernetes.io/kube-proxy-ds-ready non vengono più aggiunti ai nuovi nodi e vari componenti aggiuntivi hanno iniziato a utilizzare etichette leggermente diverse come selettori di nodo:

componente
Vecchia etichetta
Etichetta attuale

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

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

kubeadm ora rimuove il file di configurazione iniziale del kublet dietro di esso bootstrap-kubelet.conf. Se i tuoi strumenti accedevano a questo file, passa a using kubelet.conf, che memorizza le impostazioni di accesso correnti.

Cadvisor non fornisce più metriche pod_name и container_namese li hai usati in Prometheus, vai alle metriche pod и container rispettivamente.

Rimosse le chiavi con la riga di comando:

componente
Chiave retratta

iperkubo
--make-link simbolico

kube-proxy
--contenitore-risorse

Lo scheduler ha iniziato a utilizzare la versione v1beta1 dell'API Event. Se utilizzi strumenti di terze parti per interagire con l'API Event, passa alla versione più recente.

Un momento di umorismo. Durante la preparazione della release 1.16 sono state apportate le seguenti modifiche:

  • rimosso l'annotazione scheduler.alpha.kubernetes.io/critical-pod nella versione v1.16.0-alpha.1
  • ha restituito l'annotazione scheduler.alpha.kubernetes.io/critical-pod nella versione v1.16.0-alpha.2
  • rimosso l'annotazione scheduler.alpha.kubernetes.io/critical-pod nella versione v1.16.0-beta.1

Usa il campo spec.priorityClassName per indicare l'importanza del baccello.

Fonte: habr.com

Aggiungi un commento