☸️ Kubernetes – Giriş
Kubernetes Nedir? 🤔
Kubernetes, 🐳 konteynerleştirilmiş uygulamaların otomatikleştirilmiş şekilde dağıtımını, ölçeklendirilmesini ve yönetimini sağlayan açık kaynak kodlu bir platformdur. Google tarafından geliştirilen Kubernetes, daha sonra Cloud Native Computing Foundation’a (CNCF) bağışlanmıştır ve konteyner tabanlı altyapıların yönetimini oldukça kolay hale getirmeyi amaçlamaktadır. Bu platform, uygulamaların ihtiyaç duyduğu kaynakları daha verimli kullanarak işletim maliyetlerini 💰 düşürmeye yardımcı olur ve geliştiricilerin uygulamaların dağıtım sürecini hızlı 🚀 ve güvenilir bir şekilde yönetmesine olanak tanır. Kubernetes, özellikle mikro hizmet mimarileri 🏗️ gibi kompleks sistemlerde konteynerlerin bir arada düzenli çalışmasını sağlar ve her türlü ortamda çalışabilmesiyle esneklik sunar.
Kubernetes Nasıl Çalışır? 🔄
Kubernetes, “Cluster” adı verilen bir yapı içerisinde birden fazla sunucu 🖥️ (genellikle düğümler olarak adlandırılır) kullanarak çalışır. Cluster, bir veya daha fazla “Master” ve “Worker” düğümünden oluşur. Master düğüm, Kubernetes’in yönetim bileşenlerini ve kontrol düzlemini içerir. Worker düğümleri ise uygulamaların çalıştığı konteynerleri barındıran düğümlerdir. Kubernetes cluster, çalışan uygulamaların yüklerini dengeleyip yedeklilik sağlayarak performans ve dayanıklılık sunar.
Cluster içerisindeki her ana düğüm, pod adı verilen ve konteynerleri içeren yapıları barındırır. Pod’lar, Kubernetes’teki en küçük dağıtım birimidir ve genellikle tek bir uygulama veya uygulamanın bir bileşenini barındırmak için kullanılır. Kubernetes’in ana kontrol bileşeni olan “Master” bileşeni, bu pod’ların dağıtımı ve yönetiminden sorumludur. Kubernetes ayrıca ağ 🌐 yönetimi, depolama entegrasyonu 🗄️ ve otomatik ölçeklendirme 📈 gibi görevleri de yerine getirerek altyapının sürekli ve kararlı bir şekilde çalışmasını sağlar. Kaynakların optimize edilmesi, iş yükünün dengelenmesi ⚖️ ve uygulamaların ölçeklendirilmesi gibi işlerin otomatikleştirilmesi sayesinde geliştiricilerin ve DevOps ekiplerinin çok daha verimli çalışmasına yardımcı olur.
Kubernetes Neden Kullanılır? 🤷♂️
Kubernetes, konteynerleştirilmiş uygulamaları kolayca yönetme, ölçeklendirme ve dağıtma ihtiyacından doğan bir çözümdür. Şu avantajları sunar:
- Otomatikleştirme 🤖: Kubernetes, uygulamaların dağıtımı, ölçeklendirilmesi ve iyileştirilmesi gibi işleri otomatik olarak yönetir. Bu sayede manuel müdahaleleri en aza indirir ve uygulama yönetim sürecini hızlandırır.
- Dayanıklılık 💪: Kubernetes, arıza tespiti yaparak konteynerleri otomatik olarak yeniden oluşturur. Bu, uygulamaların kesintisiz bir şekilde çalışmasını sağlar ve kullanıcı deneyimini iyileştirir. Ayrıca Kubernetes, aşırı yüklenme durumlarında daha fazla pod oluşturarak performansın düşmesini önler.
- Yük Dağıtımı ve Ölçekleme ⚖️📊: Kubernetes, iş yükü yüksek olan uygulamaları otomatik olarak daha fazla pod ile destekler ve yük dengelemesi sağlar. Dinamik ölçeklendirme sayesinde, kaynak kullanımı optimize edilir ve maliyetler düşürülür. Bu özellik, yoğun trafik altında bile uygulamanın tutarlı performans göstermesine olanak tanır.
- Platform Bağımsızlığı 🌐: Kubernetes, farklı bulut ☁️ sağlayıcıları ve yerel veri merkezleri üzerinde aynı yapılandırma ile çalışabilir. Bu sayede hibrit ve çoklu bulut çözümleri için idealdir.
Kubernetes ve Docker Arasındaki Fark Nedir? 🆚
Kubernetes ve Docker, konteynerleştirme dünyasında sıkça birlikte kullanılan ancak farklı ama tamamlayıcı rolleri olan iki teknolojidir. Docker, uygulamaları paketlemek ve çalıştırmak için kullanılan bir konteyner teknolojisidir. Docker, geliştiricilerin uygulamaları konteynerler içinde izole bir şekilde paketlemesine ve dağıtmasına olanak tanır. Kubernetes ise bu Docker konteynerlerini yönetmek, ölçeklendirmek ve yük dengelemek için kullanılan bir orkestrasyon aracıdır.
🐳 Docker konteynerleri kendi başına da çalıştırılabilirken, Kubernetes bu konteynerlerin çok sayıda sunucu ve ortamda yönetilmesini sağlar. Docker Swarm gibi Docker’ın kendi orkestrasyon aracı da vardır ancak Kubernetes, daha esnek ve güçlü olduğu için daha yaygın olarak kullanılır. Kubernetes, gelişmiş iş yükü yönetimi, otomatik ölçeklendirme ve yedeklilik özellikleri sunarak Docker’dan daha geniş bir işlevsellik sağlar. Bu sayede geliştiriciler, büyük ölçekli ve karmaşık uygulamaları yönetirken daha güvenilir bir altyapıya sahip olur.
Kubernetes Cluster Nasıl Oluşturulur? 🛠️
Kubernetes Cluster oluşturmak için birden fazla sunucu (veya sanal makine) kullanılır. Cluster oluşturma süreci birkaç temel adımdan oluşur ve bu adımlar genel olarak şu şekildedir:
- Master ve Worker Düğümlerinin Hazırlanması 🖥️: Kubernetes cluster, bir master (kontrol uç) ve bir veya birden fazla çalışan (worker) düğümden oluşur. Master düğüm, cluster’ın yönetiminden ve iş yüklerinin dağıtılmasından sorumludur. Worker düğümleri ise uygulamaların pod’larını barındırır.
- Kubernetes Kurulumu ⚙️: Kubernetes kurulumu için farklı yöntemler kullanılır. Kubeadm, Minikube veya Kubernetes’in bulut sağlayıcıları üzerindeki hazır servisleri kullanarak Kubernetes kurulumu gerçekleştirilir. Minikube, Kubernetes’i yerel olarak öğrenmek ve test etmek için kullanışlı bir araçtır, kubeadm ise prodüksiyon ortamlarında daha yaygın olarak kullanılır.
- Cluster’a Katılma 🤝: Worker düğümleri, master düğüme bağlanarak cluster’a katılır. Bu işlem, worker düğümlerinin master düğümle senkronize çalışmasını ve iş yüklerinin dağıtılmasını sağlar. “kubectl” adı verilen komut satırı aracı kullanılarak cluster’ın yönetimi yapılır ve bu araç sayesinde pod’ların oluşturulması, silinmesi ve izlenmesi gibi işlemler gerçekleştirilebilir.
Bu süreçte, Kubernetes’in esnekliği sayesinde farklı konfigürasyonlar oluşturulabilir ve uygulamaların güvenilir ve sürdürülebilir bir şekilde çalıştırılması sağlanır. Ayrıca, otomatik ölçeklendirme ve kendi kendini iyileştirme özellikleri sayesinde cluster, iş yüküne bağlı olarak kendini adapte edebilir ve hizmetlerin kesintisiz çalışmasını sağlar.
Kubernetes Pod Nedir? 📦
Pod, Kubernetes’te konteynerlerin en küçük birimidir ve bir veya daha fazla konteyneri içerebilir. Pod’lar aynı IP adresini ve depolama alanını paylaşır ve bu nedenle birlikte çalışmaları gereken konteynerlerin bir arada yer aldığı bir yapı olarak düşünülebilir. Pod’lar, uygulamaların çalışma ortamını oluşturur ve ağ ve depolama gibi kaynakları paylaşarak konteynerlerin daha verimli bir şekilde çalışmasını sağlar.
Kubernetes, pod’ları yöneterek uygulamaların kesintisiz çalışmasını garanti eder. Bir pod arıza yaptığında Kubernetes bu pod’u yeniden oluşturur veya yeni bir pod çalıştırır. Bu sayede uygulamanın çalışma süresi maksimize edilir ve kullanıcılar olası kesintilerden etkilenmez. Pod’lar kısa ömürlüdür; gerektiğinde yeniden oluşturulur ve Kubernetes tarafından gerektiği gibi yönetilir.
Kubernetes Deployment Nedir? 📑
Deployment, Kubernetes’te pod’ların yönetimi için kullanılan bir kaynaktır. Deployment sayesinde pod’ların nasıl çalışacağı, kaç adet pod olacağı ve bu pod’ların özellikleri belirlenir. Deployment, aynı zamanda pod’ların ölçeklendirilmesi ve güncellenmesi gibi işlemleri de kolay bir şekilde yapmayı sağlar. Bir uygulamanın yeni bir sürümü yayınlandığında, Kubernetes deployment’ı kullanarak bu sürümü sorunsuz bir şekilde güncelleyebilir ve eski sürümlerle ilgili herhangi bir kesinti yaşamadan yeni sürümü devreye alabilirsiniz.
Ayrıca, Deployment sayesinde birden fazla pod’un sürekli olarak belirli bir sayıda çalışması sağlanır ve pod’lar arıza yaparsa otomatik olarak yeniden oluşturulur. Bu, uygulamaların sürekli olarak erişilebilir olmasını ve herhangi bir aksaklık durumunda otomatik toparlanmasını sağlar. Deployment’lar, sürekli entegrasyon ve dağıtım süreçlerinin (CI/CD) bir parçası olarak da kullanılır ve bu sayede geliştirme ekipleri yeni özellikleri hızlı ve güvenli bir şekilde dağıtabilir.


