Kubernetes Cluster Nasıl Güncellenir?
Kubernetes cluster güncellemesi, yeni özelliklerin eklenmesi, hataların düzeltilmesi ve güvenlik yamalarının uygulanması gibi nedenlerle gerekebilir. Kubernetes kümenizi güncellemek için aşağıdaki adımları sırasıyla izleyebilirsiniz.
Bu yazımızda Kubernetes cluster nasıl güncellenir gösterebilmek için örnek bir cluster'ı 1.22'den 1.23'e yükselteceğiz. Öncesindesizde hızlı, basit ve temiz bir Kubernetes ortamı kurulumu için şu makaleye başvurabilirsiniz.
Güncelleme işlemine başlamadan önce şu iki uyarıyı dikkate almalısınız:
- Kubernetes güncelleme işlemi workload'ları değil, yalnızca Kubernetes ile ilgili bileşenleri etkiler. Ancak öncesinde veritabanında yer alanlar gibi önemli verilerinizi yedeklemeniz önemlidir.
- Sunucuda swap devre dışı bırakılmalıdır.
Hazırlıklar tamamlandıktan sonra başlayabiliriz.
1. Master Node Upgrade
İlk olarak master node'u drain etmemiz gerekiyor. Drain işlemi, bir node üzerinde çalışan tüm pod'ları başka node'lara dağıtarak ve node'un etkinliğini durdurarak node'u boşaltır.
kubectl drain
komutunu kullanırken, Kubernetes kümesi, ayrılmak üzere olan pod'ları başka node'lara dağıtarak hizmet kesintisi yaşanmamasını sağlamaya çalışır. Bu komutu kullanırken bazı seçenekler belirleyebilirsiniz, örneğin, --ignore-daemonsets
seçeneğiyle DaemonSet pod'ları göz ardı edebilirsiniz.
--ignore-daemonsets
kullanmazsanız Daemonset pod'ları sürekli yeniden node üzerinde oluşturulacağı için drain işlemi tamamlanmayacaktır.Drain işlemi başarıyla tamamlandıktan sonra, SchedulingDisabled olduğundan emin olmak için node'un durumunu kontrol edebilirsiniz.Bu, o node'da hiçbir pod'un oluşturulmayacağı anlamına gelir.
Artık işletim sistemini güncelleyebilirsiniz. Örneğin Ubuntu için aşağıdaki update komutunu kullanabilirsiniz.
Kullanılabilir kubeadm paketleri için paket yöneticisini arayın ve ihtiyacınız olan sürüme ilişkin sonuçları filtrelemek için grep'i kullanın. Bizim senaryomuzda güncelleyeceğimiz versiyon 1.23'tür.
Çıktı aşağıdakine benzer olmalıdır:
Otomatik olarak kurulmalarını, yükseltilmelerini veya kaldırılmalarını önlemek için kubectl
ve kubelet
paketlerini hold
komutu ile işaretlemeliyiz. Bu önlem amaçlı bir adımdır.
kubeadm
paketini ise unhold
ile serbest bıraktıktan sonra yükseltin ve tekrar hold
komutu ile işaretleyin.
Güncellendiğinden emin olmak için kubeadm versiyonunu kontrol edin.

Diğer hangi bileşenlerin yükseltilmesi gerektiğini görmek için kubeadm upgrade plan
komutunun çıktısını kontrol edin.

Şimdi plan komutunu çalıştırın ve başarıyla tamamlandığından emin olun.

Son olarak kubectl ve kubelet bileşenlerini güncelleyelim.
Ardından servisleri yeniden başlatın.
Tüm bileşenlerin güncellendiğinden emin olmak için tekrar plan komutuna bakabilirsiniz.

Node versiyonlarını tekrar kontrol ettiğimizde yeni versiyonu göreceğiz.
SchedulingDisabled durumunu kaldırmak için uncordon
komutunu göndermemiz gerekiyor. Çünkü drain
komutu aynı zamanda cordon
komutunu da otomatik olarak uygular.
kubectl cordon
komutu, bir Kubernetes node'unu geçici olarak korumaya alır. Bu komut kullanıldığında, Kubernetes control plane, belirtilen node'a yeni pod'lar yerleştirmez.Master node ile yapacağımız işlemler tamamlandı. Artık worker node'a geçebiliriz.
1. Worker Node Upgrade
Benzer bir şekilde yine drain işlemi ile başlıyoruz. Ekstra olarak --force
parametresi ile drain işlemini kesinleştirebilirsiniz.
Package manager ve ardından kubeadm
'i güncelleyelim.
Sırada kubectl
ve kubelet
güncellemesi var.
kubectl
ve kubelet
servislerini yeniden başlatalım.
Versiyon kontrolü için node listesine göz attığımızda yeni versiyonu görmeliyiz.
Son olarak worker node'u da uncordon komutuyla aktif hale getirebilirsiniz.
Sıradaki yazı ile eğitim serisine devam edebilirsiniz.