Kubernetes entwickelt sich stetig weiter, was regelmäßige Aktualisierungen und Verbesserungen mit sich bringt. Neue Versionen können Änderungen an APIs mit sich führen, wobei ältere Versionen als veraltet (deprecated) markiert und in späteren Releases entfernt werden. Diese Vorgehensweise dient der Plattformpflege, Sicherheitssteigerung und Code-Wartbarkeit.
Die Deprecation von APIs ist ein essentieller Bestandteil des Fortschritts von Kubernetes, um dessen Sicherheit, Effizienz und Langzeitbeständigkeit zu garantieren. Entwickler und Betreiber müssen sich dieser kontinuierlichen Veränderungen bewusst sein und proaktive Maßnahmen ergreifen, um ihre Anwendungen und Services up-to-date zu halten.
batch/v1beta1batch/v1 (verfügbar seit v1.21)Die vollständige Liste der deprecated APIs für verschiedene Versionen und die entsprechenden Anleitungen zur Migration finden Sie in den offiziellen Release-Notes von Kubernetes.
kubectl convert
können dabei helfen, Ressourcen von veralteten auf aktuelle
API-Versionen zu migrieren.kubectl convert ist Teil des Kubernetes Command-Line
Interface. Es ermöglicht Benutzern, ihre Ressourcen von einer Version
einer API zu einer anderen zu konvertieren. Das ist also dann nützlich,
wenn man mit der Deprecation und dem darauffolgenden Entfernen von
API-Versionen konfrontiert ist.
Anwendung von kubectl convert:
Konvertierung von Ressourcendefinitionen: Benutzer können ihre Ressourcendefinitionsdateien (z.B. YAML oder JSON) von einer veralteten API-Version zu einer unterstützten Version konvertieren.
In-Place-Updates: Es ermöglicht die Konvertierung und das direkte Anwenden von Ressourcenänderungen auf einem laufenden Cluster.
Vereinfachte Migration: Der Befehl unterstützt Entwickler und Administratoren bei der Migration ihrer Ressourcen, indem er manuelle Änderungen an den Ressourcendefinitionen vermeidet.
Funktionsweise:
kubectl convert liest die Ressourcendefinition des
Benutzers, interpretiert die Spezifikation und übersetzt sie in die
Ziel-API-Version.kubectl convertkubectl convert -f ./meine-alte-definition.yaml --output-version v1 --output yaml > meine-neue-definition.yamlDieser Befehl konvertiert die Ressource in der Datei
meine-alte-definition.yaml zur v1 API-Version
und gibt das Ergebnis als YAML aus.
Wichtig zu beachten:
kubectl convert Befehl muss mit den entsprechenden
API-Versionen, die im Cluster verfügbar sind, verwendet werden.kubectl convert setzt voraus, dass
das entsprechende API-Schema im kubectl CLI bekannt ist.Angenommen, die ursprüngliche Datei
meine-alte-definition.yaml sieht wie folgt aus:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: mein-altes-deployment
spec:
replicas: 3
template:
metadata:
labels:
app: meinApp
spec:
containers:
- name: meinApp-container
image: meinApp:1.0Dieses Deployment verwendet die veraltete API-Version
extensions/v1beta1. Um es auf die Version
apps/v1 zu aktualisieren, verwenden Sie den folgenden
kubectl convert Befehl:
kubectl convert -f ./meine-alte-definition.yaml --output-version apps/v1 --output yaml > meine-neue-definition.yamlDer Befehl liest die Datei meine-alte-definition.yaml,
konvertiert sie in die gewünschte API-Version apps/v1 und
speichert das Ergebnis in der Datei
meine-neue-definition.yaml.
Die meine-neue-definition.yaml könnte nach der
Konvertierung so aussehen:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mein-altes-deployment
spec:
replicas: 3
selector:
matchLabels:
app: meinApp
template:
metadata:
labels:
app: meinApp
spec:
containers:
- name: meinApp-container
image: meinApp:1.0Die wesentlichen Änderungen hier sind:
apiVersion hat sich von
extensions/v1beta1 zu apps/v1 geändert.selector Feld wurde hinzugefügt, das erforderlich
ist, um die Pods im Deployment in apps/v1 zu
identifizieren.Bitte beachten Sie, dass zum Zeitpunkt der Verwendung von
kubectl convert das entsprechende API-Schema im kubectl CLI
bekannt sein muss und das Cluster die Ziel-API-Version unterstützen
muss.
kubectl convert selbst veraltet und in zukünftigen
Versionen möglicherweise entfernt oder durch andere Werkzeuge ersetzt
werden kann.kubectl convert informiert zu bleiben.Empfehlungen für Entwickler und Betreiber: