{"id":34048,"date":"2025-11-10T11:01:25","date_gmt":"2025-11-10T08:01:25","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/"},"modified":"2025-11-10T11:01:25","modified_gmt":"2025-11-10T08:01:25","slug":"vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/","title":{"rendered":"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu"},"content":{"rendered":"<p><body><\/p>\n<p>Da\u011f\u0131t\u0131k sistemlerin gelece\u011fi Kubernetes ile karma\u015f\u0131k uygulamalar\u0131 y\u00f6netmek art\u0131k daha kolay! Vagrant kullanarak kendi yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, sanal ortamda g\u00fc\u00e7l\u00fc bir geli\u015ftirme altyap\u0131s\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacak.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn h\u0131zla de\u011fi\u015fen teknoloji d\u00fcnyas\u0131nda, uygulamalar\u0131n esnek, \u00f6l\u00e7eklenebilir ve g\u00fcvenilir olmas\u0131 her zamankinden daha kritik. Mikroservis mimarileri ve konteynerle\u015fme, bu gereksinimleri kar\u015f\u0131lamak i\u00e7in standart haline gelmi\u015f durumda. \u0130\u015fte tam bu noktada, konteynerle\u015ftirilmi\u015f i\u015f y\u00fcklerini otomatize etmek, da\u011f\u0131tmak ve y\u00f6netmek i\u00e7in tasarlanm\u0131\u015f a\u00e7\u0131k kaynakl\u0131 bir sistem olan Kubernetes devreye giriyor. Ancak Kubernetes&#8217;i ger\u00e7ek bir ortamda denemek, \u00f6\u011frenmek veya geli\u015ftirmek \u00e7o\u011fu zaman zorlu ve kaynak yo\u011fun bir s\u00fcre\u00e7 olabilir. Bulut sa\u011flay\u0131c\u0131lar\u0131 \u00fczerinde bir k\u00fcme kurmak maliyetli olabilirken, yerel bir ortamda \u00e7ok d\u00fc\u011f\u00fcml\u00fc bir k\u00fcme olu\u015fturmak da karma\u015f\u0131k a\u011f ve sanalla\u015ft\u0131rma bilgisi gerektirebilir. Peki, bu zorluklar\u0131 a\u015farak, hem uygun maliyetli hem de pratik bir \u015fekilde kendi \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi nas\u0131l kurabilirsiniz?<\/p>\n<p>Bu makale, bu sorunun cevab\u0131n\u0131 Vagrant ile veriyor. Vagrant, sanal makine ortamlar\u0131n\u0131 kolayca olu\u015fturman\u0131z\u0131 ve y\u00f6netmenizi sa\u011flayan bir ara\u00e7t\u0131r. Geli\u015ftiricilerin &#8220;makinemde \u00e7al\u0131\u015f\u0131yor&#8221; sorununu ortadan kald\u0131rmay\u0131 hedefler ve her ekip \u00fcyesi i\u00e7in ayn\u0131 geli\u015ftirme ortam\u0131n\u0131 garantiler. Vagrant&#8217;\u0131n g\u00fcc\u00fcn\u00fc Kubernetes ile birle\u015ftirdi\u011fimizde, kendi yerel makinenizde ger\u00e7ek bir \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmesi sim\u00fcle edebiliriz. Bu, yaln\u0131zca bir e\u011fitim arac\u0131 olmakla kalmaz, ayn\u0131 zamanda \u00fcretim ortam\u0131na deploy edece\u011finiz uygulamalar\u0131 yerel olarak test etmenizi, CI\/CD pipeline&#8217;lar\u0131n\u0131 geli\u015ftirmenizi ve da\u011f\u0131t\u0131k sistem mimarilerini derinlemesine anlaman\u0131z\u0131 sa\u011flayan paha bi\u00e7ilmez bir geli\u015ftirme ortam\u0131 sunar.<\/p>\n<p>\u00d6zellikle DevOps m\u00fchendisleri, yaz\u0131l\u0131m geli\u015ftiriciler ve sistem y\u00f6neticileri i\u00e7in, bu kurulum y\u00f6ntemi bir\u00e7ok avantaj sa\u011flar. \u00d6ncelikle, bulut tabanl\u0131 bir k\u00fcme kullanman\u0131n getirdi\u011fi maliyetlerden ka\u00e7\u0131nm\u0131\u015f olursunuz. \u0130kinci olarak, internet ba\u011flant\u0131s\u0131na ba\u011f\u0131ml\u0131 kalmadan istedi\u011finiz zaman ve istedi\u011finiz yerde k\u00fcmenizle \u00e7al\u0131\u015fabilirsiniz. \u00dc\u00e7\u00fcnc\u00fcs\u00fc, \u00fcretim ortam\u0131na benzer bir ortamda uygulama geli\u015ftirme ve test etme imkan\u0131, potansiyel sorunlar\u0131 erken a\u015famada tespit etmenize yard\u0131mc\u0131 olur. Bu rehberde, ad\u0131m ad\u0131m ilerleyerek, Vagrant ve VirtualBox kullanarak temel bir Kubernetes k\u00fcmesinin nas\u0131l olu\u015fturulaca\u011f\u0131n\u0131, yap\u0131land\u0131r\u0131laca\u011f\u0131n\u0131 ve y\u00f6netilece\u011fini \u00f6\u011freneceksiniz. Haz\u0131rsan\u0131z, konteyner orkestrasyonunun b\u00fcy\u00fcl\u00fc d\u00fcnyas\u0131na Vagrant ile birlikte dalal\u0131m!<\/p>\n<h2 id=\"temel-kavramlar\">Temel Kavramlara Giri\u015f: Vagrant ve Kubernetes Nedir?<\/h2>\n<p>Ba\u015flamadan \u00f6nce, bu rehberde kullanaca\u011f\u0131m\u0131z iki ana teknoloji olan Vagrant ve Kubernetes&#8217;in temel prensiplerini anlamak \u00f6nemlidir. Bu bilgiler, yapaca\u011f\u0131m\u0131z ad\u0131mlar\u0131n ard\u0131ndaki mant\u0131\u011f\u0131 kavraman\u0131za yard\u0131mc\u0131 olacak ve olas\u0131 sorun giderme s\u00fcre\u00e7lerinde size yol g\u00f6sterecektir.<\/p>\n<h3>Vagrant Nedir ve Neden Kullan\u0131l\u0131r?<\/h3>\n<p>Vagrant, HashiCorp taraf\u0131ndan geli\u015ftirilen, sanal ortamlar\u0131 tek tip bir i\u015f ak\u0131\u015f\u0131yla olu\u015fturmak ve y\u00f6netmek i\u00e7in kullan\u0131lan bir a\u00e7\u0131k kaynakl\u0131 ara\u00e7t\u0131r. Temel amac\u0131, geli\u015ftiricilerin farkl\u0131 i\u015fletim sistemleri ve altyap\u0131lar aras\u0131nda tutarl\u0131 geli\u015ftirme ortamlar\u0131 kurmas\u0131n\u0131 sa\u011flamakt\u0131r. Vagrant, VirtualBox, VMWare, Hyper-V gibi \u00e7e\u015fitli sanalla\u015ft\u0131rma sa\u011flay\u0131c\u0131lar\u0131yla entegre olabilir. Biz bu rehberde \u00fccretsiz ve a\u00e7\u0131k kaynakl\u0131 olmas\u0131 nedeniyle VirtualBox&#8217;\u0131 kullanaca\u011f\u0131z.<\/p>\n<p>Vagrant&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 temel faydalar \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>Tutarl\u0131l\u0131k:<\/strong> Ekip \u00fcyeleri aras\u0131nda ayn\u0131 geli\u015ftirme ortam\u0131n\u0131n kullan\u0131lmas\u0131n\u0131 sa\u011flar, &#8220;benim makinemde \u00e7al\u0131\u015f\u0131yor&#8221; sorununu ortadan kald\u0131r\u0131r.<\/li>\n<li><strong>Kolayl\u0131k:<\/strong> Bir Vagrantfile kullanarak sanal makineleri (VM&#8217;leri) kolayca tan\u0131mlar ve tek bir komutla (<code>vagrant up<\/code>) ba\u015flat\u0131r.<\/li>\n<li><strong>Ta\u015f\u0131nabilirlik:<\/strong> Olu\u015fturulan sanal ortamlar, Vagrantfile sayesinde farkl\u0131 makinelerde kolayca yeniden \u00fcretilebilir.<\/li>\n<li><strong>Otomasyon:<\/strong> Sanal makine kurulumunu, paket y\u00fcklemeyi, a\u011f yap\u0131land\u0131rmas\u0131n\u0131 ve di\u011fer sistem ayarlar\u0131n\u0131 otomatikle\u015ftirir.<\/li>\n<\/ul>\n<p>\u00d6zetle, Vagrant, karma\u015f\u0131k altyap\u0131 senaryolar\u0131n\u0131, \u00f6rne\u011fin \u00e7ok d\u00fc\u011f\u00fcml\u00fc bir Kubernetes k\u00fcmesini, yerel makinenizde kolayca sim\u00fcle etmenizi sa\u011flayan g\u00fc\u00e7l\u00fc bir otomasyon arac\u0131d\u0131r.<\/p>\n<h3>Kubernetes Nedir ve Temel Bile\u015fenleri Nelerdir?<\/h3>\n<p>Kubernetes (genellikle K8s olarak k\u0131salt\u0131l\u0131r), Google taraf\u0131ndan geli\u015ftirilen ve \u015fu anda Cloud Native Computing Foundation (CNCF) taraf\u0131ndan s\u00fcrd\u00fcr\u00fclen a\u00e7\u0131k kaynakl\u0131 bir konteyner orkestrasyon platformudur. Amac\u0131, konteynerle\u015ftirilmi\u015f uygulamalar\u0131n da\u011f\u0131t\u0131m\u0131n\u0131, \u00f6l\u00e7eklendirilmesini ve y\u00f6netimini otomatikle\u015ftirmektir. Docker gibi konteyner teknolojileriyle birlikte \u00e7al\u0131\u015farak, uygulamalar\u0131n\u0131z\u0131 farkl\u0131 ortamlar aras\u0131nda ta\u015f\u0131nabilir hale getirir.<\/p>\n<p>Bir Kubernetes k\u00fcmesi, uygulaman\u0131z\u0131 \u00e7al\u0131\u015ft\u0131ran bir grup d\u00fc\u011f\u00fcmden (makineden) olu\u015fur. Bu d\u00fc\u011f\u00fcmler iki ana kategoriye ayr\u0131l\u0131r:<\/p>\n<ol>\n<li><strong>Kontrol D\u00fczlemi (Control Plane \/ Master Node):<\/strong> K\u00fcmenin beynidir. T\u00fcm kararlar\u0131 al\u0131r ve k\u00fcmenin durumunu y\u00f6netir. Temel bile\u015fenleri:\n<ul>\n<li><strong>kube-apiserver:<\/strong> Kubernetes API&#8217;sini ortaya \u00e7\u0131kar\u0131r. K\u00fcme ile etkile\u015fim kurmak i\u00e7in ana aray\u00fczd\u00fcr.<\/li>\n<li><strong>etcd:<\/strong> K\u00fcme verilerinin depoland\u0131\u011f\u0131, y\u00fcksek d\u00fczeyde kullan\u0131labilir bir anahtar-de\u011fer deposudur.<\/li>\n<li><strong>kube-scheduler:<\/strong> Yeni olu\u015fturulan Pod&#8217;lar\u0131 hangi d\u00fc\u011f\u00fcmlere yerle\u015ftirece\u011fine karar verir.<\/li>\n<li><strong>kube-controller-manager:<\/strong> \u00c7e\u015fitli kontrol\u00f6rleri \u00e7al\u0131\u015ft\u0131r\u0131r (\u00f6rne\u011fin, d\u00fc\u011f\u00fcm kontrol\u00f6r\u00fc, \u00e7o\u011faltma kontrol\u00f6r\u00fc).<\/li>\n<\/ul>\n<\/li>\n<li><strong>\u00c7al\u0131\u015fan D\u00fc\u011f\u00fcmler (Worker Nodes):<\/strong> Kontrol d\u00fczlemi taraf\u0131ndan atanan g\u00f6revleri \u00e7al\u0131\u015ft\u0131ran makinelerdir. Her \u00e7al\u0131\u015fan d\u00fc\u011f\u00fcmde \u015fu bile\u015fenler bulunur:\n<ul>\n<li><strong>kubelet:<\/strong> Her d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015fan bir arac\u0131d\u0131r. Kontrol d\u00fczleminden gelen talimatlar\u0131 al\u0131r ve konteynerleri \u00e7al\u0131\u015ft\u0131r\u0131r, Pod&#8217;lar\u0131n durumunu denetler.<\/li>\n<li><strong>kube-proxy:<\/strong> K\u00fcme i\u00e7indeki a\u011f kurallar\u0131n\u0131 y\u00f6netir ve Pod&#8217;lara a\u011f proxy&#8217;si sa\u011flar.<\/li>\n<li><strong>Konteyner \u00c7al\u0131\u015fma Zaman\u0131 (Container Runtime):<\/strong> Konteynerleri \u00e7al\u0131\u015ft\u0131ran yaz\u0131l\u0131m (\u00f6rne\u011fin Docker, containerd, CRI-O).<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Bu bile\u015fenlerin uyumlu \u00e7al\u0131\u015fmas\u0131 sayesinde Kubernetes, uygulamalar\u0131n\u0131z\u0131n y\u00fcksek oranda kullan\u0131labilir, \u00f6l\u00e7eklenebilir ve y\u00f6netilebilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2 id=\"on-hazirlik\">\u00d6n Haz\u0131rl\u0131k: Sistem Gereksinimleri ve Kurulum Ad\u0131mlar\u0131<\/h2>\n<p>\u00c7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmemizi Vagrant ile kurmaya ba\u015flamadan \u00f6nce, yerel geli\u015ftirme ortam\u0131m\u0131z\u0131n haz\u0131r oldu\u011fundan emin olmal\u0131y\u0131z. Bu b\u00f6l\u00fcm, gerekli yaz\u0131l\u0131mlar\u0131n kurulumu ve sistem gereksinimleri hakk\u0131nda bilgi verecektir. Ba\u015far\u0131l\u0131 bir kurulum i\u00e7in bu ad\u0131mlar\u0131 dikkatlice takip etmek \u00f6nemlidir.<\/p>\n<h3>Gerekli Yaz\u0131l\u0131mlar ve Sistem Gereksinimleri<\/h3>\n<p>Bu rehber i\u00e7in a\u015fa\u011f\u0131daki yaz\u0131l\u0131mlara ihtiyac\u0131m\u0131z olacak:<\/p>\n<ol>\n<li><strong>\u0130\u015fletim Sistemi:<\/strong> Linux (Ubuntu, Fedora, CentOS), macOS veya Windows. Bu makaledeki ad\u0131mlar genel olarak platformdan ba\u011f\u0131ms\u0131z olsa da, shell komutlar\u0131 Linux\/macOS ortamlar\u0131na daha uygun olacakt\u0131r. Windows kullan\u0131c\u0131lar\u0131 WSL2 (Windows Subsystem for Linux 2) ile benzer bir deneyim elde edebilir.<\/li>\n<li><strong>VirtualBox:<\/strong> Sanal makineleri bar\u0131nd\u0131rmak i\u00e7in bir sanalla\u015ft\u0131rma yaz\u0131l\u0131m\u0131d\u0131r. \u00dccretsiz ve a\u00e7\u0131k kaynakl\u0131d\u0131r.<\/li>\n<li><strong>Vagrant:<\/strong> Sanal makineleri otomatik olarak yap\u0131land\u0131rmak i\u00e7in kulland\u0131\u011f\u0131m\u0131z ara\u00e7t\u0131r.<\/li>\n<li><strong>Git:<\/strong> Depomuzdaki dosyalar\u0131 kopyalamak i\u00e7in gereklidir (iste\u011fe ba\u011fl\u0131, dosyalar\u0131 manuel indirebilirsiniz).<\/li>\n<li><strong>\u0130nternet Ba\u011flant\u0131s\u0131:<\/strong> Vagrant box&#8217;lar\u0131n\u0131 ve di\u011fer paketleri indirmek i\u00e7in gereklidir.<\/li>\n<\/ol>\n<p><strong>Donan\u0131m Gereksinimleri:<\/strong><\/p>\n<ul>\n<li><strong>RAM:<\/strong> En az 8 GB RAM (16 GB \u00f6nerilir). Her sanal makine i\u00e7in belirli bir miktar RAM ayr\u0131lacakt\u0131r.<\/li>\n<li><strong>CPU:<\/strong> \u00c7ok \u00e7ekirdekli i\u015flemci (en az 2 \u00e7ekirdek, 4+ \u00f6nerilir). Sanal makineler i\u015flemci \u00e7ekirdeklerini payla\u015facakt\u0131r.<\/li>\n<li><strong>Disk Alan\u0131:<\/strong> En az 40 GB bo\u015f disk alan\u0131 (60 GB+ \u00f6nerilir). Sanal diskler ve i\u015fletim sistemi kurulumlar\u0131 i\u00e7in yer gereklidir.<\/li>\n<\/ul>\n<p class=\"expert-tip\">Uzman \u0130pucu: Sistem kaynaklar\u0131 ne kadar y\u00fcksek olursa, Kubernetes k\u00fcmeniz o kadar h\u0131zl\u0131 ve verimli \u00e7al\u0131\u015facakt\u0131r. \u00d6zellikle RAM, VM performans\u0131nda kritik bir rol oynar.<\/p>\n<h3>Kurulum Ad\u0131mlar\u0131:<\/h3>\n<p>\u015eimdi yukar\u0131da bahsedilen yaz\u0131l\u0131mlar\u0131 s\u0131ras\u0131yla kural\u0131m:<\/p>\n<h4>1. VirtualBox Kurulumu<\/h4>\n<p>VirtualBox&#8217;\u0131 <a href=\"https:\/\/www.virtualbox.org\/wiki\/Downloads\" target=\"_blank\" rel=\"noopener\">resmi web sitesinden<\/a> i\u015fletim sisteminize uygun s\u00fcr\u00fcm\u00fcn\u00fc indirerek kurun. Kurulum ad\u0131mlar\u0131 genellikle basittir ve varsay\u0131lan se\u00e7enekleri kabul ederek ilerleyebilirsiniz. Kurulumdan sonra, sisteminizi yeniden ba\u015flatman\u0131z gerekebilir.<\/p>\n<h4>2. Vagrant Kurulumu<\/h4>\n<p>Vagrant&#8217;\u0131 <a href=\"https:\/\/www.vagrantup.com\/downloads\" target=\"_blank\" rel=\"noopener\">resmi web sitesinden<\/a> i\u015fletim sisteminize uygun s\u00fcr\u00fcm\u00fcn\u00fc indirerek kurun. T\u0131pk\u0131 VirtualBox gibi, Vagrant&#8217;\u0131n kurulumu da genellikle bir y\u00fckleyici arac\u0131l\u0131\u011f\u0131yla basit\u00e7e tamamlan\u0131r. Kurulumdan sonra bir terminal a\u00e7\u0131n ve a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131rarak Vagrant&#8217;\u0131n do\u011fru \u015fekilde kuruldu\u011funu do\u011frulay\u0131n:<\/p>\n<pre><code>\nvagrant --version\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, Vagrant'\u0131n kurulu s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6stermelidir. E\u011fer komut bulunamazsa, sisteminizin PATH de\u011fi\u015fkenini kontrol etmeniz veya Vagrant y\u00fckleyicisini tekrar \u00e7al\u0131\u015ft\u0131rman\u0131z gerekebilir.<\/p>\n<h4>3. Git Kurulumu (\u0130ste\u011fe Ba\u011fl\u0131 ama \u00d6nerilir)<\/h4>\n<p>Git, genellikle bir\u00e7ok sistemde zaten y\u00fckl\u00fcd\u00fcr. Y\u00fckl\u00fc olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in:<\/p>\n<pre><code>\ngit --version\n  <\/pre>\n<p><\/code><\/p>\n<p>E\u011fer y\u00fckl\u00fc de\u011filse, i\u015fletim sisteminize g\u00f6re a\u015fa\u011f\u0131daki komutlar\u0131 kullanabilirsiniz:<\/p>\n<ul>\n<li><strong>Ubuntu\/Debian:<\/strong> <code>sudo apt update && sudo apt install git -y<\/code><\/li>\n<li><strong>CentOS\/RHEL:<\/strong> <code>sudo yum install git -y<\/code><\/li>\n<li><strong>macOS:<\/strong> <code>brew install git<\/code> (Homebrew y\u00fckl\u00fc de\u011filse <a href=\"https:\/\/brew.sh\/\" target=\"_blank\" rel=\"noopener\">brew.sh<\/a> adresinden kurun)<\/li>\n<li><strong>Windows:<\/strong> <a href=\"https:\/\/git-scm.com\/download\/win\" target=\"_blank\" rel=\"noopener\">Git for Windows<\/a> adresinden indirin ve kurun.<\/li>\n<\/ul>\n<p>Bu \u00f6n haz\u0131rl\u0131k ad\u0131mlar\u0131n\u0131 tamamlad\u0131ktan sonra, art\u0131k Vagrant ve VirtualBox'\u0131n g\u00fcc\u00fcn\u00fc birle\u015ftirerek kendi \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi olu\u015fturmaya haz\u0131rs\u0131n\u0131z. Bir sonraki b\u00f6l\u00fcmde, Vagrantfile'\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ve k\u00fcme bile\u015fenlerini nas\u0131l kuraca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h2 id=\"vagrant-ile-kume-olusturma\">Uygulamal\u0131 K\u0131s\u0131m: Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Nas\u0131l Kurulur?<\/h2>\n<p>\u015eimdi makalemizin en heyecanl\u0131 k\u0131sm\u0131na geldik: Vagrant ile \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmemizi ad\u0131m ad\u0131m kuraca\u011f\u0131z. Bu b\u00f6l\u00fcmde, bir Vagrantfile'\u0131 nas\u0131l olu\u015fturaca\u011f\u0131m\u0131z\u0131 ve hem master hem de worker d\u00fc\u011f\u00fcmleri i\u00e7in gerekli yap\u0131land\u0131rma betiklerini nas\u0131l yazaca\u011f\u0131m\u0131z\u0131 \u00f6\u011freneceksiniz. Bu kurulumda Ubuntu 20.04 i\u015fletim sistemi tabanl\u0131 sanal makineler kullanaca\u011f\u0131z ve Kubernetes'i <code>kubeadm<\/code> arac\u0131yla bootstrap edece\u011fiz.<\/p>\n<h3>1. \u00c7al\u0131\u015fma Dizini Olu\u015fturma<\/h3>\n<p>\u00d6ncelikle, t\u00fcm proje dosyalar\u0131m\u0131z\u0131 i\u00e7erecek bir dizin olu\u015ftural\u0131m ve bu dizine ge\u00e7i\u015f yapal\u0131m:<\/p>\n<pre><code>\nmkdir kubernetes-vagrant\ncd kubernetes-vagrant\n  <\/pre>\n<p><\/code><\/p>\n<h3>2. Vagrantfile Olu\u015fturma<\/h3>\n<p>Bu dizin i\u00e7inde, Vagrant'\u0131n sanal makinelerimizi nas\u0131l olu\u015fturaca\u011f\u0131n\u0131 ve yap\u0131land\u0131raca\u011f\u0131n\u0131 belirten bir <code>Vagrantfile<\/code> olu\u015fturaca\u011f\u0131z. Bu dosya, k\u00fcmemizin topolojisini, her bir d\u00fc\u011f\u00fcm\u00fcn kaynaklar\u0131n\u0131 (RAM, CPU) ve a\u011f ayarlar\u0131n\u0131 tan\u0131mlayacak. \u0130\u00e7ine a\u015fa\u011f\u0131daki kodu yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\n# -*- mode: ruby -*-\n# vi: set ft=ruby :\n\nVagrant.configure(\"2\") do |config|\n  # Sanal makineler i\u00e7in temel box (Ubuntu 20.04)\n  config.vm.box = \"ubuntu\/focal64\"\n  config.vm.box_check_update = false\n\n  # A\u011f ayarlar\u0131 i\u00e7in \u00f6zel IP aral\u0131\u011f\u0131\n  # \u00d6NEML\u0130: Bu IP'lerin yerel a\u011f\u0131n\u0131zda \u00e7ak\u0131\u015fmad\u0131\u011f\u0131ndan emin olun.\n  private_ip_prefix = \"172.16.16\"\n\n  # Master d\u00fc\u011f\u00fcm tan\u0131m\u0131\n  config.vm.define \"k8s-master\" do |master|\n    master.vm.hostname = \"k8s-master\"\n    master.vm.network \"private_network\", ip: \"#{private_ip_prefix}.100\"\n    master.vm.provider \"virtualbox\" do |vb|\n      vb.memory = \"2048\" # 2 GB RAM\n      vb.cpus = \"2\"    # 2 CPU \u00e7ekirde\u011fi\n    end\n    master.vm.provision \"shell\", path: \"scripts\/master_provision.sh\", privileged: true\n  end\n\n  # Worker d\u00fc\u011f\u00fcmler tan\u0131m\u0131\n  (1..2).each do |i|\n    config.vm.define \"k8s-worker-#{i}\" do |worker|\n      worker.vm.hostname = \"k8s-worker-#{i}\"\n      worker.vm.network \"private_network\", ip: \"#{private_ip_prefix}.10#{i}\"\n      worker.vm.provider \"virtualbox\" do |vb|\n        vb.memory = \"1024\" # 1 GB RAM\n        vb.cpus = \"1\"    # 1 CPU \u00e7ekirde\u011fi\n      end\n      worker.vm.provision \"shell\", path: \"scripts\/worker_provision.sh\", privileged: true\n    end\n  end\n\n  # T\u00fcm sanal makineler i\u00e7in ortak ayarlar\n  config.vm.synced_folder \".\", \"\/vagrant\", disabled: true # Payla\u015f\u0131lan klas\u00f6r\u00fc devre d\u0131\u015f\u0131 b\u0131rak\n  config.ssh.insert_key = false # SSH anahtar\u0131n\u0131n otomatik eklenmesini devre d\u0131\u015f\u0131 b\u0131rak\nend\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu Vagrantfile, bir master ve iki worker d\u00fc\u011f\u00fcm olmak \u00fczere toplam \u00fc\u00e7 sanal makine olu\u015fturacakt\u0131r. Her d\u00fc\u011f\u00fcme statik bir \u00f6zel IP adresi atan\u0131r ve kaynaklar\u0131 (RAM, CPU) belirtilir. Ayr\u0131ca, her d\u00fc\u011f\u00fcm ba\u015flat\u0131ld\u0131\u011f\u0131nda belirli bir provisioning (haz\u0131rl\u0131k) beti\u011fini \u00e7al\u0131\u015ft\u0131r\u0131r.<\/p>\n<h3>3. Provisioning Betikleri Olu\u015fturma<\/h3>\n<p>\u015eimdi, sanal makinelerin i\u00e7ine Kubernetes bile\u015fenlerini kuracak ve yap\u0131land\u0131racak betikleri yazal\u0131m. Bunun i\u00e7in <code>scripts<\/code> ad\u0131nda bir dizin olu\u015ftural\u0131m:<\/p>\n<pre><code>\nmkdir scripts\n  <\/pre>\n<p><\/code><\/p>\n<h4>3.1. Master D\u00fc\u011f\u00fcm Yap\u0131land\u0131rmas\u0131: Kontrol D\u00fczlemini Haz\u0131rlama<\/h4>\n<p><code>scripts\/master_provision.sh<\/code> ad\u0131nda bir dosya olu\u015fturun ve i\u00e7ine a\u015fa\u011f\u0131daki kodu yap\u0131\u015ft\u0131r\u0131n. Bu betik, Kubernetes kontrol d\u00fczlemini (master) kurar, Flannel CNI'yi da\u011f\u0131t\u0131r ve kubeconfig dosyas\u0131n\u0131 haz\u0131rlar.<\/p>\n<pre><code>\n#!\/bin\/bash\n\n# Ortak Kubernetes kurulum ad\u0131mlar\u0131\necho \"Ortak Kubernetes kurulum ad\u0131mlar\u0131 ba\u015flat\u0131l\u0131yor...\"\nsudo apt update -y\nsudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release\n\n# Google Kubernetes GPG anahtar\u0131n\u0131 ekle\ncurl -fsSL https:\/\/packages.cloud.google.com\/apt\/doc\/apt-key.gpg | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/kubernetes-archive-keyring.gpg\n\n# Kubernetes apt deposunu ekle\necho \"deb [signed-by=\/etc\/apt\/keyrings\/kubernetes-archive-keyring.gpg] https:\/\/apt.kubernetes.io\/ kubernetes-xenial main\" | sudo tee \/etc\/apt\/sources.list.d\/kubernetes.list > \/dev\/null\n\nsudo apt update -y\n# Kubernetes bile\u015fenlerini kur (kubelet, kubeadm, kubectl)\nsudo apt install -y kubelet kubeadm kubectl\nsudo apt-mark hold kubelet kubeadm kubectl\n\n# Containerd kurulumu\necho \"Containerd kurulumu ba\u015flat\u0131l\u0131yor...\"\nsudo apt install -y containerd\nsudo mkdir -p \/etc\/containerd\nsudo containerd config default | sudo tee \/etc\/containerd\/config.toml\nsudo sed -i 's\/SystemdCgroup = false\/SystemdCgroup = true\/' \/etc\/containerd\/config.toml\nsudo systemctl restart containerd\nsudo systemctl enable containerd\n\n# Swap'\u0131 kapat\necho \"Swap kapat\u0131l\u0131yor...\"\nsudo swapoff -a\nsudo sed -i '\/ swap \/ s\/^\/#\/' \/etc\/fstab\n\n# Kernel mod\u00fclleri ve sysctl ayarlar\u0131\necho \"Kernel mod\u00fclleri ve sysctl ayarlar\u0131 yap\u0131l\u0131yor...\"\nsudo modprobe overlay\nsudo modprobe br_netfilter\nsudo tee \/etc\/modules-load.d\/containerd.conf <<EOF\noverlay\nbr_netfilter\nEOF\nsudo tee \/etc\/sysctl.d\/kubernetes.conf <<EOF\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1\nEOF\nsudo sysctl --system\n\n# Master d\u00fc\u011f\u00fcm i\u00e7in \u00f6zel ad\u0131mlar\necho \"Master d\u00fc\u011f\u00fcm ba\u015flat\u0131l\u0131yor (kubeadm init)...\"\nsudo kubeadm init --pod-network-cidr=10.244.0.0\/16 --control-plane-endpoint=\"172.16.16.100\" --upload-certs\n\n# Kubeconfig dosyas\u0131n\u0131 normal kullan\u0131c\u0131 i\u00e7in ayarla\necho \"Kubeconfig ayarlan\u0131yor...\"\nmkdir -p $HOME\/.kube\nsudo cp -i \/etc\/kubernetes\/admin.conf $HOME\/.kube\/config\nsudo chown $(id -u):$(id -g) $HOME\/.kube\/config\n\n# Flannel CNI kurulumu\necho \"Flannel CNI da\u011f\u0131t\u0131l\u0131yor...\"\nkubectl apply -f https:\/\/raw.githubusercontent.com\/flannel-io\/flannel\/master\/Documentation\/kube-flannel.yml\n\n# Worker d\u00fc\u011f\u00fcmlerin kat\u0131lmas\u0131 i\u00e7in join komutunu al ve kaydet\necho \"Worker join komutu olu\u015fturuluyor...\"\nkubeadm token create --print-join-command > \/vagrant\/join-command.sh\nchmod +x \/vagrant\/join-command.sh\n\necho \"Kubernetes Master d\u00fc\u011f\u00fcm\u00fc ba\u015far\u0131yla kuruldu ve yap\u0131land\u0131r\u0131ld\u0131!\"\n  <\/pre>\n<p><\/code><\/p>\n<h4>3.2. Worker D\u00fc\u011f\u00fcm Yap\u0131land\u0131rmas\u0131: Uygulamalar\u0131 \u00c7al\u0131\u015ft\u0131rma Katman\u0131<\/h4>\n<p><code>scripts\/worker_provision.sh<\/code> ad\u0131nda bir dosya olu\u015fturun ve i\u00e7ine a\u015fa\u011f\u0131daki kodu yap\u0131\u015ft\u0131r\u0131n. Bu betik, worker d\u00fc\u011f\u00fcmleri Kubernetes k\u00fcmesine kat\u0131lacak \u015fekilde yap\u0131land\u0131r\u0131r.<\/p>\n<pre><code>\n#!\/bin\/bash\n\n# Ortak Kubernetes kurulum ad\u0131mlar\u0131 (Master beti\u011findekiyle ayn\u0131)\necho \"Ortak Kubernetes kurulum ad\u0131mlar\u0131 ba\u015flat\u0131l\u0131yor...\"\nsudo apt update -y\nsudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release\n\ncurl -fsSL https:\/\/packages.cloud.google.com\/apt\/doc\/apt-key.gpg | sudo gpg --dearmor -o \/etc\/apt\/keyrings\/kubernetes-archive-keyring.gpg\n\necho \"deb [signed-by=\/etc\/apt\/keyrings\/kubernetes-archive-keyring.gpg] https:\/\/apt.kubernetes.io\/ kubernetes-xenial main\" | sudo tee \/etc\/apt\/sources.list.d\/kubernetes.list > \/dev\/null\n\nsudo apt update -y\nsudo apt install -y kubelet kubeadm kubectl\nsudo apt-mark hold kubelet kubeadm kubectl\n\necho \"Containerd kurulumu ba\u015flat\u0131l\u0131yor...\"\nsudo apt install -y containerd\nsudo mkdir -p \/etc\/containerd\nsudo containerd config default | sudo tee \/etc\/containerd\/config.toml\nsudo sed -i 's\/SystemdCgroup = false\/SystemdCgroup = true\/' \/etc\/containerd\/config.toml\nsudo systemctl restart containerd\nsudo systemctl enable containerd\n\necho \"Swap kapat\u0131l\u0131yor...\"\nsudo swapoff -a\nsudo sed -i '\/ swap \/ s\/^\/#\/' \/etc\/fstab\n\necho \"Kernel mod\u00fclleri ve sysctl ayarlar\u0131 yap\u0131l\u0131yor...\"\nsudo modprobe overlay\nsudo modprobe br_netfilter\nsudo tee \/etc\/modules-load.d\/containerd.conf <<EOF\noverlay\nbr_netfilter\nEOF\nsudo tee \/etc\/sysctl.d\/kubernetes.conf <<EOF\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward = 1\nEOF\nsudo sysctl --system\n\n# Worker d\u00fc\u011f\u00fcm i\u00e7in \u00f6zel ad\u0131mlar\necho \"Worker d\u00fc\u011f\u00fcm k\u00fcreye kat\u0131l\u0131yor...\"\n# Master d\u00fc\u011f\u00fcmden olu\u015fturulan join komutunu \u00e7al\u0131\u015ft\u0131r\n# Bu komutun \/vagrant dizininde olmas\u0131 gerekir\nuntil [ -f \/vagrant\/join-command.sh ]\ndo\n  echo \"join-command.sh dosyas\u0131 bekleniyor...\"\n  sleep 5\ndone\n\nsudo \/bin\/bash \/vagrant\/join-command.sh\n\necho \"Kubernetes Worker d\u00fc\u011f\u00fcm\u00fc ba\u015far\u0131yla kuruldu ve k\u00fcreye kat\u0131ld\u0131!\"\n  <\/pre>\n<p><\/code><\/p>\n<p class=\"expert-tip\">Uzman \u0130pucu: Provisioning betiklerinde yap\u0131lan t\u00fcm de\u011fi\u015fiklikler, <code>vagrant reload --provision<\/code> komutuyla sanal makinelerinizi yeniden ba\u015flat\u0131p betikleri tekrar \u00e7al\u0131\u015ft\u0131rman\u0131z\u0131 sa\u011flar. Bu, hata ay\u0131klama ve iterasyon i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>4. K\u00fcreyi Ba\u015flatma<\/h3>\n<p>T\u00fcm Vagrantfile ve provisioning betiklerimiz haz\u0131r oldu\u011funa g\u00f6re, art\u0131k tek bir komutla Kubernetes k\u00fcmemizi ba\u015flatabiliriz:<\/p>\n<pre><code>\nvagrant up\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, master ve iki worker d\u00fc\u011f\u00fcm\u00fcn\u00fc VirtualBox \u00fczerinde olu\u015fturacak, Ubuntu i\u015fletim sistemini kuracak ve ard\u0131ndan provisioning betiklerini \u00e7al\u0131\u015ft\u0131racakt\u0131r. Bu i\u015flem, internet ba\u011flant\u0131n\u0131z\u0131n h\u0131z\u0131na ve makinenizin performans\u0131na ba\u011fl\u0131 olarak biraz zaman alabilir (genellikle 15-30 dakika). Komut sat\u0131r\u0131nda ilerlemeyi takip edebilirsiniz.<\/p>\n<p>Kurulum tamamland\u0131\u011f\u0131nda, master d\u00fc\u011f\u00fcmden <code>kubeadm join<\/code> komutunun \u00e7\u0131kt\u0131s\u0131 <code>kubernetes-vagrant<\/code> dizininizin i\u00e7ine <code>join-command.sh<\/code> olarak kaydedilecektir. Worker d\u00fc\u011f\u00fcmler, bu dosyay\u0131 master'dan otomatik olarak al\u0131p k\u00fcreye kat\u0131lmak i\u00e7in kullanacakt\u0131r. T\u00fcm sanal makineler ba\u015flat\u0131l\u0131p yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda, k\u00fcmemiz kullan\u0131ma haz\u0131r hale gelecektir.<\/p>\n<h2 id=\"kume-testi-ve-yonetimi\">K\u00fcme Testi ve Temel Y\u00f6netim: Uygulama Da\u011f\u0131t\u0131m\u0131 ve \u0130zleme<\/h2>\n<p>K\u00fcmemizi Vagrant arac\u0131l\u0131\u011f\u0131yla ba\u015far\u0131yla ba\u015flatt\u0131ktan sonra, her \u015feyin beklendi\u011fi gibi \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak i\u00e7in baz\u0131 temel testler yapmam\u0131z gerekiyor. Bu b\u00f6l\u00fcmde, k\u00fcmemizin durumunu nas\u0131l kontrol edece\u011fimizi, basit bir uygulama da\u011f\u0131tarak nas\u0131l test edece\u011fimizi ve temel Kubernetes y\u00f6netim komutlar\u0131n\u0131 inceleyece\u011fiz.<\/p>\n<h3>1. Kubernetes K\u00fcmesini Kontrol Etme<\/h3>\n<p>\u00d6ncelikle, SSH arac\u0131l\u0131\u011f\u0131yla master d\u00fc\u011f\u00fcme ba\u011flanal\u0131m. Bu, Kubernetes k\u00fcmesiyle etkile\u015fim kurmak i\u00e7in ana yerimiz olacakt\u0131r, \u00e7\u00fcnk\u00fc <code>kubectl<\/code> komutu master d\u00fc\u011f\u00fcmde yap\u0131land\u0131r\u0131lm\u0131\u015ft\u0131r:<\/p>\n<pre><code>\nvagrant ssh k8s-master\n  <\/pre>\n<p><\/code><\/p>\n<p>Master d\u00fc\u011f\u00fcm\u00fcn i\u00e7ine girdikten sonra, k\u00fcmemizin d\u00fc\u011f\u00fcmlerini kontrol edebiliriz:<\/p>\n<pre><code>\nkubectl get nodes\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu komutun \u00e7\u0131kt\u0131s\u0131, master ve iki worker d\u00fc\u011f\u00fcm\u00fcn\u00fcz\u00fc \"Ready\" (Haz\u0131r) durumunda g\u00f6stermelidir. E\u011fer herhangi bir d\u00fc\u011f\u00fcm \"NotReady\" durumundaysa, provisioning betiklerinde bir sorun veya a\u011f yap\u0131land\u0131rmas\u0131nda bir problem olabilir. Genellikle, k\u0131sa bir s\u00fcre beklemek ve komutu tekrar \u00e7al\u0131\u015ft\u0131rmak sorunu \u00e7\u00f6zebilir, \u00e7\u00fcnk\u00fc bile\u015fenlerin tamamen ba\u015flat\u0131lmas\u0131 biraz zaman alabilir.<\/p>\n<pre><code>\nNAME         STATUS   ROLES           AGE     VERSION\nk8s-master   Ready    control-plane   5m      v1.27.3\nk8s-worker-1 Ready    <none>          4m      v1.27.3\nk8s-worker-2 Ready    <none>          4m      v1.27.3\n  <\/pre>\n<p><\/code><\/p>\n<p>Ayr\u0131ca, k\u00fcmenin i\u00e7indeki t\u00fcm pod'lar\u0131n durumunu kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabiliriz:<\/p>\n<pre><code>\nkubectl get pods --all-namespaces\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, sistem pod'lar\u0131n\u0131 (kube-system namespace'inde \u00e7al\u0131\u015fanlar) ve Flannel gibi CNI pod'lar\u0131n\u0131 g\u00f6stermelidir. Hepsinin \"Running\" (\u00c7al\u0131\u015f\u0131yor) durumunda olmas\u0131 gerekir.<\/p>\n<h3>2. Basit Bir Uygulama Da\u011f\u0131t\u0131m\u0131<\/h3>\n<p>K\u00fcmemizin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulad\u0131ktan sonra, \u00fczerine basit bir Nginx web sunucusu da\u011f\u0131tarak tam i\u015flevselli\u011fini test edelim. Nginx da\u011f\u0131t\u0131m\u0131 i\u00e7in bir YAML dosyas\u0131 olu\u015ftural\u0131m. Master d\u00fc\u011f\u00fcmde, <code>nginx-deployment.yaml<\/code> ad\u0131nda bir dosya olu\u015fturun ve i\u00e7ine a\u015fa\u011f\u0131daki i\u00e7eri\u011fi yap\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\n# nginx-deployment.yaml\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: nginx-deployment\n  labels:\n    app: nginx\nspec:\n  replicas: 2\n  selector:\n    matchLabels:\n      app: nginx\n  template:\n    metadata:\n      labels:\n        app: nginx\n    spec:\n      containers:\n      - name: nginx\n        image: nginx:latest\n        ports:\n        - containerPort: 80\n---\napiVersion: v1\nkind: Service\nmetadata:\n  name: nginx-service\nspec:\n  selector:\n    app: nginx\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n  type: NodePort\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu YAML dosyas\u0131, iki adet Nginx pod'u \u00e7al\u0131\u015ft\u0131ran bir Deployment ve bu pod'lar\u0131 d\u0131\u015far\u0131ya a\u00e7an bir NodePort Service tan\u0131mlar. Da\u011f\u0131t\u0131m\u0131 uygulamak i\u00e7in:<\/p>\n<pre><code>\nkubectl apply -f nginx-deployment.yaml\n  <\/pre>\n<p><\/code><\/p>\n<p>Da\u011f\u0131t\u0131m\u0131n durumunu kontrol edelim:<\/p>\n<pre><code>\nkubectl get deployments\nkubectl get pods -o wide\nkubectl get service nginx-service\n  <\/pre>\n<p><\/code><\/p>\n<p><code>kubectl get service nginx-service<\/code> komutunun \u00e7\u0131kt\u0131s\u0131, Nginx servisinin bir NodePort \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6sterecektir. \u00d6rne\u011fin, \u00e7\u0131kt\u0131da <code>NodePort: 3XXXX\/TCP<\/code> gibi bir de\u011fer g\u00f6receksiniz. Bu, Nginx uygulaman\u0131za herhangi bir worker d\u00fc\u011f\u00fcm\u00fcn IP adresi ve bu port numaras\u0131 \u00fczerinden eri\u015febilece\u011finiz anlam\u0131na gelir.<\/p>\n<p>Master d\u00fc\u011f\u00fcmden \u00e7\u0131k\u0131n (<code>exit<\/code> yazarak) ve yerel makinenizden bir worker d\u00fc\u011f\u00fcm\u00fcn IP adresini (\u00f6rne\u011fin, <code>172.16.16.101<\/code>) ve NodePort de\u011ferini kullanarak taray\u0131c\u0131n\u0131zdan veya <code>curl<\/code> ile eri\u015fmeyi deneyin:<\/p>\n<pre><code>\n# Yerel makinenizden (master d\u00fc\u011f\u00fcm\u00fcn d\u0131\u015f\u0131ndan)\ncurl 172.16.16.101:3XXXX # Buradaki 3XXXX, <code>kubectl get service<\/code> \u00e7\u0131kt\u0131s\u0131ndaki NodePort de\u011feridir.\n  <\/pre>\n<p><\/code><\/p>\n<p>E\u011fer Nginx'in varsay\u0131lan \"Welcome to nginx!\" sayfas\u0131n\u0131 g\u00f6r\u00fcyorsan\u0131z, Kubernetes k\u00fcmeniz ba\u015far\u0131yla \u00e7al\u0131\u015f\u0131yor ve uygulamalar\u0131 da\u011f\u0131tabilir durumdas\u0131n\u0131z demektir! Bu, hem geli\u015ftirme hem de \u00f6\u011frenme s\u00fcre\u00e7leriniz i\u00e7in harika bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r.<\/p>\n<h2 id=\"ileri-duzey-ipuclari\">\u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 ve En \u0130yi Uygulamalar: Performans ve Geli\u015ftirme<\/h2>\n<p>Vagrant ile temel bir Kubernetes k\u00fcmesi kurmay\u0131 \u00f6\u011frendik. Ancak, bu kurulumu daha verimli hale getirmek, geli\u015ftirme deneyiminizi zenginle\u015ftirmek ve ger\u00e7ek d\u00fcnya senaryolar\u0131na daha uygun hale getirmek i\u00e7in baz\u0131 ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar mevcuttur. Bu b\u00f6l\u00fcmde, Vagrantfile'\u0131 \u00f6zelle\u015ftirmekten, a\u011f yap\u0131land\u0131rmas\u0131n\u0131 optimize etmeye ve hata ay\u0131klama tekniklerine kadar \u00e7e\u015fitli konular\u0131 ele alaca\u011f\u0131z.<\/p>\n<h3>1. Vagrantfile'\u0131 \u00d6zelle\u015ftirme: Kaynak Optimizasyonu<\/h3>\n<p>Yukar\u0131daki \u00f6rnekte her d\u00fc\u011f\u00fcme belirli miktarda RAM ve CPU atad\u0131k. Ancak, projenizin veya makinenizin ihtiya\u00e7lar\u0131na g\u00f6re bu de\u011ferleri ayarlayabilirsiniz. \u00d6rne\u011fin, daha fazla worker d\u00fc\u011f\u00fcmle \u00e7al\u0131\u015f\u0131yorsan\u0131z veya daha fazla bellek t\u00fcketen uygulamalar \u00e7al\u0131\u015ft\u0131r\u0131yorsan\u0131z, ilgili d\u00fc\u011f\u00fcmlerin kaynaklar\u0131n\u0131 art\u0131rman\u0131z gerekebilir:<\/p>\n<pre><code>\n# Vagrantfile i\u00e7indeki bir \u00f6rnek\nmaster.vm.provider \"virtualbox\" do |vb|\n  vb.memory = \"4096\" # 4 GB RAM\n  vb.cpus = \"4\"    # 4 CPU \u00e7ekirde\u011fi\nend\n\nworker.vm.provider \"virtualbox\" do |vb|\n  vb.memory = \"2048\" # 2 GB RAM\n  vb.cpus = \"2\"    # 2 CPU \u00e7ekirde\u011fi\nend\n  <\/pre>\n<p><\/code><\/p>\n<p class=\"expert-tip\">Uzman \u0130pucu: Sanal makinelere \u00e7ok fazla kaynak atamak, host makinenizin performans\u0131n\u0131 d\u00fc\u015f\u00fcrebilir. Dengeli bir yakla\u015f\u0131m benimseyerek, hem VM'lerin yeterli kayna\u011fa sahip olmas\u0131n\u0131 sa\u011flay\u0131n hem de host makinenizin g\u00fcnl\u00fck g\u00f6revleri i\u00e7in yeterli kayna\u011f\u0131 kalmas\u0131n\u0131 sa\u011flay\u0131n.<\/p>\n<h3>2. A\u011f Yap\u0131land\u0131rmas\u0131 ve Y\u00fck Dengeleme<\/h3>\n<p>Varsay\u0131lan kurulumumuzda, NodePort servisleri ile uygulamalara eri\u015fiyorduk. Ancak \u00fcretim ortamlar\u0131nda genellikle bir LoadBalancer (Y\u00fck Dengeleyici) kullan\u0131l\u0131r. Vagrant ortam\u0131nda ger\u00e7ek bir donan\u0131m y\u00fck dengeleyiciye sahip olmasak da, MetalLB gibi yaz\u0131l\u0131msal y\u00fck dengeleyicilerle Kubernetes servisleri i\u00e7in ger\u00e7ek LoadBalancer tipi IP adresleri edinebiliriz. MetalLB kurulumu, k\u00fcmenizin servislerini daha tutarl\u0131 ve kolay eri\u015filebilir hale getirir.<\/p>\n<pre><code>\n# Master d\u00fc\u011f\u00fcmde SSH ile ba\u011flan\u0131p \u00e7al\u0131\u015ft\u0131r\u0131labilir.\n# MetalLB kurulumu i\u00e7in IP adresi aral\u0131\u011f\u0131n\u0131 kendi \u00f6zel a\u011f\u0131n\u0131za g\u00f6re ayarlay\u0131n\nkubectl apply -f https:\/\/raw.githubusercontent.com\/metallb\/metallb\/main\/config\/manifests\/metallb.yaml\n# Daha sonra bir ConfigMap olu\u015fturarak MetalLB i\u00e7in IP aral\u0131\u011f\u0131n\u0131 belirtmeniz gerekir.\n# \u00d6rne\u011fin:\n# apiVersion: v1\n# kind: ConfigMap\n# metadata:\n#   namespace: metallb-system\n#   name: config\n# data:\n#   config: |\n#     address-pools:\n#     - name: default\n#       protocol: layer2\n#       addresses:\n#       - 172.16.16.200-172.16.16.210 # Vagrant k\u00fcmenizin IP aral\u0131\u011f\u0131na uygun\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu, NodePort yerine LoadBalancer tipi servisler tan\u0131mlaman\u0131za ve bu servislerin belirlenen IP aral\u0131\u011f\u0131ndan bir IP adresi almas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>3. Kal\u0131c\u0131 Depolama (Persistent Storage) \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>Vagrant k\u00fcmeniz \u00fczerinde stateful uygulamalar \u00e7al\u0131\u015ft\u0131rmay\u0131 planl\u0131yorsan\u0131z, kal\u0131c\u0131 depolama \u00e7\u00f6z\u00fcmleri entegre etmeniz gerekecektir. Dinamik depolama sa\u011flamak i\u00e7in NFS veya Longhorn gibi \u00e7\u00f6z\u00fcmler pop\u00fclerdir. \u00d6rne\u011fin, NFS Server'\u0131 master d\u00fc\u011f\u00fcme kurup, worker d\u00fc\u011f\u00fcmlerin NFS istemcisi olarak ba\u011flanmas\u0131n\u0131 sa\u011flayabilir ve Kubernetes i\u00e7inde <code>NFS Provisioner<\/code> kullanarak PersistentVolume'lar\u0131 dinamik olarak sa\u011flayabilirsiniz.<\/p>\n<h3>4. Hata Ay\u0131klama ve Sorun Giderme<\/h3>\n<p>Kurulum veya uygulama da\u011f\u0131t\u0131m\u0131 s\u0131ras\u0131nda sorunlarla kar\u015f\u0131la\u015fmak do\u011fald\u0131r. \u0130\u015fte baz\u0131 hata ay\u0131klama ipu\u00e7lar\u0131:<\/p>\n<ul>\n<li><strong>G\u00fcnl\u00fckleri Kontrol Edin:<\/strong> <code>vagrant ssh k8s-master<\/code> komutuyla master d\u00fc\u011f\u00fcme ba\u011flan\u0131n ve <code>sudo journalctl -u kubelet<\/code> veya <code>sudo journalctl -u containerd<\/code> komutlar\u0131yla ilgili servislerin g\u00fcnl\u00fcklerini kontrol edin.<\/li>\n<li><strong>Kubernetes Olaylar\u0131:<\/strong> <code>kubectl get events --all-namespaces<\/code> komutu, k\u00fcme i\u00e7indeki olaylar\u0131 listeler ve sorunlar\u0131n kayna\u011f\u0131n\u0131 anlaman\u0131za yard\u0131mc\u0131 olabilir.<\/li>\n<li><strong>Pod A\u00e7\u0131klamalar\u0131:<\/strong> Bir pod sorun ya\u015f\u0131yorsa, <code>kubectl describe pod <pod-ad\u0131><\/code> komutuyla detayl\u0131 bilgilere (olaylar, konteyner durumlar\u0131) ula\u015fabilirsiniz.<\/li>\n<li><strong>A\u011f Ba\u011flant\u0131s\u0131:<\/strong> D\u00fc\u011f\u00fcmler aras\u0131 a\u011f ba\u011flant\u0131s\u0131n\u0131 <code>ping<\/code> veya <code>curl<\/code> ile test edin. G\u00fcvenlik duvar\u0131 (ufw) ayarlar\u0131n\u0131n kapal\u0131 veya do\u011fru yap\u0131land\u0131r\u0131lm\u0131\u015f oldu\u011fundan emin olun.<\/li>\n<\/ul>\n<h3>5. Mobil Uyumlu HTML Geli\u015ftirme Notu<\/h3>\n<p>Her ne kadar bu makale sunumu sadece <code><body><\/code> i\u00e7eri\u011fi sa\u011flasa da, genel olarak web tabanl\u0131 Kubernetes dashboard'lar\u0131 veya kendi geli\u015ftirdi\u011finiz y\u00f6netim aray\u00fczleri i\u00e7in mobil uyumluluk \u00f6nemlidir. CSS media query'ler, farkl\u0131 ekran boyutlar\u0131na ve cihazlara g\u00f6re aray\u00fcz\u00fcn\u00fcz\u00fc adapte etmenizi sa\u011flar. \u0130\u015fte temel bir media query \u00f6rne\u011fi:<\/p>\n<pre><code>\n<style>\n  \/* Varsay\u0131lan stil (geni\u015f ekranlar i\u00e7in) *\/\n  .container {\n    width: 960px;\n    margin: 0 auto;\n  }\n\n  \/* Mobil cihazlar i\u00e7in medya sorgusu *\/\n  @media only screen and (max-width: 768px) {\n    .container {\n      width: 100%;\n      padding: 0 15px;\n    }\n    .sidebar {\n      display: none; \/* Mobil'de kenar \u00e7ubu\u011funu gizle *\/\n    }\n  }\n<\/style>\n  <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnek, 768 pikselden k\u00fc\u00e7\u00fck ekranlarda farkl\u0131 stil kurallar\u0131 uygulayarak mobil cihazlara uyum sa\u011flar. Bu t\u00fcr yakla\u015f\u0131mlar, Kubernetes'i y\u00f6netmek veya izlemek i\u00e7in geli\u015ftirece\u011finiz aray\u00fczlerin kullan\u0131labilirli\u011fini art\u0131r\u0131r.<\/p>\n<p>Bu ileri d\u00fczey ipu\u00e7lar\u0131 ve en iyi uygulamalar, Vagrant ile kurdu\u011funuz Kubernetes k\u00fcmesini sadece bir \u00f6\u011frenme arac\u0131 olmaktan \u00e7\u0131kar\u0131p, daha sa\u011flam ve ger\u00e7ek\u00e7i bir geli\u015ftirme ortam\u0131 haline getirmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2 id=\"gercek-dunya-senaryolari\">Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Kubernetes'in G\u00fcc\u00fcn\u00fc Ke\u015ffedin<\/h2>\n<p>Vagrant ile olu\u015fturdu\u011fumuz bu yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmesi, sadece bir e\u011fitim arac\u0131 olman\u0131n \u00f6tesinde, bir\u00e7ok ger\u00e7ek d\u00fcnya senaryosunda b\u00fcy\u00fck de\u011fer sunar. Geli\u015ftiriciler, DevOps ekipleri ve hatta k\u00fc\u00e7\u00fck i\u015fletmeler i\u00e7in maliyet etkin ve esnek bir \u00e7\u00f6z\u00fcm sa\u011flayabilir. \u0130\u015fte bu t\u00fcr bir kurulumun kullan\u0131labilece\u011fi baz\u0131 pratik vaka analizleri:<\/p>\n<h3>1. Mikroservis Geli\u015ftirme ve Test Ortam\u0131<\/h3>\n<p><strong>Vaka Analizi:<\/strong> Bir yaz\u0131l\u0131m geli\u015ftirme ekibi, b\u00fcy\u00fck bir monolitik uygulamay\u0131 mikroservislere d\u00f6n\u00fc\u015ft\u00fcrmeye karar verdi. Her mikroservis kendi konteynerinde \u00e7al\u0131\u015f\u0131yor ve ba\u011f\u0131ms\u0131z olarak geli\u015ftirilip da\u011f\u0131t\u0131l\u0131yor. Ekip \u00fcyelerinin her birinin, yerel makinelerinde bu mikroservis mimarisini tamamen sim\u00fcle edebilmesi gerekiyor. Geli\u015ftiriciler, kendi bilgisayarlar\u0131nda \u00e7al\u0131\u015fan mini bir Kubernetes k\u00fcmesinde, yazd\u0131klar\u0131 her mikroservisi di\u011ferleriyle entegre bir \u015fekilde test etmek istiyor.<\/p>\n<p><strong>Vagrant ve Kubernetes \u00c7\u00f6z\u00fcm\u00fc:<\/strong> Vagrant ile kurulan \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmesi, her geli\u015ftiricinin diz\u00fcst\u00fc bilgisayar\u0131nda tam te\u015fekk\u00fcll\u00fc bir mikroservis ortam\u0131 sa\u011flar. Geli\u015ftiriciler, kendi Vagrantfile'lar\u0131n\u0131 kullanarak k\u00fcmenin boyutunu (\u00f6rne\u011fin 1 master, 2 worker) ve kaynaklar\u0131n\u0131 ayarlayabilirler. Uygulamalar\u0131n Kubernetes'e nas\u0131l da\u011f\u0131t\u0131laca\u011f\u0131n\u0131, servis ke\u015ffini ve a\u011f politikas\u0131n\u0131 yerel olarak test edebilirler. Bu sayede, \"benim makinemde \u00e7al\u0131\u015f\u0131yor ama sunucuda \u00e7al\u0131\u015fm\u0131yor\" gibi sorunlar minimuma iner ve geli\u015ftirme d\u00f6ng\u00fcs\u00fc h\u0131zlan\u0131r. Ayr\u0131ca, bu yerel k\u00fcmede olas\u0131 konfig\u00fcrasyon de\u011fi\u015fikliklerinin \u00fcretim ortam\u0131na etkileri de \u00f6nceden g\u00f6zlemlenebilir.<\/p>\n<h3>2. CI\/CD Pipeline Geli\u015ftirme ve Yerel Do\u011frulama<\/h3>\n<p><strong>Vaka Analizi:<\/strong> Bir DevOps ekibi, konteynerle\u015ftirilmi\u015f uygulamalar\u0131n otomatik derlenmesi, test edilmesi ve Kubernetes k\u00fcmesine da\u011f\u0131t\u0131lmas\u0131 i\u00e7in karma\u015f\u0131k bir CI\/CD (S\u00fcrekli Entegrasyon\/S\u00fcrekli Da\u011f\u0131t\u0131m) pipeline'\u0131 geli\u015ftiriyor. Pipeline'\u0131n her a\u015famas\u0131n\u0131n (\u00f6rne\u011fin, test \u00e7al\u0131\u015ft\u0131rmas\u0131, da\u011f\u0131t\u0131m manifestlerinin do\u011frulanmas\u0131) bir Kubernetes k\u00fcmesi \u00fczerinde test edilmesi gerekiyor. Ancak, her test i\u00e7in bulut tabanl\u0131 bir k\u00fcme kullanmak hem maliyetli hem de zaman al\u0131c\u0131.<\/p>\n<p><strong>Vagrant ve Kubernetes \u00c7\u00f6z\u00fcm\u00fc:<\/strong> Vagrant k\u00fcmesi, CI\/CD pipeline'\u0131n\u0131n yerel olarak geli\u015ftirilmesi ve do\u011frulanmas\u0131 i\u00e7in m\u00fckemmel bir platform sunar. DevOps m\u00fchendisleri, geli\u015ftirdikleri pipeline ad\u0131mlar\u0131n\u0131 (\u00f6rne\u011fin Jenkins, GitLab CI veya Argo CD'deki ad\u0131mlar) yerel Kubernetes k\u00fcmesinde \u00e7al\u0131\u015ft\u0131rabilirler. Bu, da\u011f\u0131t\u0131m manifestlerinin (YAML dosyalar\u0131), Helm grafiklerinin veya Kustomize yap\u0131land\u0131rmalar\u0131n\u0131n do\u011frulu\u011funu h\u0131zl\u0131ca kontrol etmelerini sa\u011flar. Ayr\u0131ca, pipeline'\u0131n bir hatayla kar\u015f\u0131la\u015ft\u0131\u011f\u0131nda hata ay\u0131klama s\u00fcrecini de basitle\u015ftirir, \u00e7\u00fcnk\u00fc t\u00fcm ortam yerel makinede kontrol edilebilir durumdad\u0131r. Bu y\u00f6ntemle, \u00fcretim ortam\u0131na \u00e7\u0131kmadan \u00f6nce pipeline'\u0131n kararl\u0131l\u0131\u011f\u0131 ve do\u011frulu\u011fu b\u00fcy\u00fck \u00f6l\u00e7\u00fcde art\u0131r\u0131l\u0131r.<\/p>\n<h3>3. E\u011fitim ve Sandbox Ortamlar\u0131<\/h3>\n<p><strong>Vaka Analizi:<\/strong> Bir \u00fcniversite veya kurum, \u00f6\u011frencilerine ve kat\u0131l\u0131mc\u0131lar\u0131na Kubernetes'i \u00f6\u011fretmek istiyor. Her \u00f6\u011frencinin bireysel olarak bir Kubernetes k\u00fcmesi \u00fczerinde pratik yapabilmesi gerekiyor, ancak herkesin bulut ortam\u0131na eri\u015fimi veya yeterli b\u00fct\u00e7esi olmayabilir. Ayn\u0131 zamanda, karma\u015f\u0131k bir kurulum s\u00fcreciyle zaman kaybetmek istemiyorlar.<\/p>\n<p><strong>Vagrant ve Kubernetes \u00c7\u00f6z\u00fcm\u00fc:<\/strong> Vagrantfile sayesinde, her \u00f6\u011frenci veya kat\u0131l\u0131mc\u0131 kendi bilgisayar\u0131nda, tek bir <code>vagrant up<\/code> komutuyla tamamen i\u015flevsel bir Kubernetes k\u00fcmesi kurabilir. Bu, Kubernetes kavramlar\u0131n\u0131 (Pod'lar, Deployments, Services, Ingress, Persistent Volumes vb.) uygulamal\u0131 olarak \u00f6\u011frenmek i\u00e7in ideal bir sandbox ortam\u0131 sa\u011flar. \u00d6\u011frenciler, k\u00fcme bile\u015fenlerini kendileri yap\u0131land\u0131rabilir, uygulamalar\u0131 da\u011f\u0131tabilir ve hatta k\u00fcme ar\u0131zalar\u0131n\u0131 sim\u00fcle ederek sorun giderme becerilerini geli\u015ftirebilirler. Bu yakla\u015f\u0131m, hem maliyet etkin hem de herkes i\u00e7in eri\u015filebilir bir \u00f6\u011frenme deneyimi sunar, \u00e7\u00fcnk\u00fc t\u00fcm ba\u011f\u0131ml\u0131l\u0131klar ve yap\u0131land\u0131rma Vagrantfile i\u00e7inde kaps\u00fcllenmi\u015ftir.<\/p>\n<p>Bu senaryolar, Vagrant ile kurulan yerel Kubernetes k\u00fcmesinin ne kadar \u00e7ok y\u00f6nl\u00fc ve g\u00fc\u00e7l\u00fc olabilece\u011fini g\u00f6stermektedir. Geli\u015ftiriciden e\u011fitmene kadar geni\u015f bir yelpazede kullan\u0131c\u0131lara pratik \u00e7\u00f6z\u00fcmler sunar.<\/p>\n<h2 id=\"sonuc\">Sonu\u00e7 ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>Bu makale boyunca, Vagrant ve VirtualBox kullanarak kendi yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 detayl\u0131 bir \u015fekilde inceledik. Modern yaz\u0131l\u0131m geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7lerinin temelini olu\u015fturan konteyner orkestrasyonunun ne kadar \u00f6nemli oldu\u011funu ve bu karma\u015f\u0131k teknolojiyi yerel bir ortamda kolayca nas\u0131l sim\u00fcle edebilece\u011fimizi ke\u015ffettik. Vagrantfile'\u0131n g\u00fcc\u00fcn\u00fc, provisioning betiklerinin otomasyon yeteneklerini ve Kubernetes'in temel bile\u015fenlerini ad\u0131m ad\u0131m ele ald\u0131k.<\/p>\n<p>\u00d6ncelikle, neden kendi Kubernetes k\u00fcmenizi olu\u015fturman\u0131z gerekti\u011fini, Vagrant ve Kubernetes'in temel kavramlar\u0131n\u0131 ve \u00f6n haz\u0131rl\u0131k ad\u0131mlar\u0131n\u0131 \u00f6\u011frendik. Ard\u0131ndan, bir master ve iki worker d\u00fc\u011f\u00fcmden olu\u015fan bir k\u00fcme i\u00e7in Vagrantfile'\u0131 ve gerekli shell betiklerini yazd\u0131k. Bu betikler arac\u0131l\u0131\u011f\u0131yla Kubernetes kontrol d\u00fczlemini ba\u015flatt\u0131k, worker d\u00fc\u011f\u00fcmlerini k\u00fcreye dahil ettik ve Flannel CNI'y\u0131 da\u011f\u0131tt\u0131k. Son olarak, k\u00fcmemizin sa\u011fl\u0131kl\u0131 \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 basit bir Nginx uygulamas\u0131 da\u011f\u0131tarak do\u011frulad\u0131k ve ilerleyen a\u015famalarda i\u015finize yarayacak ileri d\u00fczey ipu\u00e7lar\u0131 ve ger\u00e7ek d\u00fcnya senaryolar\u0131n\u0131 tart\u0131\u015ft\u0131k. Bu rehber sayesinde, art\u0131k kendi makinelerinizde g\u00fc\u00e7l\u00fc bir geli\u015ftirme, test ve \u00f6\u011frenme ortam\u0131na sahipsiniz.<\/p>\n<p>Bu kurulum, \u00f6zellikle geli\u015ftirme ve test s\u00fcre\u00e7lerinde b\u00fcy\u00fck avantajlar sunar. Geli\u015ftiricilerin \u00fcretim ortam\u0131na benzer bir ortamda \u00e7al\u0131\u015fmas\u0131na olanak tan\u0131rken, DevOps ekiplerinin CI\/CD pipeline'lar\u0131n\u0131 g\u00fcvenle geli\u015ftirmesine yard\u0131mc\u0131 olur. Kubernetes'e yeni ba\u015flayanlar i\u00e7in ise paha bi\u00e7ilmez bir \u00f6\u011frenme sandbox'\u0131 g\u00f6revi g\u00f6r\u00fcr. Unutmay\u0131n, bu sadece bir ba\u015flang\u0131\u00e7. Kubernetes'in sundu\u011fu olanaklar \u00e7ok geni\u015ftir ve bu yerel k\u00fcme, bu olanaklar\u0131 ke\u015ffetmek i\u00e7in sa\u011flam bir temel sa\u011flayacakt\u0131r. Vagrant'\u0131n sundu\u011fu otomasyon ve tutarl\u0131l\u0131k, Kubernetes \u00f6\u011frenme ve uygulama yolculu\u011funuzu \u00e7ok daha verimli hale getirecektir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<p><strong>S1: Vagrant k\u00fcmemi ba\u015flatt\u0131ktan sonra <code>kubectl get nodes<\/code> komutu d\u00fc\u011f\u00fcmleri \"NotReady\" olarak g\u00f6steriyorsa ne yapmal\u0131y\u0131m?<\/strong><\/p>\n<p><strong>C1:<\/strong> \u00d6ncelikle biraz bekleyin; bile\u015fenlerin tamamen ba\u015flamas\u0131 zaman alabilir. Sorun devam ederse, master d\u00fc\u011f\u00fcme SSH ile ba\u011flan\u0131n ve <code>sudo journalctl -u kubelet<\/code> ve <code>sudo journalctl -u containerd<\/code> komutlar\u0131yla servislerin g\u00fcnl\u00fcklerini kontrol edin. Ayr\u0131ca <code>kubectl get events --all-namespaces<\/code> komutuyla k\u00fcme i\u00e7indeki olaylar\u0131 inceleyin. A\u011f sorunlar\u0131 (\u00f6rne\u011fin g\u00fcvenlik duvar\u0131) veya eksik ba\u011f\u0131ml\u0131l\u0131klar da bu duruma yol a\u00e7abilir.<\/p>\n<p><strong>S2: Sanal makinelerime daha fazla RAM veya CPU atayabilir miyim?<\/strong><\/p>\n<p><strong>C2:<\/strong> Evet, Vagrantfile i\u00e7indeki <code>vb.memory<\/code> ve <code>vb.cpus<\/code> de\u011ferlerini istedi\u011finiz gibi ayarlayabilirsiniz. De\u011fi\u015fiklik yapt\u0131ktan sonra, Vagrantfile'\u0131 kaydedip <code>vagrant reload --provision<\/code> komutunu \u00e7al\u0131\u015ft\u0131rman\u0131z gerekmektedir. Ancak, host makinenizin toplam kaynaklar\u0131n\u0131 a\u015fmamaya dikkat edin.<\/p>\n<p><strong>S3: Bu kurulumu kullanarak daha fazla worker d\u00fc\u011f\u00fcm\u00fc ekleyebilir miyim?<\/strong><\/p>\n<p><strong>C3:<\/strong> Evet, <code>Vagrantfile<\/code> i\u00e7indeki worker d\u00fc\u011f\u00fcm tan\u0131m\u0131 d\u00f6ng\u00fcs\u00fcn\u00fc (<code>(1..2).each do |i| ... end<\/code>) de\u011fi\u015ftirerek kolayca daha fazla worker d\u00fc\u011f\u00fcm\u00fc ekleyebilirsiniz. \u00d6rne\u011fin, <code>(1..3).each do |i|<\/code> yaparak \u00fc\u00e7 worker d\u00fc\u011f\u00fcm\u00fc olu\u015fturabilirsiniz. Her yeni worker d\u00fc\u011f\u00fcm\u00fc i\u00e7in benzersiz bir IP adresi atand\u0131\u011f\u0131ndan emin olun.<\/p>\n<p><strong>S4: Kurulum s\u0131ras\u0131nda internet ba\u011flant\u0131s\u0131 koparsa ne olur?<\/strong><\/p>\n<p><strong>C4:<\/strong> \u0130nternet ba\u011flant\u0131s\u0131 kesilirse, Vagrant box'lar\u0131 indirme, Kubernetes paketlerini \u00e7ekme veya Flannel manifestlerini uygulama gibi ad\u0131mlar ba\u015far\u0131s\u0131z olur. Vagrant i\u015flemi durabilir. Ba\u011flant\u0131 geri geldi\u011finde, <code>vagrant up --provision<\/code> komutunu tekrar \u00e7al\u0131\u015ft\u0131rarak kurulumu kald\u0131\u011f\u0131 yerden devam ettirmeyi deneyebilirsiniz.<\/p>\n<p><strong>S5: K\u00fcmemi tamamen kapatmak veya silmek i\u00e7in hangi komutlar\u0131 kullanmal\u0131y\u0131m?<\/strong><\/p>\n<p><strong>C5:<\/strong> K\u00fcmedeki t\u00fcm sanal makineleri durdurmak i\u00e7in <code>vagrant halt<\/code> komutunu kullanabilirsiniz. Tamamen silmek ve temiz bir ba\u015flang\u0131\u00e7 yapmak isterseniz, <code>vagrant destroy -f<\/code> komutu t\u00fcm sanal makineleri ve ili\u015fkili sanal diskleri kald\u0131racakt\u0131r. Bu komutu dikkatli kullan\u0131n, geri d\u00f6n\u00fc\u015f\u00fc yoktur.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Da\u011f\u0131t\u0131k sistemlerin gelece\u011fi Kubernetes ile karma\u015f\u0131k uygulamalar\u0131 y\u00f6netmek art\u0131k daha kolay! Vagrant kullanarak kendi yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1491],"tags":[],"class_list":{"0":"post-34048","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-kubernetes","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu<\/title>\n<meta name=\"description\" content=\"Da\u011f\u0131t\u0131k sistemlerin gelece\u011fi Kubernetes ile karma\u015f\u0131k uygulamalar\u0131 y\u00f6netmek art\u0131k daha kolay! Vagrant kullanarak kendi yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, sanal ortamda g\u00fc\u00e7l\u00fc bir geli\u015ftirme altyap\u0131s\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacak.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu\" \/>\n<meta property=\"og:description\" content=\"Da\u011f\u0131t\u0131k sistemlerin gelece\u011fi Kubernetes ile karma\u015f\u0131k uygulamalar\u0131 y\u00f6netmek art\u0131k daha kolay! Vagrant kullanarak kendi yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, sanal ortamda g\u00fc\u00e7l\u00fc bir geli\u015ftirme altyap\u0131s\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacak.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-10T08:01:25+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu\",\"datePublished\":\"2025-11-10T08:01:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/\"},\"wordCount\":4548,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Kubernetes\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/\",\"name\":\"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-10T08:01:25+00:00\",\"description\":\"Da\u011f\u0131t\u0131k sistemlerin gelece\u011fi Kubernetes ile karma\u015f\u0131k uygulamalar\u0131 y\u00f6netmek art\u0131k daha kolay! Vagrant kullanarak kendi yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, sanal ortamda g\u00fc\u00e7l\u00fc bir geli\u015ftirme altyap\u0131s\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacak.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu","description":"Da\u011f\u0131t\u0131k sistemlerin gelece\u011fi Kubernetes ile karma\u015f\u0131k uygulamalar\u0131 y\u00f6netmek art\u0131k daha kolay! Vagrant kullanarak kendi yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, sanal ortamda g\u00fc\u00e7l\u00fc bir geli\u015ftirme altyap\u0131s\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacak.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/","og_locale":"tr_TR","og_type":"article","og_title":"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu","og_description":"Da\u011f\u0131t\u0131k sistemlerin gelece\u011fi Kubernetes ile karma\u015f\u0131k uygulamalar\u0131 y\u00f6netmek art\u0131k daha kolay! Vagrant kullanarak kendi yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, sanal ortamda g\u00fc\u00e7l\u00fc bir geli\u015ftirme altyap\u0131s\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacak.","og_url":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-10T08:01:25+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"12 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu","datePublished":"2025-11-10T08:01:25+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/"},"wordCount":4548,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Kubernetes"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/","url":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/","name":"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-10T08:01:25+00:00","description":"Da\u011f\u0131t\u0131k sistemlerin gelece\u011fi Kubernetes ile karma\u015f\u0131k uygulamalar\u0131 y\u00f6netmek art\u0131k daha kolay! Vagrant kullanarak kendi yerel \u00e7ok d\u00fc\u011f\u00fcml\u00fc Kubernetes k\u00fcmenizi ad\u0131m ad\u0131m nas\u0131l kuraca\u011f\u0131n\u0131z\u0131 \u00f6\u011frenin. Bu kapsaml\u0131 rehber, sanal ortamda g\u00fc\u00e7l\u00fc bir geli\u015ftirme altyap\u0131s\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacak.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/vagrant-ile-cok-dugumlu-kubernetes-kumesi-kurulumu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Vagrant ile \u00c7ok D\u00fc\u011f\u00fcml\u00fc Kubernetes K\u00fcmesi Kurulumu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34048","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34048"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34048\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34048"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34048"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34048"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}