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
CODE

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
CODE


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
CODE


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
CODE

Ç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 
CODE

Kurulumu gerçekleştirilen v1.27 sürümüne upgrade komutu ile Kubeadm'i yükseltiniz.

sudo kubeadm upgrade apply v1.27.3
CODE

İş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>
CODE

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
CODE


1-c) Upgrade İşlem Kontrolü

Kubelet hizmetini yeniden başlatın.

systemctl daemon-reload
systemctl restart kubelet
CODE

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
CODE

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
CODE


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
CODE

Worker node için yükseltme işlemini gerçekleştiriniz.

sudo kubeadm upgrade node
CODE


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
CODE


2-c) Upgrade İşlem Kontrolü

systemctl daemon-reload
systemctl restart kubelet
CODE

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> 
CODE

Worker node'un versiyonunu görüntülemek için aşağıdaki komutu çalıştırınız.

kubectl get nodes
CODE

Versiyon 1.27.3 olarak upgrade işleminin başarılı olduğunu kontrol edin.