Kubernetes Versiyon Yükseltmeleri
Bu dökümanda, mevcut Linux işletim sistemi üzerinde bulunan bir Kubernetes kümesi 1.18 sürümünde ve Docker ile çalışıyor.
Bu kümenin sürümünü 1.18'den 1.30'a yükseltme sürecinde yapılması gerekenler adım adım anlatılmaktadır.
KUBERNETES:
v1.18 → Mevcut versiyon
v1.30 → Hedeflenen versiyon
Gerekli Dosyalar:
v1.18 - v1.30 → Kubectl, kubeadm, kubelet dosyaları
Kubernetes-cni → Kubernetes 1.18 den 1.19 geçerken bir kere kurmak yeterli olacaktır. 1.19 ve üstü versiyonlarda kurulmasına gerek yoktur.
containerd 1.6 → kubernetes 1.24 versiyonuna geçerken containerd kullanımına geçilmeli. Containerd 1.6+ üstü olmalı ve docker kaldırılmalıdır.
Kubernetes için http://fss.apinizer.com/index.php/s/uWP0ewA2sf2rS02 adresinden gerekli dosyaları indirebilirsiniz.
Containerd için http://fss.apinizer.com/index.php/s/TSlg6gWm6Aq4LJy adresinden gerekli dosyayı indirebilirsiniz.
1) Versiyon Yükseltme
Bu adım, "1.18-1.19", "1.20-1.23" ve "1.24-1.30" versiyon yükseltme 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:
Kubeadm, kubelet ve kubectl için paket sabitlemesini kaldıralım.
sudo apt-mark unhold kubeadm kubelet kubectl
fss.apinizer üzerinden indirdiğiniz klasöre gidiniz.
cd 1.19.3
İçerisinde bulunan .deb uzantılı (kubelet,kubectl,kubeadm,kubernetes-cni) dosyalarını çalıştıralım.
sudo dpkg -i *.deb
Ç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.
Paket kurulumu gerçekleşti ve node durumu Ready ise yükseltme işlemi yapılabilir.
#Master (control-plane) için:
#versiyon kısmını her bir sürümde değiştiriniz
sudo kubeadm upgrade apply v1.19.3
#Worker için:
sudo kubeadm upgrade node
1.2) 1.20'den 1.23'e KADAR YÜKSELTME:
1.20-1.23 versiyonları tek tek güncellenir.
cd 1.20.4
sudo dpkg -i *.deb
#Master (control-plane) için:
#versiyon kısmını her bir sürümde değiştiriniz
sudo kubeadm upgrade apply v1.20.4
#Worker için:
sudo kubeadm upgrade node
Containerd Kullanımına Geçiş: Kubernetes 1.24 ve üzeri versiyonlar
Mecvut sistemde containerd yerine docker kullanılıyorsa bu adımda containerd geçişi yapılmalı.
Containerd versiyonu 1.6.x veya üst sürümler olmalıdır.
Not: Mevcutta Containerd kullanılıyorsa "Containerd Geçiş Aşamaları" adımını atlanmalı ve "1.3) 1.24'den 1.30'a yükseltme" adımından devam edilmelidir.
Containerd Geçiş Aşamaları:
Not : Docker kurulu makinelerde gerçekleştiriniz.
Docker durdurulur. Paketleri silinir.
sudo systemctl stop docker.service
sudo systemctl disable docker.service
sudo apt remove docker*
Containerd versiyonu ve kurulu olup olmadığı kontrol edilir.
containerd --version
1.6 ve üzeri bir sürüm kurulu değilse dökümanın başında verilen linkten .deb uzantılı containerd dosyası indirilir.
İndirilen dosyanın bulunduğu dizinde aşağıdaki komutu çalıştırın.
sudo dpkg -i containerd.io*.deb
Kubeadm-flags.env dosyası açılır.
sudo vi /var/lib/kubelet/kubeadm-flags.env
#Alttaki satır varsa silinir
--network-plugin=cni
#Alttaki satır yoksa eklenir
--container-runtime-endpoint=unix:///var/run/containerd/containerd.sock
crictl.yaml dosyasına gerekli satırlar eklenir.
sudo tee /etc/crictl.yaml <<EOF
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
EOF
Son ayarlar yapılır ve containerd başlatılır.
sudo mkdir -p /etc/containerd
sudo containerd config default | sudo tee /etc/containerd/config.toml
sudo sed -i 's/SystemdCgroup = false/SystemdCgroup = true/g' /etc/containerd/config.toml
# Restart containerd
sudo systemctl restart containerd
sudo systemctl enable containerd
systemctl status containerd
1.3) 1.24'den 1.30'a KADAR YÜKSELTME:
1.24-1.30 versiyonları tek tek güncellenir.
cd 1.24.3
sudo dpkg -i *.deb
#Master (control-plane) için:
#versiyon kısmını her bir sürümde değiştiriniz
sudo kubeadm upgrade apply v1.24.3
#Worker için:
sudo kubeadm upgrade node
Küme Durumu Kontrolü:
Aşağıdaki komutlar ile yeni küme bilgilerinizi görebilirsiniz.
kubectl cluster-info
kubectl get node -o wide