Kubernetes 1.16 — hvordan opdaterer man uden at bryde noget

Kubernetes 1.16 — hvordan opdaterer man uden at bryde noget

I dag, den 18. september, udkommer endnu en version af Kubernetes — 1.16. Som altid venter der mange forbedringer og nyheder. Men jeg vil gerne påpege de sektioner, der kræver handling i filen CHANGELOG-1.16.md. I disse sektioner offentliggøres ændringer, som kan bryde din applikations funktionalitet, værktøjer til vedligeholdelse af klyngen eller kræver ændringer i konfigurationsfilerne.

Generelt kræver det manuel indgriben…

Lad os starte med ændringen, der sandsynligvis vil berøre alle, der har arbejdet med Kubernetes i lang tid. Kubernetes API har stoppet understøttelsen af forældede versioner af API-ressourcer.

Hvis nogen ikke vidste, eller har glemt…API-versionen for ressourcen angives i manifestet, i feltet apiVersion: apps/v1

Nemlig:

Ressourcetype
Gammel version
Hvad der skal erstattes med

Alle ressourcer
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

Jeg vil også gerne påpege, at objekter af typen Ingress har også ændret sig apiVersion og få en fungerende kommando. networking.k8s.io/v1beta1. Den gamle værdi extensions/v1beta1 er stadig understøttet, men der er en god grund til at opdatere denne version i manifestet.

Der er mange ændringer i forskellige systemlabels (Node labels), som er installeret på noderne.

Kubelet har fået forbud mod at installere vilkårlige labels (før kunne de angives via opstartsnøglen kubelet --node-labels), kun denne liste er tilbage af tilladte:

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

Labels beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready og beta.kubernetes.io/kube-proxy-ds-ready tilføjes ikke længere på nye noder, og forskellige ekstra komponenter bruger nu lidt andre labels som node selector:

Komponent
Gammel label
Aktuel label

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 fjerner nu den oprindelige konfigurationsfil for kubelet bootstrap-kubelet.conf. Hvis dine værktøjer har henvist til denne fil, skal du skifte over til at bruge kubelet.conf, hvor de aktuelle adgangsindstillinger opbevares.

Cadvisor leverer ikke længere metrics pod_name og container_name, hvis du har brugt dem i Prometheus, gå til metrics pod og container henholdsvis.

Fjernede nøgler fra kommandolinjen:

Komponent
Fjernet nøgle

hyperkube
—make-symlink

kube-proxy
—resource-container

Scheduler begyndte at bruge v1beta1 Event API versionen. Hvis du bruger eksterne værktøjer til at interagere med Event API, skal du skifte til den aktuelle version.

Et øjebliks humor. I forbindelse med forberedelsen af version 1.16 blev følgende ændringer foretaget:

  • fjernede annotationen scheduler.alpha.kubernetes.io/critical-pod i version v1.16.0-alpha.1
  • genindførte annotationen scheduler.alpha.kubernetes.io/critical-pod i version v1.16.0-alpha.2
  • fjernede annotationen scheduler.alpha.kubernetes.io/critical-pod i version v1.16.0-beta.1

Brug feltet spec.priorityClassName til at angive vigtigheden af pod'en.

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster