Kubernetes 1.16 — come aggiornare senza rompere nulla

Kubernetes 1.16 — come aggiornare senza rompere nulla

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 CHANGELOG-1.16.md. 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 di 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/*

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-pod nella versione v1.16.0-alpha.1
  • ripristinata l'annotazione scheduler.alpha.kubernetes.io/critical-pod nella versione v1.16.0-alpha.2
  • rimossa l'annotazione scheduler.alpha.kubernetes.io/critical-pod nella versione v1.16.0-beta.1

Utilizza il campo spec.priorityClassName per indicare l'importanza del pod.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster