Kubernetes Sürüm Yükseltme
Kubernetes sürümünü yükseltirken, mevcut ve hedef sürümler arasındaki her bir küçük sürümün (örneğin, 1.25'ten 1.26'ya, sonra 1.26'dan 1.27'ye vb.) ardışık olarak yükseltilmesi gerekmektedir.
Kubernetes: v1.18 → Mevcut versiyon, v1.30 → Hedeflenen versiyon
Gerekli Dosyalar
v1.18 - v1.30 → Kubectl, kubeadm, kubelet dosyaları
Kubernetes 1.18'den 1.19'e geçerken bir kere kurmak yeterlidir. 1.19 ve üstü versiyonlarda kurulmasına gerek yoktur.
Kubernetes 1.24 versiyonuna geçerken containerd kullanımına geçilmeli. Containerd 1.6+ üstü olmalı ve docker kaldırılmalıdır.
Versiyon Yükseltme
Versiyon yükseltme işlemi "1.18-1.19", "1.20-1.23" ve "1.24-1.30" bölümlerinden oluşmaktadır. Her bir bölümde, versiyon yükseltme süreci ve olası hataların çözümleri ele alınmaktadır.
1.1) 1.18'ten 1.19'a yükseltme
Çok Önemli
1.18'den 1.19'a geçişte olası flannel sorunu çıkabilmekte. Aşağıdaki komut ile node durumunu kontrol ediniz.
kubectl get nodes
Node durumu NotReady ise aşağıdaki komut ile ilgili sunucudaki loglara bakınız.
journalctl -xeu kubelet
Çözüm yolu: Herhangi bir (master veya worker) sunucu üzerinden flannel dosyasını, yükseltme yaptığınız sunucuya scp komutu ile dosyayı taşımak.
scp /opt/cni/bin/flannel <USERNAME>@<NODE_IP>:/opt/cni/bin
Node durumunu kontrol ettiğinizde "READY" olduğunu görmelisiniz.
Control Plane (Master) Node için Yükseltme
Master(control-plane) olan sunucuya geçiş yapınız ve aşağıdaki adımları uygulayınız.
Yükseltme işlemine başlamadan önce kubeadm, kubelet ve kubectl versiyonlarını kontrol edin:
kubeadm version
kubelet --version
kubectl version --client
Kubeadm için paket sabitlemesini kaldırın:
sudo apt-mark unhold kubeadm
fss.apinizer.com adresi üzerinden indirdiğiniz dosyayı çıkarttığınız klasöre gidin:
cd 1.19.3
İçerisinde bulunan .deb uzantılı kubeadm dosyasını yükleyin:
sudo dpkg -i kubeadm_1.19.3-00_amd64.deb
sudo apt-mark hold kubeadm
Aşağıdaki drain komutu, belirtilen bir Kubernetes node'unu bakım durumuna alır ve podları diğer node'lara aktarır. Master (control-plane) node'unuza alternatif bir master node'a sahip değilseniz bu komut sistem kesintisine sebep olacaktır. Tek node'a sahip cluster'lar için bu işlemi uygulamayabilirsiniz.
kubectl drain <MASTER_NODE_NAME> --ignore-daemonsets
Kurulumu gerçekleştirilen v1.19.3 sürümüne upgrade komutu ile Kubeadm'i yükseltin:
# Master (control-plane) için:
# versiyon kısmını her bir sürümde değiştiriniz
sudo kubeadm upgrade apply v1.19.3
İşlemin başarılı olduğunu belirten mesajı ekranda çıktı olarak görmelisiniz.
kubectl uncordon <MASTER_NODE_NAME>
sudo apt-mark unhold kubelet kubectl
sudo dpkg -i kubelet_1.19.3-00_amd64.deb
sudo dpkg -i kubectl_1.19.3-00_amd64.deb
sudo apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
Master (control-plane) olan node'un versiyonunu görüntülemek için:
kubectl get nodes
Versiyon olarak upgrade işleminin başarılı olduğunu kontrol edin.
Worker Node için Yükseltme
Worker node'un versiyon yükseltmesi de benzer adımlarla gerçekleştirilir.
Aşağıdaki drain komutu, belirtilen bir Kubernetes node'unu bakım durumuna alır ve podları diğer node'lara aktarır. Worker node'unuza alternatif bir node'a sahip değilseniz bu komut sistem kesintisine sebep olacaktır. Tek worker node'a sahip cluster'lar için bu işlemi uygulamayabilirsiniz.
Komut master(control-plane) sunucusunda çalıştırılır ve worker node için bakım ve pod boşaltma işlemini başlatır.
kubectl drain <WORKER_NODE_NAME> --ignore-daemonsets
Worker node'un bulunduğu sunucuya geçiş yapılır ve kubeadm yükseltme işlemi gerçekleştirilir.
fss.apinizer.com adresi üzerinden indirdiğiniz dosyayı çıkarttığınız klasöre gidin:
sudo apt-mark unhold kubeadm
sudo dpkg -i kubeadm_1.19.3-00_amd64.deb
sudo apt-mark hold kubeadm
sudo kubeadm upgrade node
sudo apt-mark unhold kubelet kubectl
sudo dpkg -i kubelet_1.19.3-00_amd64.deb
sudo dpkg -i kubectl_1.19.3-00_amd64.deb
sudo apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet
Aşağıdaki komutu master(control-plane) olan node'da çalıştırarak node'u tekrar kullanıma açınız:
kubectl uncordon <WORKER_NODE_NAME>
Worker node'un versiyonunu görüntülemek için:
kubectl get nodes
1.2) 1.20'den 1.23'e Yükseltme
1.20-1.23 versiyonları tek tek güncellenir. Her bir versiyon için yukarıdaki adımlar tekrarlanır.
1.3) 1.24'ten 1.30'a Yükseltme
Çok Önemli
Kubernetes 1.24 versiyonuna geçerken Docker yerine Containerd kullanımına geçilmeli. Containerd 1.6+ üstü olmalı ve docker kaldırılmalıdır.
1.24-1.30 versiyonları tek tek güncellenir. Her bir versiyon için yukarıdaki adımlar tekrarlanır. Ancak 1.24'e geçerken containerd kurulumu yapılmalıdır.
Containerd Kurulumu (Kubernetes 1.24 için)
Kubernetes 1.24 versiyonuna geçerken Docker yerine Containerd kullanımına geçilmelidir.
Containerd kurulumu için gerekli dosyayı indirebilirsiniz.
Containerd kurulumu ve Docker'dan geçiş işlemleri için ilgili dokümantasyon sayfalarına bakınız.