Kubernetes 1.16 — cum să te actualizezi fără a strica nimic

Kubernetes 1.16 — cum să te actualizezi fără a strica nimic

Astăzi, 18 septembrie, apare o nouă versiune a Kubernetes — 1.16. Ca de obicei, ne așteaptă multe îmbunătățiri și noutăți. Dar aș dori să atrag atenția asupra secțiunilor Action Required din fișier CHANGELOG-1.16.md. În aceste secțiuni sunt publicate modificările care pot afecta funcționarea aplicației tale, a uneltelor de întreținere a cluster-ului sau care necesită modificări în fișierele de configurare.

În general, necesită intervenție manuală…

Să începem imediat cu o modificare care, cel mai probabil, va afecta pe toți cei care lucrează de mult timp cu Kubernetes. API-ul Kubernetes nu mai suportă versiunile învechite ale API-ului resurselor.

Dacă cineva nu știa, sau a uitat…Versiunea API-ului resursei este specificată în manifest, în câmpul apiVersion: apps/v1

Anume:

Tipul resursei
Vechea versiune
Ce trebuie să înlocuiești

Toate resursele
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

De asemenea, vreau să atrag atenția că obiectele de tip Ingress au și schimbat apiVersion pe networking.k8s.io/v1beta1. Valoarea veche extensions/v1beta1 este încă suportată, dar este un motiv bun să actualizezi și această versiune în manifeste.

Există destule modificări în diverse etichete de sistem (Node labels) care sunt setate pe noduri.

Kubelet a interzis setarea etichetelor arbitrare (anterior acestea puteau fi setate prin opțiunile de pornire kubelet --node-labels), a lăsat doar această listă de etichete permise:

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

Etichete beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready și beta.kubernetes.io/kube-proxy-ds-ready nu mai sunt adăugate pe noile noduri, iar diferitele componente suplimentare au început să utilizeze alte etichete ca selector de nod:

Componentă
Eticheta veche
Eticheta actuală

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 acum șterge fișierul de configurare inițial al kubelet-ului bootstrap-kubelet.conf. Dacă instrumentele tale s-au referit la acest fișier, atunci fă trecerea la utilizarea kubelet.conf, în care se păstrează setările actuale de acces.

Cadvisor nu mai oferă metrici pod_name și container_name, dacă le-ai folosit în Prometheus, treci la metrici pod și container corespunzător.

Am eliminat cheile din linia de comandă:

Componentă
Cheie eliminată

hyperkube
--make-symlink

kube-proxy
--resource-container

Schedulerul a început să folosească versiunea v1beta1 a Event API. Dacă utilizați instrumente externe pentru interacțiunea cu Event API, comutați la versiunea actualizată.

Un moment de umor. În procesul de pregătire a versiunii 1.16, au fost făcute următoarele modificări:

  • am eliminat notația scheduler.alpha.kubernetes.io/critical-pod în versiunea v1.16.0-alpha.1
  • am reintegrat notația scheduler.alpha.kubernetes.io/critical-pod în versiunea v1.16.0-alpha.2
  • am eliminat notația scheduler.alpha.kubernetes.io/critical-pod în versiunea v1.16.0-beta.1

Utilizați câmpul spec.priorityClassName pentru a specifica importanța pod-ului.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster