Skip to content

Latest commit

 

History

History
executable file
·
98 lines (69 loc) · 6.35 KB

1.Giris.md

File metadata and controls

executable file
·
98 lines (69 loc) · 6.35 KB

Zor Yoldan Kubernetes

Merhabalar,

İngilizceden çeviri çok basit cümlelerde bile bazen tam karşılığını bulamayabiliyor. Başlığın aslı Kelsey Hightower'ın "Kubernetes The Hard Way" başlıklı Github'daki yazı dizisinden geliyor. İsterseniz öncelikle duymayanlar için nedir şu "Kubernetes The Hard Way" meselesi ondan bahsedelim.

Basitçe Kelsey Hightower makalesinde Kubernetes'in Controller Plane ve Node (Worker) bileşenlerini herhangi bir deployment aracı (örneğin Kubeadm, Ansible, RKE..vb) kullanmadan kuruyor.

components-of-kubernetes.svg Kaynak: Kubernetes

Pratikde bu tarz bir kurulumun Kubernetes'in yapısını daha iyi anlamamızı sağlıyacağı ve dolayısıyla problem çözme yeteneklerimizi de geliştireceği aşikar. Tabiiki bu becerileri geliştirmenin tek yolu bu değil. Yani pekala kubeadm ve benzeri deployment araçlarıyla yapılan deployment sonrasında da ortamlar incelenerek de bu beceriler kazanılabilir.

Neden zor olduğuna gelecek olursak

  • Önerilen best-practice'lere bakacak olursanız en azından 6 sunucu gerekiyor.
  • Her sunucuya ortalama üç adet araç kurmak gerekiyor.
  • Cluster içindeki bileşenlerin birbirleriyle haberleşmesi TLS ile sağlanıyor.
  • Ekosistemin doğru çalışabilmesi için network problemlerinin yaşanmaması gerekiyor.
  • Ayrıca kurulan bileşenlerin tek tek ve birlikte stabil olarak çalışması gerekiyor.
  • Kurulacak ortama göre kurulum mekanikleri değişiyor (cloud, onprem, multi-region..vb)
  • Normalde sadece bileşenler kurulacak gibi görünmesine rağmen çoğu kez tahmin edilemeyen alt bağımlılıklar da problem çıkartıyor.

Tabii ki mu maddeler arttırılabilir ve alt maddelere de ayrılabilir. Özetlemek gerekirse Kubernetes'i sadece kurmak için değil yöntebilmek de gerekiyor ve yönetmek için de sistem, network ve storage üçlüsü hakkında temel anlamda bilgi sahibi olmak gerekiyor. Birde bu ekosistemin ayakta tutulması, güncellenmesi, güvenliği işin içine girdiğinde bir deployment aracı kullanmadan yönetmeye çalışmak haliyle zor olacaktır.

Bu makale dizisinde alttaki dört lab ortamının kurulumunu da detaylı olarak yapacağız.

  1. Linux üzerinde LXD
  2. Linux üzerinde Vagrant-Libvirt
  3. Linux üzerinde Vagrant-Virtualbox
  4. Linux üzerinde KVM

Eğer Windows ve Mac üzerinde çalışmayı yapacaksanız üçüncü yöntemi yani "Linux üzerinde Vagrant-Virtualbox" ile lab ortamınızı kurmanız gerekiyor. Linux ortamları için herhangi bir yolu tercih edebilirsiniz.

Bu tarz bi kurulumu ilk kez yapacaksanız, sistem ve network bilginiz yeterli değilse büyük ihtimal bir kaç haftalık bir çalışma yapmanız gerekecektir. Bu nedenle kurulumlara başlamadan önce tecrübelerime dayanarak bir iki tavsiye vermek istiyorum.

  • Öncelikle makaleleri kurulum yapmadan bir kez okuyun.
  • Belirli noktalarda makinalarınızın snapshot'ını alın. Bazen bir bileşeni kurmaya çalıştığınızda alacağınız hatanın peşine o kadar çok değişiklik yapıyorsunuz ki kendinize geldiğinizde nerdeydim ben? Şu an ne yapıyorum? gibi bir anı yaşayabilirsiniz. Hemen geri gelebilmek vakit kazandırıcı olabiliyor.
  • Karşılaşabileceğiniz problemlerle ilgili kuruluma başlamadan önce UYARI başlıkları ekledim. Bunları dikkate almanız faydalı olacaktır.
  • Metin işleme aracı örneklerde vim'i göreceksiniz ancak farklı bir editör de kullanabilirsiniz. Sadece şunu söylemek istiyorum eğer Linux'de herhangi bir editörde basit işleri yapmakda zorlanıyorsanız başlamadn önce biraz alıştırma yapın.
  • Karşılaştığınız hataları çözmek için kendinize vakit verin hemen snapshot'dan geri dönmeyin yada pes edip vazgeçmeyin.

Başlık her ne kadar Kubernetes kurulumunu hedef alıyor olsa da, salt Kubernetes kurulumunu anlatmıyor. Bu nedenle farklı teknolojileri (Haproxy, keepalived, vagrant,vb) Kubernetes'den bağımsız olarak da okuyup öğrenebilirsiniz.

Sizden gelecek yorum ve düzeltmelerle kendim de birşeyler öğrenmeyi amaçlıyorum. Umarım okuyan herkes için faydalı olur.

Lab Ortamının Hazırlanması

topoloji.jpg

8 makinadan oluşacak olan Kubernetes cluster'daki makinaların özellikleri şu şekilde:

Bütün makinalar, Ubuntu 21.04 olmak üzere

  • 3 Conroller Node ve 2 Load Balancer: 1 core, 2 GB ram
  • 3 Worker Node: 2 core (1 core da yaspabilirsiniz), 4 GB ram (2 GB da yapabilirsiniz)

Kullanılacak Kubernetes bileşenleri ve versiyonları

  • kubernetes v1.21.0
  • containerd v1.4.4
  • coredns v1.8.3
  • cni v0.9.1
  • etcd v3.4.15

Kubernetes bileşenleri hakkında bilgi için Kubernetes resmi sayfasını ziyaret edebilirsiniz.

Kurulumu yapılacak diğer araçlar

  • HaProxy
  • Keepalived
  • SSH
  • LXD
  • Vagrant
  • KVM-Qemu

Bir sonraki makalemizde farklı ortamlar için lab ortamının kurulumunu yapıyor olcağız. Tekrar hatıralatayım eğer host makinası olarak Windows veya Mac kullanacaksanız "Vagrant Virtualbox ile Lab Ortamı Kurulumu" başlıklı yazıyı takip ediniz.

Lab kurulumları Kubernetes ön koşulu istemediği için ilgili teknojileri tek başına öğrenmek amacıyla da makaleleri okuyabilirsiniz.