Kubernetes Versiyon Yükseltme
Bu dökümanda, Ubuntu işletim sisteminde Kubernetes uygulamasının 1.26.3 sürümünden 1.27.3 sürümüne yükseltilmesi örnek olarak anlatılmaktadır.
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.
1) Control Plane (Master) Node için Yükseltme
Master(control-plane) olan sunuya geçiş yapınız ve 1-a,b ve c adımlarını uygulayınız.
Yükseltme işlemine başlamadan önce kubeadm, kubelet ve kubectl versiyonlarını aşağıdaki komutlar ile kontrol ediniz.
kubeadm version
kubelet --version
kubectl version --client
1-a) Kubeadm Versiyon yükseltme
Mevcut sürümlerin listesini aşağıdaki komutu kullanarak görüntüleyebilirsiniz.
sudo apt-cache madison kubeadm
Mevcut sürümler yukarıdaki çıktıda v1.26 olarak görüntülenmekte. Versiyon 1.27 deposunu sisteme ekleyiniz.
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.27/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.27/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
Kubeadm için versiyon 1.27.3-1.1 kurulumunu gerçekleştiriniz.
sudo apt-mark unhold kubeadm
sudo apt-get install -y kubeadm=1.27.3-1.1
sudo apt-mark hold kubeadm
Çok Önemli
"FATAL: this version of kubeadm only supports deploying clusters with the control plane version >= 1.x Current version: v1.y"
Benzeri bir hata ile karşılaşırsanız( x>y ) koşulu ile.
Dökümanın başında belirtildiği gibi tek tek sürüm geçişi yapınız. İki veya daha fazla sürüm üstü kurulduysa aşağıdaki uyarıda ki komut ile kubeadm versiyonunu düşürebilirsiniz.
Çok Önemli
Versiyon olarak 1.26 kullanırken 1.25 geçmek isterseniz bu komutu kullanın:
sudo apt-get install -y kubeadm=1.25.3-1.1 --allow-downgrades
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.27 sürümüne upgrade komutu ile Kubeadm'i yükseltiniz.
sudo kubeadm upgrade apply v1.27.3
İşlemin başarılı olduğu belirten mesajı ekranda çıktı olarak görmelisiniz.
Node'u tekrar kullanılabilir hale getiriniz.
kubectl uncordon <MASTER_NODE_NAME>
1-b) Kubelet ve Kubectl Versiyon yükseltme
sudo apt-mark unhold kubelet kubectl
sudo apt-get install -y kubelet=1.27.3-1.1 kubectl=1.27.3-1.1
sudo apt-mark hold kubelet kubectl
1-c) Upgrade İşlem Kontrolü
Kubelet hizmetini yeniden başlatın.
systemctl daemon-reload
systemctl restart kubelet
Master (control-plane) olan node'un versiyonunu görüntülemek için aşağıdaki komutu çalıştırınız.
kubectl get nodes
Versiyon 1.27.3 olarak upgrade işleminin başarılı olduğunu kontrol edin.
2) 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
2-a) Kubeadm Versiyon yükseltme
Worker node'un bulunduğu sunucuya geçiş yapınız ve kubeadm yükseltme işlemini aşağıdaki komutlar ile gerçekleştiriniz.
sudo apt-mark unhold kubeadm
sudo apt-get install -y kubeadm=1.27.3-1.1
sudo apt-mark hold kubeadm
Worker node için yükseltme işlemini gerçekleştiriniz.
sudo kubeadm upgrade node
2-b) Kubelet ve Kubectl Versiyon yükseltme
sudo apt-mark unhold kubelet kubectl
sudo apt-get install -y kubelet=1.27.3-1.1 kubectl=1.27.3-1.1
sudo apt-mark hold kubelet kubectl
2-c) Upgrade İşlem Kontrolü
systemctl daemon-reload
systemctl restart kubelet
Aşağıdaki komutu master(control-plane) olan node'da çalıştırarak node'utekrar kullanıma açınız.
kubectl uncordon <WORKER_NODE_NAME>
Worker node'un versiyonunu görüntülemek için aşağıdaki komutu çalıştırınız.
kubectl get nodes
Versiyon 1.27.3 olarak upgrade işleminin başarılı olduğunu kontrol edin.