Kubernetes 1.16 - hur man uppgraderar utan att gå sönder något

Kubernetes 1.16 - hur man uppgraderar utan att gå sönder något

Idag, den 18 september, släpps nästa version av Kubernetes - 1.16. Som alltid väntar många förbättringar och nya produkter på oss. Men jag skulle vilja uppmärksamma dig på avsnitten Åtgärd som krävs i filen ÄNDRINGSLOGG-1.16.md. Dessa avsnitt publicerar ändringar som kan skada din applikation, klusterunderhållsverktyg eller kräva ändringar av konfigurationsfiler.

I allmänhet kräver de manuella ingrepp...

Låt oss börja direkt med en förändring som med största sannolikhet kommer att påverka alla som har arbetat med kubernetes tillräckligt länge. Kubernetes API stöder inte längre äldre resurs-API-versioner.

Om någon inte visste eller glömde...API-versionen av resursen anges i manifestet i fältet apiVersion: apps/v1

Nämligen

Resurstyp
gammal version
Vad ska ersättas med

Alla resurser
apps/v1beta1
apps/v1beta2
appar / v1

distributioner
daemonset
replikuppsättning
extension/v1beta1
appar / v1

nätverkspolicyer
extensions/v1beta1
networking.k8s.io/v1

podsäkerhetspolicyer
extensions/v1beta1
policy/v1beta1

Jag skulle också vilja fästa er uppmärksamhet på det faktum att föremål av typ Ingress också ändrats apiVersionnetworking.k8s.io/v1beta1. Gammal betydelse extensions/v1beta1 stöds fortfarande, men det finns en god anledning att uppdatera den här versionen i manifesten samtidigt.

Det är ganska många förändringar i olika systemetiketter (Nodetiketter) som är installerade på noder.

Kubelet förbjöds att ställa in godtyckliga etiketter (tidigare kunde de ställas in via startnycklar kubelet --node-labels), lämnade de bara denna lista tillåtet:

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

Tags beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready och beta.kubernetes.io/kube-proxy-ds-ready läggs inte längre till i nya noder, och olika ytterligare komponenter har börjat använda lite olika etiketter som nodväljare:

komponent
Gammal etikett
Aktuell etikett

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 tar nu bort den ursprungliga kubletkonfigurationsfilen bakom den bootstrap-kubelet.conf. Om dina verktyg fick åtkomst till den här filen, byt sedan till att använda kubelet.conf, som lagrar aktuella åtkomstinställningar.

Cadvisor tillhandahåller inte längre mätvärden pod_name и container_nameom du använde dem i Prometheus, gå till metrics pod и container respektive.

Tog bort nycklarna med linjekommandot:

komponent
Indragen nyckel

hyperkube
--make-symlink

kube-proxy
--resurs-behållare

Schemaläggaren började använda version v1beta1 av Event API. Om du använder verktyg från tredje part för att interagera med Event API, byt till den senaste versionen.

Ett ögonblick av humor. Under förberedelserna av release 1.16 gjordes följande ändringar:

  • tog bort anteckningen scheduler.alpha.kubernetes.io/critical-pod i version v1.16.0-alpha.1
  • returnerade anteckningen scheduler.alpha.kubernetes.io/critical-pod i version v1.16.0-alpha.2
  • tog bort anteckningen scheduler.alpha.kubernetes.io/critical-pod i version v1.16.0-beta.1

Använd fältet spec.priorityClassName för att indikera poddens betydelse.

Källa: will.com

Lägg en kommentar