Kubernetes 1.16 - πώς να αναβαθμίσετε χωρίς να σπάσετε τίποτα

Kubernetes 1.16 - πώς να αναβαθμίσετε χωρίς να σπάσετε τίποτα

Σήμερα, 18 Σεπτεμβρίου, κυκλοφορεί η επόμενη έκδοση του Kubernetes - 1.16. Όπως πάντα, μας περιμένουν πολλές βελτιώσεις και νέα προϊόντα. Θα ήθελα όμως να επιστήσω την προσοχή σας στις ενότητες Απαιτούμενη ενέργεια του αρχείου ΑΛΛΑΓΗ-1.16.μδ. Αυτές οι ενότητες δημοσιεύουν αλλαγές που ενδέχεται να καταστρέψουν την εφαρμογή σας, εργαλεία συντήρησης συμπλέγματος ή απαιτούν αλλαγές στα αρχεία διαμόρφωσης.

Γενικά απαιτούν χειροκίνητη παρέμβαση...

Ας ξεκινήσουμε αμέσως με μια αλλαγή που πιθανότατα θα επηρεάσει όλους όσους εργάζονται με kubernetes αρκετό καιρό. Το Kubernetes API δεν υποστηρίζει πλέον εκδόσεις API πόρων παλαιού τύπου.

Αν κάποιος δεν ήξερε ή ξέχασε...Η έκδοση API του πόρου υποδεικνύεται στο μανιφέστο, στο πεδίο apiVersion: apps/v1

δηλαδή

Τύπος πόρου
Παλιά εκδοχή
Με τι πρέπει να αντικατασταθεί

Όλοι οι πόροι
apps/v1beta1
apps/v1beta2
apps/v1

αναπτύξεις
δαίμονας
αντίγραφο
επέκταση/v1beta1
apps/v1

δικτυακών πολιτικών
επεκτάσεις/v1beta1
networking.k8s.io/v1

podsecuritypolicies
επεκτάσεις/v1beta1
πολιτική/v1beta1

Θα ήθελα επίσης να επιστήσω την προσοχή σας στο γεγονός ότι αντικείμενα τύπου Ingress άλλαξε επίσης apiVersion επί networking.k8s.io/v1beta1. Παλιό νόημα extensions/v1beta1 εξακολουθεί να υποστηρίζεται, αλλά υπάρχει ένας καλός λόγος για την ενημέρωση αυτής της έκδοσης στα μανιφέστα ταυτόχρονα.

Υπάρχουν πολλές αλλαγές σε διάφορες ετικέτες συστήματος (Node labels) που είναι εγκατεστημένες σε κόμβους.

Απαγορεύτηκε στο Kubelet να ορίζει αυθαίρετες ετικέτες (προηγουμένως μπορούσαν να οριστούν μέσω των κλειδιών εκκίνησης kubelet --node-labels), άφησαν μόνο αυτή τη λίστα επιτρεπόμενο:

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

ετικέτες beta.kubernetes.io/metadata-proxy-ready, beta.kubernetes.io/metadata-proxy-ready και beta.kubernetes.io/kube-proxy-ds-ready δεν προστίθενται πλέον σε νέους κόμβους και διάφορα πρόσθετα στοιχεία έχουν αρχίσει να χρησιμοποιούν ελαφρώς διαφορετικές ετικέτες ως επιλογείς κόμβων:

Στοιχείο
Παλιά ετικέτα
Τρέχουσα ετικέτα

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

μεταδεδομένα-διαμεσολαβητής
beta.kubernetes.io/metadata-proxy-ready
cloud.google.com/metadata-proxy-ready

Το kubeadm αφαιρεί τώρα το αρχικό αρχείο διαμόρφωσης kublet πίσω από αυτό bootstrap-kubelet.conf. Εάν τα εργαλεία σας είχαν πρόσβαση σε αυτό το αρχείο, μεταβείτε στη χρήση kubelet.conf, το οποίο αποθηκεύει τις τρέχουσες ρυθμίσεις πρόσβασης.

Το Cadvisor δεν παρέχει πλέον μετρήσεις pod_name и container_nameαν τα χρησιμοποίησες στον Προμηθέα, πήγαινε στο metrics pod и container αντιστοίχως.

Αφαίρεσε τα κλειδιά με την εντολή γραμμής:

Στοιχείο
Ανασυρόμενο κλειδί

hyperkube
--κάνω-σύνδεσμος

kube-proxy
--πόρων-κοντέινερ

Ο προγραμματιστής άρχισε να χρησιμοποιεί την έκδοση v1beta1 του Event API. Εάν χρησιμοποιείτε εργαλεία τρίτων για αλληλεπίδραση με το Event API, μεταβείτε στην πιο πρόσφατη έκδοση.

Μια στιγμή χιούμορ. Κατά την προετοιμασία της έκδοσης 1.16, έγιναν οι ακόλουθες αλλαγές:

  • αφαίρεσε τον σχολιασμό scheduler.alpha.kubernetes.io/critical-pod στην έκδοση v1.16.0-alpha.1
  • επέστρεψε τον σχολιασμό scheduler.alpha.kubernetes.io/critical-pod στην έκδοση v1.16.0-alpha.2
  • αφαίρεσε τον σχολιασμό scheduler.alpha.kubernetes.io/critical-pod στην έκδοση v1.16.0-beta.1

Χρησιμοποιήστε το πεδίο spec.priorityClassName για να υποδείξει τη σημασία του λοβού.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο