
Oggi, 18 settembre, esce una nuova versione di Kubernetes — 1.16. Come sempre, ci aspettano molte migliorie e novità. Ma vorrei attirare la vostra attenzione sulle sezioni Action Required del file . In queste sezioni vengono pubblicate modifiche che potrebbero compromettere il funzionamento della vostra applicazione, degli strumenti per la gestione del cluster o che richiedono modifiche ai file di configurazione.
In generale, richiedono un intervento manuale…
Iniziamo subito con il cambiamento che probabilmente influenzerà tutti coloro che lavorano con Kubernetes da abbastanza tempo. L'API di Kubernetes ha smesso di supportare le versioni obsolete delle API delle risorse.
Se qualcuno non lo sapeva, o lo avesse dimenticato…La versione dell'API della risorsa è specificata nel manifesto, nel campo apiVersion: apps/v1
Cioè:
Tipo di risorsa
Vecchia versione
A cosa bisogna sostituirla
Tutte le risorse
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
Vorrei anche sottolineare che per gli oggetti di tipo Ingress c'è stata anche una modifica apiVersion in networking.k8s.io/v1beta1. Il vecchio valore extensions/v1beta1 è ancora supportato, ma ci sono buone ragioni per aggiornare anche questa versione nei manifesti.
Ci sono molte modifiche a diverse etichette di sistema (Node labels) che vengono impostate sui nodi.
A Kubelet è vietato impostare etichette arbitrarie (in precedenza si poteva farlo tramite le opzioni di avvio kubelet --node-labels), sono rimaste solo queste etichette :
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 diversi componenti aggiuntivi hanno iniziato a utilizzare etichette diverse come node selector:
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
metadata-proxy
beta.kubernetes.io/metadata-proxy-ready
cloud.google.com/metadata-proxy-ready
Kubeadm ora rimuove il file di configurazione iniziale del kubelet. bootstrap-kubelet.confSe i vostri strumenti facevano riferimento a questo file, passate all'utilizzo di kubelet.conf, in cui sono memorizzate le impostazioni di accesso attuali.
Cadvisor non restituisce più metriche pod_name e container_name, se li utilizzavate in Prometheus, passate alle metriche pod e container rispettivamente.
Sono state rimosse le chiavi della riga di comando:
Componente
Chiave rimossa
hyperkube
—make-symlink
kube-proxy
—resource-container
Lo scheduler ha iniziato a utilizzare la versione v1beta1 dell'Event API. Se utilizzi strumenti di terze parti per interagire con l'Event API, passa alla versione più recente.
Un momento di umorismo. Durante la preparazione del rilascio 1.16 sono state apportate le seguenti modifiche:
- rimossa l'annotazione
scheduler.alpha.kubernetes.io/critical-podnella versione v1.16.0-alpha.1 - ripristinata l'annotazione
scheduler.alpha.kubernetes.io/critical-podnella versione v1.16.0-alpha.2 - rimossa l'annotazione
scheduler.alpha.kubernetes.io/critical-podnella versione v1.16.0-beta.1
Utilizza il campo spec.priorityClassName per specificare l'importanza del pod.
Fonte: habr.com
