Hi,
Entschuldigung, dass ich es in der falschen Reihenfolge gemacht habe, wie hier erwähnt: https://github.com/kubernetes/kubernetes/blob/master/CONTRIBUTING.md#contributing -a-patch
Ich habe #22439 gemacht, um dieses Problem zu lösen (auf kubectl-Seite)
Die Notwendigkeit besteht darin, einen Daemon-Satz in einer einzigen Befehlszeile aktualisieren zu können.
Grundsätzlich ist es gleichbedeutend mit:
kubectl delete -f dsfile --cascade=false
kubectl create -f dsfile
for pod in pods
kubectl delete pod
wait for delete
BEARBEITEN :
Wenn Sie eine clientseitige Lösung beitragen möchten, obwohl dies nicht die langfristige Richtung ist, die wir im Auge haben (#12143), sollte kein neuer Befehl eingeführt werden. Stattdessen sollten wir dafür sorgen, dass kubectl rolling-update
für DaemonSet (und auch ReplicaSet, wenn Sie so geneigt sind) funktioniert.
https://github.com/kubernetes/kubernetes/blob/master/pkg/kubectl/cmd/rollingupdate.go
Da rolling-update
den Ressourcentyp ( replicationcontroller
) nicht angibt, müssen wir standardmäßig rc
annehmen. Abgesehen davon denke ich, dass die Syntax natürlich auf andere Controllertypen erweiterbar ist, indem die Typ/Name-Syntax verwendet wird.
Zum Beispiel:
kubectl rolling-update daemonset/mydaemon --image=image:v2
Abgesehen vom Befehl selbst würde ich jedoch nicht erwarten, dass der Aktualisierungsvorgang Code teilt.
Der aktuelle Rolling-Update-Befehl erstellt einen neuen ReplicationController und skaliert ihn nach und nach hoch, während der alte herunterskaliert wird. Im Fall von --image
führt es am Ende einen "Löschtanz" durch, um den Namen wieder in das ursprüngliche RC zu ändern - es löscht das Original, erstellt ein weiteres RC mit demselben Namen und löscht dann der temporäre RC, der zum Ausrollen des neuen Images verwendet wurde.
Im Fall von DaemonSet würde kubectl das Gegenteil tun: Es würde das ursprüngliche DaemonSet aktualisieren und Pods nacheinander löschen, um sie zu ersetzen. Wenn --image
angegeben würde, würde dies nur am Ende erfolgen. Wenn ein neuer DaemonSet-Name angegeben wurde (zB kubectl rolling-update daemonset/mydaemon-v1 -f mydaemon-v2.yaml
), würde das neue DaemonSet am Ende des Aktualisierungsprozesses erstellt und das Original gelöscht. Wir müssen entweder sicherstellen, dass DaemonSet dies ordnungsgemäß behandelt, oder wir müssen das ursprüngliche DaemonSet löschen, bevor wir das neue erstellen (ähnlich meinem Vorschlag in #7402).
cc @mikedanese @davidopp @madhusudancs @janetkuo @kargakis @pwittrock @gmarek
1.6 enthält fortlaufende Upgrades für DaemonSets.
Danke für das Update! 👍
Hilfreichster Kommentar
1.6 enthält fortlaufende Upgrades für DaemonSets.