
Oggi, 18 settembre, viene rilasciata una nuova versione di Kubernetes — 1.16. Come sempre, ci aspettano molte migliorie e novità. Vorrei però attirare la vostra attenzione sulle sezioni Action Required del file . In queste sezioni vengono pubblicati cambiamenti che potrebbero rompere il funzionamento della vostra applicazione, degli strumenti di gestione del cluster, o che richiedono modifiche ai file di configurazione.
In generale, richiedono un intervento manuale…
Iniziamo subito con una modifica che probabilmente interesserà tutti coloro che lavorano con Kubernetes da un po' di tempo. L'API di Kubernetes ha smesso di supportare le versioni obsolete dell'API delle risorse.
Se qualcuno non lo sapeva, o se l'ha dimenticato…La versione dell'API della risorsa è specificata nel manifesto, nel campo apiVersion: apps/v1
Cioè:
Tipo di risorsa
Versione obsoleta
Cosa deve essere sostituito
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 è cambiato anche apiVersion con networking.k8s.io/v1beta1. Il valore precedente extensions/v1beta1 è ancora supportato, ma c'è un buon motivo per aggiornare anche questa versione nei manifesti.
Ci sono molte modifiche nelle varie etichette di sistema (Node labels) che vengono impostate sui nodi.
A Kubelet è stato vietato di impostare etichette arbitrarie (in precedenza era possibile definirle tramite le opzioni di avvio kubelet --node-labels), lasciando solo questo elenco :
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/*
Etichette beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready e beta.kubernetes.io/kube-proxy-ds-ready non vengono più aggiunte ai nuovi nodi, e vari componenti aggiuntivi hanno iniziato a utilizzare etichette leggermente diverse come selettore 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
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.conf. Se i vostri strumenti si riferivano a questo file, passate all'uso di kubelet.conf, dove sono memorizzate le impostazioni di accesso attuali.
Cadvisor non restituisce più metriche pod_name e container_name, se li utilizzavi in Prometheus, vai alle metriche pod e container rispettivamente.
Rimossi i parametri della riga di comando:
Componente
Parametro rimosso
hyperkube
—make-symlink
kube-proxy
—resource-container
Lo scheduler ora utilizza la versione v1beta1 dell'Event API. Se utilizzi strumenti di terze parti per interagire con l'Event API, passa alla versione aggiornata.
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 indicare l'importanza del pod.
Fonte: habr.com
