Benutzer-Werkzeuge

Webseiten-Werkzeuge


it-wiki:kubernetes:cluster_upgrade

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
it-wiki:kubernetes:cluster_upgrade [2022/11/16 07:30] – [Upgrade Data Plane] markoit-wiki:kubernetes:cluster_upgrade [2024/02/07 07:11] (aktuell) – [Upgrade Worker Node] marko
Zeile 19: Zeile 19:
 === Den Master1 „drainen“ === === Den Master1 „drainen“ ===
 Damit der Master1 ein Versions-Upgrade (oder auch Downgrade) erhalten kann, muss er Damit der Master1 ein Versions-Upgrade (oder auch Downgrade) erhalten kann, muss er
-zunächst mit ''kubectl drain'' von seiner Workload befreit und aus dem Scheduler ge- +zunächst mit ''kubectl drain'' von seiner Workload befreit und aus dem Scheduler genommen werden. Zwar laufen in der Control Plane keine Workloads im typischen Sinne
-nommen werden. Zwar laufen in der Control Plane keine Workloads im typischen Sinne+
 wie auf den Workern, jedoch beispielsweise der ''coredns''-Pod: wie auf den Workern, jedoch beispielsweise der ''coredns''-Pod:
 <code bash> <code bash>
-$ kubectl get pods -n kube-system -o wide --field-selector+$ kubectl get pods -n kube-system -o wide --field-selector spec.nodeName=master1
 </code> </code>
-^NAME ^READY ^STATUS ^RESTARTS ^AGE|+^NAME ^READY ^STATUS ^RESTARTS ^AGE
 |calico-node-vdm6g|1/1|Running|1|105d| |calico-node-vdm6g|1/1|Running|1|105d|
 |coredns-74ff55c5b-6k7rg|1/1|Running|0|24h| |coredns-74ff55c5b-6k7rg|1/1|Running|0|24h|
Zeile 55: Zeile 54:
  
 <code bash>$ kubectl get nodes</code> <code bash>$ kubectl get nodes</code>
-^NAME ^STATUS ^ROLES ^AGE ^VERSION|+^NAME ^STATUS ^ROLES ^AGE ^VERSION
 |master1|Ready,SchedulingDisabled|control-plane,master|106d|v1.19.2| |master1|Ready,SchedulingDisabled|control-plane,master|106d|v1.19.2|
 |master2|Ready|control-plane,master|106d|v1.19.2| |master2|Ready|control-plane,master|106d|v1.19.2|
Zeile 62: Zeile 61:
 |worker2|Ready|<none>|106d|v1.19.2| |worker2|Ready|<none>|106d|v1.19.2|
  
-Die Version bezieht sich hier auf die Version des Kubelets auf den Nodes. Mit der Op- +Die Version bezieht sich hier auf die Version des Kubelets auf den Nodes. Mit der Option ''-o wide'' können Sie sich zusätzlich zu diesen Daten auch Informationen über das 
-tion ''-o wide'' können Sie sich zusätzlich zu diesen Daten auch Informationen über das +Betriebssystem, die Kernel-Version und die verwendete Container Runtime auf den jeweiligen Nodes anzeigen lassen.
-Betriebssystem, die Kernel-Version und die verwendete Container Runtime auf den je- +
-weiligen Nodes anzeigen lassen.+
 Sollte der etcd-Cluster fehlerhaft sein und es kommt bei dem Upgrade zu einem Ausfall Sollte der etcd-Cluster fehlerhaft sein und es kommt bei dem Upgrade zu einem Ausfall
 des Nodes, so kann das Quorum zwischen den etcd-Clustereinheiten nicht ausgeführt des Nodes, so kann das Quorum zwischen den etcd-Clustereinheiten nicht ausgeführt
Zeile 73: Zeile 70:
 <code bash>$ kubectl get pod -n kube-system --selector component=etcd</code> <code bash>$ kubectl get pod -n kube-system --selector component=etcd</code>
  
-^NAME ^READY ^STATUS ^RESTARTS ^AGE|+^NAME ^READY ^STATUS ^RESTARTS ^AGE
 |etcd-master1|1/1|Running|4|29h| |etcd-master1|1/1|Running|4|29h|
 |etcd-master2|1/1|Running|149|100d| |etcd-master2|1/1|Running|149|100d|
Zeile 206: Zeile 203:
  
 Der Node ist nun wieder einsatzbereit und auf die neue Version aktualisiert: Der Node ist nun wieder einsatzbereit und auf die neue Version aktualisiert:
->code bash>+<code bash>
 $ kubectl get nodes $ kubectl get nodes
 </code> </code>
  
-^NAME ^STATUS ^ROLES ^AGE ^VERSION|+^NAME ^STATUS ^ROLES ^AGE ^VERSION
 |master1|Ready|control-plane,master|107d|v1.20.1| |master1|Ready|control-plane,master|107d|v1.20.1|
 |master2|Ready|control-plane,master|107d|v1.19.2| |master2|Ready|control-plane,master|107d|v1.19.2|
Zeile 244: Zeile 241:
 $ kubectl get nodes master2 $ kubectl get nodes master2
 </code> </code>
-^NAME ^STATUS^ ROLES ^AGE ^VERSION|+^NAME ^STATUS^ ROLES ^AGE ^VERSION
 |master2|Ready,SchedulingDisabled|control-plane,master|109d|v1.19.2| |master2|Ready,SchedulingDisabled|control-plane,master|109d|v1.19.2|
  
Zeile 255: Zeile 252:
 </code> </code>
  
-^NAME ^READY ^STATUS ^RESTARTS ^AGE|+^NAME ^READY ^STATUS ^RESTARTS ^AGE
 |etcd-master1|1/1|Running|13|5d1h| |etcd-master1|1/1|Running|13|5d1h|
 |etcd-master2|1/1|Running|158|103d| |etcd-master2|1/1|Running|158|103d|
Zeile 333: Zeile 330:
 $ kubectl get nodes $ kubectl get nodes
 </code> </code>
-^NAME ^STATUS ^ROLES ^AGE ^VERSION|+^NAME ^STATUS ^ROLES ^AGE ^VERSION
 |master1|Ready|control-plane,master|110d|v1.20.1| |master1|Ready|control-plane,master|110d|v1.20.1|
 |master2|Ready|control-plane,master|109d|v1.20.1| |master2|Ready|control-plane,master|109d|v1.20.1|
Zeile 349: Zeile 346:
 ==== Upgrade Worker Node ===== ==== Upgrade Worker Node =====
 === Node drainen === === Node drainen ===
 +Führen Sie ''kubectl drain'' für den entsprechenden Worker aus:
 +<code bash>
 +$ kubectl drain worker1 --ignore-daemonsets
 +node/worker1 cordoned
 +WARNING: ignoring DaemonSet-managed Pods:
 +    kube-system/calico-node-2s4lv, kube-system/kube-proxy-k54gg
 +evicting pod kube-system/calico-kube-controllers-866f6f96b5-smldm
 +evicting pod kube-system/coredns-74ff55c5b-j8fkn
 +pod/coredns-74ff55c5b-j8fkn evicted
 +pod/calico-kube-controllers-866f6f96b5-smldm evicted
 +node/worker1 evicted
 +</code>
 +
 +=== Upgrade des kubelet ===
 +Das Upgrade des ''kubelet'' wird mit Hilfe des Paketmanagers unter Angabe der genauen
 +Version vorgenommen. Optional können auch die Pakete ''kubeadm'' und ''kubectl'' in der
 +neuen Version installiert werden.
 +Pakete im Paketmanager auf ''unhold'' setzen:
 +<code bash>
 +$ sudo apt-mark unhold kubelet kubeadm kubectl
 +Canceled hold on kubelet
 +Canceled hold on kubeadm
 +Canceled hold on kubectl
 +</code>
 +
 +Anschließend werden die neuen Pakete installiert und dann wieder auf ''hold'' gesetzt:
 +<code bash>
 +$ sudo apt-get install kubelet=1.20.1-00 kubectl=1.20.1-00
 +    kubeadm=1.20.1-00
 +$ sudo apt-mark hold kubeadm kubelet kubectl
 +kubeadm set on hold
 +kubelet set on hold
 +kubectl set on hold
 +</code>
 +
 +Nun wird der Node wieder „uncordoned“, sodass auf ihm wieder Workloads platziert
 +werden können:
 +<code bash>
 +$ kubectl uncordon worker1
 +node/worker1 uncordoned
 +</code>
 +
 +Damit ist das Upgrade für den Worker abgeschlossen:
 +<code bash>
 +$ kubectl get nodes worker1
 +</code>
 +^NAME ^STATUS ^ROLES ^AGE ^VERSION
 +|worker1|Ready|<none>|109d|v1.20.1
 +
 +Verfahren Sie für alle weiteren Worker Nodes in Ihrer Data Plane auf dieselbe Weise.
it-wiki/kubernetes/cluster_upgrade.1668583824.txt.gz · Zuletzt geändert: 2022/11/16 07:30 von marko