{"id":35266,"date":"2025-11-27T17:01:04","date_gmt":"2025-11-27T14:01:04","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/"},"modified":"2025-11-27T17:01:04","modified_gmt":"2025-11-27T14:01:04","slug":"kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/","title":{"rendered":"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi"},"content":{"rendered":"<p><body><\/p>\n<p>Kubernetes ortam\u0131nda uygulamalar\u0131n\u0131z\u0131 ba\u015far\u0131yla da\u011f\u0131tmak i\u00e7in Pod&#8217;lar\u0131n temel s\u00f6zdizimini anlamak kritik \u00f6neme sahiptir. Bu rehberde, bir Pod&#8217;u s\u0131f\u0131rdan nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131, ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc nas\u0131l y\u00f6netece\u011finizi ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz.<\/p>\n<p>Modern uygulama geli\u015ftirme ve da\u011f\u0131t\u0131m s\u00fcre\u00e7leri, \u00f6zellikle bulut tabanl\u0131 mimarilerde, karma\u015f\u0131kl\u0131\u011f\u0131 beraberinde getirir. Uygulamalar art\u0131k tek par\u00e7a devasa yap\u0131lar (monolitler) olmaktan \u00e7\u0131karak, mikro hizmetlere ayr\u0131lm\u0131\u015f, ba\u011f\u0131ms\u0131z ve \u00f6l\u00e7eklenebilir bile\u015fenler haline gelmi\u015ftir. Bu d\u00f6n\u00fc\u015f\u00fcmde, konteyner teknolojileri ve konteyner orkestrasyon ara\u00e7lar\u0131 kilit rol oynar. \u0130\u015fte tam bu noktada Kubernetes devreye girer. Ancak Kubernetes d\u00fcnyas\u0131na ad\u0131m att\u0131\u011f\u0131n\u0131zda kar\u015f\u0131la\u015faca\u011f\u0131n\u0131z en temel yap\u0131 ta\u015f\u0131 nedir? Yan\u0131t: Pod.<\/p>\n<p>Pod, Kubernetes\u2019in da\u011f\u0131t\u0131labilir en k\u00fc\u00e7\u00fck birimidir ve bir uygulaman\u0131n veya uygulaman\u0131n bir k\u0131sm\u0131n\u0131n \u00e7al\u0131\u015ft\u0131r\u0131laca\u011f\u0131 ortam\u0131 tan\u0131mlar. Kula\u011fa basit gelse de, Pod&#8217;lar\u0131n nas\u0131l olu\u015fturuldu\u011funu, yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131n\u0131 ve y\u00f6netildi\u011fini tam olarak kavramak, Kubernetes k\u00fcmenizde stabil, verimli ve g\u00fcvenli uygulamalar \u00e7al\u0131\u015ft\u0131rman\u0131n ilk ve en \u00f6nemli ad\u0131m\u0131d\u0131r. Bir\u00e7ok geli\u015ftirici ve operasyon m\u00fchendisi, Kubernetes&#8217;in sa\u011flad\u0131\u011f\u0131 soyutlamalara kap\u0131larak Pod&#8217;lar\u0131n alt\u0131nda yatan dinamikleri g\u00f6z ard\u0131 edebilir. Ancak bu, potansiyel performans sorunlar\u0131na, hata ay\u0131klama zorluklar\u0131na ve hatta g\u00fcvenlik a\u00e7\u0131klar\u0131na yol a\u00e7abilir.<\/p>\n<p>Bu makale, Pod olu\u015fturman\u0131n temel s\u00f6zdizimini derinlemesine inceleyerek, ba\u015flang\u0131\u00e7 seviyesindeki kullan\u0131c\u0131lardan daha deneyimli profesyonellere kadar herkes i\u00e7in sa\u011flam bir temel sunmay\u0131 ama\u00e7lamaktad\u0131r. Konuyu s\u0131f\u0131rdan ele alarak, YAML dosyalar\u0131n\u0131n gizemini \u00e7\u00f6zmekten, Pod ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc anlamaya, kaynaklar\u0131 optimize etmeye ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz sorunlara pratik \u00e7\u00f6z\u00fcmler sunmaya kadar geni\u015f bir yelpazeyi kapsayacakt\u0131r. B\u00f6ylece, hem teorik bilgiyi peki\u015ftirecek hem de pratik uygulamalarla Kubernetes yetkinli\u011finizi bir \u00fcst seviyeye ta\u015f\u0131yacaks\u0131n\u0131z. Kubernetes&#8217;in sundu\u011fu t\u00fcm avantajlardan yararlanmak ve uygulamalar\u0131n\u0131z\u0131 bulut yerlisi paradigmaya uygun \u015fekilde y\u00f6netmek i\u00e7in Pod&#8217;lar\u0131n dilini ak\u0131c\u0131 bir \u015fekilde konu\u015fmaya ba\u015flamak \u015fartt\u0131r.<\/p>\n<h2>Kubernetes ve Pod Nedir? Temel Kavramlara H\u0131zl\u0131 Bir Bak\u0131\u015f<\/h2>\n<p>Kubernetes, Google taraf\u0131ndan a\u00e7\u0131k kaynak olarak geli\u015ftirilen ve konteynerli uygulamalar\u0131 otomatik da\u011f\u0131tmak, \u00f6l\u00e7eklendirmek ve y\u00f6netmek i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc bir konteyner orkestrasyon sistemidir. Docker gibi konteyner teknolojileri, uygulamalar\u0131 izole edilmi\u015f ve ta\u015f\u0131nabilir birimler halinde paketlememizi sa\u011flarken, Kubernetes bu konteynerleri binlerce sunucu \u00fczerinde koordineli bir \u015fekilde \u00e7al\u0131\u015ft\u0131rmam\u0131z\u0131, kaynaklar\u0131 verimli kullanmam\u0131z\u0131 ve y\u00fcksek eri\u015filebilirlik sa\u011flamam\u0131z\u0131 m\u00fcmk\u00fcn k\u0131lar. Peki, bu b\u00fcy\u00fck orkestrasyonun en temel enstr\u00fcman\u0131 nedir? Cevap Pod\u2019dur.<\/p>\n<p>Bir Pod, Kubernetes&#8217;in da\u011f\u0131tabilece\u011fi en k\u00fc\u00e7\u00fck, en temel birimdir. Bir veya daha fazla konteyner (genellikle Docker konteynerleri) bar\u0131nd\u0131r\u0131r ve bu konteynerler i\u00e7in payla\u015f\u0131lan kaynaklar\u0131 (depolama birimi, a\u011f kimli\u011fi ve IP adresi gibi) sa\u011flar. Neden do\u011frudan konteynerleri de\u011fil de Pod&#8217;lar\u0131 kullan\u0131yoruz diye d\u00fc\u015f\u00fcnebilirsiniz. Bunun temel nedeni, baz\u0131 uygulamalar\u0131n s\u0131k\u0131 bir \u015fekilde birlikte \u00e7al\u0131\u015fan, ortak bir ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc payla\u015fan ve ayn\u0131 a\u011f ve depolama kaynaklar\u0131na ihtiya\u00e7 duyan birden fazla i\u015flemden olu\u015fmas\u0131d\u0131r. Pod, bu t\u00fcr birlikte \u00e7al\u0131\u015fan konteynerleri mant\u0131ksal bir birim alt\u0131nda grupland\u0131rarak, onlar\u0131n bir b\u00fct\u00fcn olarak y\u00f6netilmesini kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>\u00d6rne\u011fin, bir web sunucusu uygulamas\u0131n\u0131 d\u00fc\u015f\u00fcn\u00fcn. Bu uygulaman\u0131n ana konteynerinin yan\u0131 s\u0131ra, ayn\u0131 Pod i\u00e7inde \u00e7al\u0131\u015fan bir g\u00fcnl\u00fck toplama arac\u0131 (sidecar konteyner) veya bir yap\u0131land\u0131rma e\u015fitleyici gibi yard\u0131mc\u0131 bir konteyner de bulunabilir. Bu iki konteyner ayn\u0131 Pod i\u00e7inde yer ald\u0131\u011f\u0131nda, ayn\u0131 a\u011f aray\u00fcz\u00fcn\u00fc payla\u015f\u0131r (<code>localhost<\/code> \u00fczerinden birbirleriyle ileti\u015fim kurabilirler) ve payla\u015f\u0131lan bir depolama birimini kullanabilirler. Bu, onlar\u0131n bir &#8220;mant\u0131ksal ana bilgisayar&#8221; \u00fczerinde \u00e7al\u0131\u015f\u0131yormu\u015f gibi davranmalar\u0131n\u0131 sa\u011flar. Pod&#8217;lar genellikle ge\u00e7icidir (ephemeral), yani \u00f6ld\u00fcklerinde veya yeniden olu\u015fturulduklar\u0131nda i\u00e7indeki veriler kaybolur. Bu nedenle, kal\u0131c\u0131 verilere ihtiya\u00e7 duyan uygulamalar i\u00e7in Pod&#8217;lar genellikle kal\u0131c\u0131 depolama birimleri (Persistent Volumes) ile birlikte kullan\u0131l\u0131r.<\/p>\n<p>Pod&#8217;lar ayn\u0131 zamanda ya\u015fam d\u00f6ng\u00fcleri a\u00e7\u0131s\u0131ndan da \u00f6nemlidir. Kubernetes, Pod&#8217;lar\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 izler ve ar\u0131zalanan Pod&#8217;lar\u0131 otomatik olarak yeniden ba\u015flat\u0131r veya de\u011fi\u015ftirir. Bu sayede uygulamalar\u0131n\u0131z\u0131n kesintisiz \u00e7al\u0131\u015fmas\u0131 sa\u011flan\u0131r. Konteyner orkestrasyonunun temelini olu\u015fturan Pod&#8217;lar, ayn\u0131 zamanda daha y\u00fcksek seviyeli soyutlamalar\u0131n (Deployment&#8217;lar, StatefulSet&#8217;ler vb.) da yap\u0131 ta\u015f\u0131d\u0131r. Bu soyutlamalar, birden fazla Pod&#8217;u y\u00f6netmeyi ve uygulamalar\u0131n \u00f6l\u00e7eklendirilmesini basitle\u015ftirir. Dolay\u0131s\u0131yla, Kubernetes ekosistemini tam olarak anlamak ve verimli bir \u015fekilde kullanmak i\u00e7in Pod&#8217;lar\u0131n mimarisine ve davran\u0131\u015flar\u0131na hakim olmak \u015fartt\u0131r.<\/p>\n<h2>Basit Bir Pod Nas\u0131l Olu\u015fturulur? Ad\u0131m Ad\u0131m YAML Rehberi<\/h2>\n<p>Kubernetes&#8217;te bir Pod olu\u015fturman\u0131n en yayg\u0131n ve \u00f6nerilen yolu, Pod&#8217;un istenen durumunu (desired state) a\u00e7\u0131klayan bir YAML manifest dosyas\u0131 yazmakt\u0131r. YAML (Yet Another Markup Language), insan taraf\u0131ndan okunabilir ve genellikle yap\u0131land\u0131rma dosyalar\u0131 i\u00e7in kullan\u0131l\u0131r. Bu b\u00f6l\u00fcmde, temel bir Pod&#8217;u ad\u0131m ad\u0131m nas\u0131l olu\u015fturaca\u011f\u0131m\u0131z\u0131, bir Nginx web sunucusu \u00f6rne\u011fi \u00fczerinden g\u00f6sterece\u011fiz. Bu sayede, Pod manifestlerinin olmazsa olmaz alanlar\u0131n\u0131 ve bunlar\u0131n ne anlama geldi\u011fini net bir \u015fekilde anlayacaks\u0131n\u0131z.<\/p>\n<h3>1. Ad\u0131m: YAML Manifest Dosyas\u0131n\u0131 Olu\u015fturun<\/h3>\n<p>\u00d6ncelikle, Pod&#8217;umuz i\u00e7in bir YAML dosyas\u0131 olu\u015fturmam\u0131z gerekiyor. Bu dosyay\u0131 \u00f6rne\u011fin <code>nginx-pod.yaml<\/code> olarak adland\u0131rabiliriz. Dosyan\u0131n i\u00e7eri\u011fi a\u015fa\u011f\u0131daki gibi olacakt\u0131r:<\/p>\n<pre><code>\napiVersion: v1\nkind: Pod\nmetadata:\n  name: benim-nginx-pod\n  labels:\n    app: webserver\n    env: dev\nspec:\n  containers:\n  - name: nginx-konteyner\n    image: nginx:latest\n    ports:\n    - containerPort: 80\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu YAML dosyas\u0131ndaki her bir alan\u0131 inceleyelim:<\/p>\n<ul>\n<li><code>apiVersion: v1<\/code>: Kubernetes API s\u00fcr\u00fcm\u00fcn\u00fc belirtir. Pod'lar i\u00e7in genellikle <code>v1<\/code> kullan\u0131l\u0131r. Bu, Kubernetes k\u00fcmesinin nesneleri nas\u0131l i\u015fleyece\u011fini anlamas\u0131na yard\u0131mc\u0131 olur.<\/li>\n<li><code>kind: Pod<\/code>: Olu\u015fturmak istedi\u011fimiz Kubernetes nesnesinin t\u00fcr\u00fcn\u00fc belirtir. Bu durumda bir Pod olu\u015fturmak istiyoruz.<\/li>\n<li><code>metadata<\/code>: Nesne hakk\u0131nda meta bilgileri i\u00e7erir.\n<ul>\n<li><code>name: benim-nginx-pod<\/code>: Pod'umuz i\u00e7in benzersiz bir isim tan\u0131mlar. Bu isim, Pod'u y\u00f6netmek (getirme, silme vb.) i\u00e7in kullan\u0131l\u0131r.<\/li>\n<li><code>labels<\/code>: Pod'a anahtar-de\u011fer \u00e7iftleri \u015feklinde etiketler ekler. Bu etiketler, Pod'lar\u0131 grupland\u0131rmak, se\u00e7mek ve organize etmek i\u00e7in kritik \u00f6neme sahiptir. \u00d6rne\u011fin, bu etiketler sayesinde web sunucusu g\u00f6revindeki t\u00fcm Pod'lar\u0131 veya geli\u015ftirme ortam\u0131ndaki t\u00fcm Pod'lar\u0131 kolayca filtreleyebiliriz.<\/li>\n<\/ul>\n<\/li>\n<li><code>spec<\/code>: Pod'un davran\u0131\u015f\u0131n\u0131 ve i\u00e7eri\u011fini a\u00e7\u0131klayan Pod spesifikasyonunu i\u00e7erir.\n<ul>\n<li><code>containers<\/code>: Pod i\u00e7inde \u00e7al\u0131\u015facak konteynerlerin listesini belirtir. Bir Pod birden fazla konteyner i\u00e7erebilir, ancak \u00e7o\u011fu zaman tek bir ana konteyner kullan\u0131l\u0131r.\n<ul>\n<li><code>- name: nginx-konteyner<\/code>: Konteynerin ad\u0131n\u0131 belirtir. Pod i\u00e7indeki di\u011fer konteynerlerden ay\u0131rt etmek i\u00e7in benzersiz olmal\u0131d\u0131r.<\/li>\n<li><code>image: nginx:latest<\/code>: Konteynerin hangi Docker imaj\u0131ndan olu\u015fturulaca\u011f\u0131n\u0131 belirtir. Bu \u00f6rnekte, Docker Hub'dan en son Nginx imaj\u0131n\u0131 \u00e7ekilecektir.<\/li>\n<li><code>ports<\/code>: Konteynerin d\u0131\u015f d\u00fcnyaya a\u00e7aca\u011f\u0131 portlar\u0131 tan\u0131mlar. Bu, Kubernetes'in a\u011f yap\u0131land\u0131rmas\u0131 i\u00e7in bir ipucu sa\u011flar.\n<ul>\n<li><code>- containerPort: 80<\/code>: Konteynerin i\u00e7indeki uygulaman\u0131n dinledi\u011fi portu belirtir.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>2. Ad\u0131m: Pod'u Kubernetes K\u00fcmenize Da\u011f\u0131t\u0131n<\/h3>\n<p>YAML dosyas\u0131n\u0131 olu\u015fturduktan sonra, onu Kubernetes k\u00fcmenize da\u011f\u0131tmak i\u00e7in <code>kubectl apply<\/code> komutunu kullan\u0131r\u0131z. <code>kubectl<\/code>, Kubernetes k\u00fcmeleriyle etkile\u015fim kurmak i\u00e7in kullan\u0131lan komut sat\u0131r\u0131 arac\u0131d\u0131r. Terminalinizde a\u015fa\u011f\u0131daki komutu \u00e7al\u0131\u015ft\u0131r\u0131n:<\/p>\n<pre><code>\nkubectl apply -f nginx-pod.yaml\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, <code>nginx-pod.yaml<\/code> dosyas\u0131nda tan\u0131mlanan Pod'u Kubernetes k\u00fcmenize g\u00f6nderir ve Kubernetes bu Pod'u olu\u015fturmak i\u00e7in gerekli i\u015flemleri ba\u015flat\u0131r. Ba\u015far\u0131l\u0131 olursa, terminalinizde \"pod\/benim-nginx-pod created\" gibi bir \u00e7\u0131kt\u0131 g\u00f6receksiniz.<\/p>\n<h3>3. Ad\u0131m: Pod'un Durumunu Kontrol Edin<\/h3>\n<p>Pod'unuzun ba\u015far\u0131yla olu\u015fturulup \u00e7al\u0131\u015f\u0131r durumda olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutu kullanabilirsiniz:<\/p>\n<pre><code>\nkubectl get pods\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, k\u00fcmenizdeki t\u00fcm Pod'lar\u0131n bir listesini ve durumlar\u0131n\u0131 g\u00f6sterir. <code>benim-nginx-pod<\/code> isimli Pod'unuzun <code>Running<\/code> (\u00c7al\u0131\u015f\u0131yor) durumunda oldu\u011funu g\u00f6rmelisiniz. E\u011fer <code>Pending<\/code> (Beklemede) veya ba\u015fka bir durumda ise, bir sorun oldu\u011funu g\u00f6sterir ve daha fazla ara\u015ft\u0131rma yapman\u0131z gerekebilir. Pod'unuzun daha detayl\u0131 bilgilerini incelemek i\u00e7in:<\/p>\n<pre><code>\nkubectl describe pod benim-nginx-pod\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu komut, Pod'un olaylar\u0131n\u0131 (events), konteyner bilgilerini, IP adresini ve daha bir\u00e7ok detay\u0131 i\u00e7eren kapsaml\u0131 bir \u00e7\u0131kt\u0131 sunar. B\u00f6ylece, Pod'un neden bir durumda tak\u0131l\u0131 kald\u0131\u011f\u0131n\u0131 veya neden ba\u015flat\u0131lamad\u0131\u011f\u0131n\u0131 anlamak i\u00e7in \u00f6nemli ipu\u00e7lar\u0131 elde edebilirsiniz.<\/p>\n<p>Bu \u00fc\u00e7 ad\u0131m\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, Kubernetes k\u00fcmenizde ilk Pod'unuzu ba\u015far\u0131yla olu\u015fturmu\u015f ve temel y\u00f6netimini ger\u00e7ekle\u015ftirmi\u015f olacaks\u0131n\u0131z. Bu basit yap\u0131, daha karma\u015f\u0131k Kubernetes nesnelerini ve da\u011f\u0131t\u0131m stratejilerini anlaman\u0131n temelini olu\u015fturur.<\/p>\n<h2>Pod Ya\u015fam D\u00f6ng\u00fcs\u00fc ve Durumlar\u0131: Uygulaman\u0131z\u0131n Sa\u011fl\u0131\u011f\u0131n\u0131 Nas\u0131l Takip Edersiniz?<\/h2>\n<p>Bir Pod'un olu\u015fturulmas\u0131ndan yok edilmesine kadar ge\u00e7en s\u00fcreye Pod ya\u015fam d\u00f6ng\u00fcs\u00fc denir. Bu d\u00f6ng\u00fc i\u00e7inde Pod, farkl\u0131 fazlardan ve konteynerleri de farkl\u0131 durumlardan ge\u00e7er. Uygulamalar\u0131n\u0131z\u0131n Kubernetes k\u00fcmesinde istikrarl\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olmak ve olas\u0131 sorunlar\u0131 h\u0131zl\u0131ca tespit etmek i\u00e7in bu fazlar\u0131 ve durumlar\u0131 anlamak hayati \u00f6neme sahiptir. Pod'un sa\u011fl\u0131k durumunu izlemek ve y\u00f6netmek, g\u00fcvenilir bir da\u011f\u0131t\u0131m stratejisinin temelini olu\u015fturur.<\/p>\n<h3>Pod Fazlar\u0131 (Phases)<\/h3>\n<p>Bir Pod, ya\u015fam d\u00f6ng\u00fcs\u00fc boyunca a\u015fa\u011f\u0131daki fazlardan birinde bulunur:<\/p>\n<ul>\n<li><strong>Pending (Beklemede):<\/strong> Pod, Kubernetes API taraf\u0131ndan kabul edilmi\u015ftir, ancak bir veya daha fazla konteyner imaj\u0131 hen\u00fcz olu\u015fturulmam\u0131\u015f veya \u00e7al\u0131\u015ft\u0131r\u0131lamam\u0131\u015ft\u0131r. Bu durum genellikle kaynak yetersizli\u011fi (CPU, bellek), imaj \u00e7ekme sorunlar\u0131 veya bir d\u00fc\u011f\u00fcm\u00fcn Pod'u zamanlayamamas\u0131 nedeniyle olu\u015fur.<\/li>\n<li><strong>Running (\u00c7al\u0131\u015f\u0131yor):<\/strong> Pod, bir d\u00fc\u011f\u00fcme atanm\u0131\u015f ve i\u00e7indeki t\u00fcm konteynerler olu\u015fturulmu\u015ftur. En az bir konteyner \u00e7al\u0131\u015f\u0131yor veya ba\u015flat\u0131l\u0131yor. Bu, genellikle istedi\u011fimiz durumdur.<\/li>\n<li><strong>Succeeded (Ba\u015far\u0131l\u0131):<\/strong> Pod i\u00e7indeki t\u00fcm konteynerler ba\u015far\u0131yla sonland\u0131r\u0131lm\u0131\u015f ve yeniden ba\u015flat\u0131lmayacakt\u0131r. Bu faz, tek seferlik g\u00f6revleri veya batch i\u015flerini tamamlayan Pod'lar i\u00e7in ge\u00e7erlidir.<\/li>\n<li><strong>Failed (Ba\u015far\u0131s\u0131z):<\/strong> Pod i\u00e7indeki t\u00fcm konteynerler sonland\u0131r\u0131lm\u0131\u015f ve en az bir konteyner bir hata durumuyla sonlanm\u0131\u015ft\u0131r. Bu da, yeniden ba\u015flat\u0131lmayacaklar\u0131 anlam\u0131na gelir.<\/li>\n<li><strong>Unknown (Bilinmiyor):<\/strong> K\u00fcmenin Pod'un durumunu belirleyemedi\u011fi bir durumdur. Genellikle d\u00fc\u011f\u00fcmle ileti\u015fim kurulamamas\u0131 gibi bir ileti\u015fim hatas\u0131ndan kaynaklan\u0131r.<\/li>\n<\/ul>\n<h3>Konteyner Durumlar\u0131 (Container States)<\/h3>\n<p>Bir Pod i\u00e7indeki konteynerler de kendi i\u00e7lerinde farkl\u0131 durumlar ya\u015far:<\/p>\n<ul>\n<li><strong>Waiting (Beklemede):<\/strong> Konteyner \u00e7al\u0131\u015fm\u0131yor ve bir eylemi bekliyor. \u00d6rne\u011fin, bir imaj\u0131n \u00e7ekilmesini veya bir Init Konteynerinin tamamlanmas\u0131n\u0131 bekleyebilir.<\/li>\n<li><strong>Running (\u00c7al\u0131\u015f\u0131yor):<\/strong> Konteyner ba\u015far\u0131yla ba\u015flat\u0131ld\u0131 ve \u00e7al\u0131\u015f\u0131yor.<\/li>\n<li><strong>Terminated (Sonland\u0131r\u0131ld\u0131):<\/strong> Konteyner \u00e7al\u0131\u015fmay\u0131 durdurdu. Neden sonland\u0131\u011f\u0131na (ba\u015far\u0131l\u0131 veya hata ile) ba\u011fl\u0131 olarak bir \u00e7\u0131k\u0131\u015f kodu (exit code) ve sonlanma nedeni (reason) vard\u0131r.<\/li>\n<\/ul>\n<h3>Sa\u011fl\u0131k Kontrolleri: Liveness ve Readiness Probes<\/h3>\n<p>Kubernetes, uygulamalar\u0131n sa\u011fl\u0131\u011f\u0131n\u0131 aktif olarak izlemek i\u00e7in iki t\u00fcr sa\u011fl\u0131k kontrol\u00fc (probe) sunar:<\/p>\n<ol>\n<li><strong>Liveness Probe (Canl\u0131l\u0131k Kontrol\u00fc):<\/strong> Konteynerin hala \u00e7al\u0131\u015f\u0131r durumda oldu\u011funu ve uygulaman\u0131n donmad\u0131\u011f\u0131n\u0131 kontrol eder. E\u011fer liveness probe ba\u015far\u0131s\u0131z olursa, Kubernetes konteyneri yeniden ba\u015flat\u0131r. Bu, uygulaman\u0131n kendini kurtarmas\u0131na olanak tan\u0131r.\n<pre><code>\n        livenessProbe:\n          httpGet:\n            path: \/healthz\n            port: 8080\n          initialDelaySeconds: 15\n          periodSeconds: 20\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li><strong>Readiness Probe (Haz\u0131rl\u0131k Kontrol\u00fc):<\/strong> Konteynerin d\u0131\u015far\u0131dan gelen trafi\u011fi kabul etmeye haz\u0131r olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. E\u011fer readiness probe ba\u015far\u0131s\u0131z olursa, Kubernetes bu Pod'u Service'ten kald\u0131r\u0131r, b\u00f6ylece trafi\u011fi bu Pod'a y\u00f6nlendirmez. Uygulama haz\u0131r oldu\u011funda, Pod tekrar Service'e eklenir. Bu, da\u011f\u0131t\u0131m s\u0131ras\u0131nda s\u0131f\u0131r kesinti (zero-downtime) sa\u011flamak i\u00e7in \u00f6nemlidir.\n<pre><code>\n        readinessProbe:\n          httpGet:\n            path: \/ready\n            port: 8080\n          initialDelaySeconds: 5\n          periodSeconds: 5\n            <\/pre>\n<p><\/code>\n        <\/li>\n<\/ol>\n<p>Bu sa\u011fl\u0131k kontrolleri, uygulamalar\u0131n\u0131z\u0131n sadece \"\u00e7al\u0131\u015f\u0131yor\" de\u011fil, ayn\u0131 zamanda \"sa\u011fl\u0131kl\u0131\" ve \"hizmet vermeye haz\u0131r\" olmas\u0131n\u0131 sa\u011flar. Do\u011fru yap\u0131land\u0131r\u0131ld\u0131klar\u0131nda, otomatik kendi kendine iyile\u015ftirme mekanizmalar\u0131 sunarlar.<\/p>\n<h3>Sorun Giderme ve Loglama<\/h3>\n<p>Bir Pod'un durumuyla ilgili sorunlar\u0131 te\u015fhis etmek i\u00e7in kullanabilece\u011finiz baz\u0131 temel <code>kubectl<\/code> komutlar\u0131 vard\u0131r:<\/p>\n<ul>\n<li><code>kubectl describe pod <pod-ad\u0131><\/code>: Pod'un t\u00fcm detaylar\u0131n\u0131, olaylar\u0131n\u0131 ve durumunu g\u00f6sterir. \u00d6zellikle <code>Events<\/code> b\u00f6l\u00fcm\u00fc, Pod'un neden bir hata durumuna ge\u00e7ti\u011fini veya neden ba\u015flayamad\u0131\u011f\u0131n\u0131 anlamak i\u00e7in \u00e7ok de\u011ferlidir.<\/li>\n<li><code>kubectl logs <pod-ad\u0131><\/code>: Pod i\u00e7indeki konteynerin standart \u00e7\u0131kt\u0131 (stdout) ve standart hata (stderr) loglar\u0131n\u0131 g\u00f6sterir. Uygulaman\u0131z\u0131n ne yapt\u0131\u011f\u0131n\u0131, hangi hatalar\u0131 verdi\u011fini g\u00f6rmek i\u00e7in olmazsa olmaz bir ara\u00e7t\u0131r. Birden fazla konteynerli bir Pod i\u00e7in <code>-c <konteyner-ad\u0131><\/code> parametresiyle belirli bir konteynerin loglar\u0131n\u0131 g\u00f6r\u00fcnt\u00fcleyebilirsiniz.<\/li>\n<li><code>kubectl exec -it <pod-ad\u0131> -- \/bin\/bash<\/code>: \u00c7al\u0131\u015fan bir konteyner i\u00e7ine interaktif bir shell (kabuk) a\u00e7ar. Bu, konteyner i\u00e7inde dosya sistemini incelemek, yap\u0131land\u0131rmalar\u0131 kontrol etmek veya k\u00fc\u00e7\u00fck testler yapmak i\u00e7in harikad\u0131r.<\/li>\n<\/ul>\n<p>Bu ara\u00e7lar\u0131 etkili bir \u015fekilde kullanarak, Pod ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc ve durumlar\u0131n\u0131 aktif olarak takip edebilir, b\u00f6ylece uygulamalar\u0131n\u0131z\u0131n kesintisiz ve verimli bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz. Uygulama sa\u011fl\u0131\u011f\u0131n\u0131n do\u011fru bir \u015fekilde anla\u015f\u0131lmas\u0131, Kubernetes'te ba\u015far\u0131l\u0131 bir operasyon i\u00e7in temeldir.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryosu: Bir Web Uygulamas\u0131n\u0131 Pod'da \u00c7al\u0131\u015ft\u0131rmak<\/h2>\n<p>Teorik bilgileri peki\u015ftirmek ve Pod'lar\u0131n ger\u00e7ek d\u00fcnyadaki kullan\u0131m senaryolar\u0131n\u0131 anlamak i\u00e7in basit bir web uygulamas\u0131n\u0131 Kubernetes Pod'unda nas\u0131l \u00e7al\u0131\u015ft\u0131raca\u011f\u0131m\u0131za dair bir vaka incelemesi yapal\u0131m. Senaryomuz, Node.js ile yaz\u0131lm\u0131\u015f k\u00fc\u00e7\u00fck bir web uygulamas\u0131n\u0131 bar\u0131nd\u0131racak bir Pod olu\u015fturmak ve bu uygulamay\u0131 \u00e7al\u0131\u015ft\u0131rmak olacak. Bu \u00f6rnek, ortam de\u011fi\u015fkenleri ve temel kaynak y\u00f6netimi gibi daha \u00f6nce bahsetti\u011fimiz baz\u0131 kavramlar\u0131 da peki\u015ftirecektir.<\/p>\n<h3>Senaryo: Basit Bir Node.js Uygulamas\u0131<\/h3>\n<p>Bir Node.js uygulamam\u0131z oldu\u011funu varsayal\u0131m. Bu uygulama, HTTP isteklerini dinleyen ve basit bir JSON yan\u0131t\u0131 d\u00f6nd\u00fcren temel bir Express.js sunucusu olabilir. Uygulaman\u0131n \u00e7al\u0131\u015faca\u011f\u0131 portu ve di\u011fer baz\u0131 yap\u0131land\u0131rmalar\u0131 ortam de\u011fi\u015fkenleri arac\u0131l\u0131\u011f\u0131yla almas\u0131 gerekti\u011fini d\u00fc\u015f\u00fcnelim.<\/p>\n<p>\u00d6ncelikle, uygulaman\u0131n bir Docker imaj\u0131na paketlenmi\u015f olmas\u0131 gerekir. Basit bir <code>Dockerfile<\/code> \u015f\u00f6yle g\u00f6r\u00fcnebilir:<\/p>\n<pre><code>\n# Dockerfile\nFROM node:18-alpine\nWORKDIR \/app\nCOPY package*.json .\/\nRUN npm install\nCOPY . .\nEXPOSE 3000\nCMD [\"node\", \"server.js\"]\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu imaj\u0131n <code>my-nodejs-app:1.0.0<\/code> olarak Docker Hub'a y\u00fcklendi\u011fini varsayal\u0131m.<\/p>\n<h3>Pod Manifest Dosyas\u0131 Olu\u015fturma: <code>nodejs-app-pod.yaml<\/code><\/h3>\n<p>\u015eimdi bu Node.js uygulamas\u0131n\u0131 \u00e7al\u0131\u015ft\u0131racak Pod manifestini olu\u015ftural\u0131m. Bu manifestte, uygulaman\u0131n \u00e7al\u0131\u015faca\u011f\u0131 portu ve uygulaman\u0131n almas\u0131 gereken bir mesaj\u0131 ortam de\u011fi\u015fkenleri olarak tan\u0131mlayaca\u011f\u0131z. Ayr\u0131ca, Pod'un kaynak iste\u011fini (request) de belirtece\u011fiz.<\/p>\n<pre><code>\napiVersion: v1\nkind: Pod\nmetadata:\n  name: nodejs-web-app-pod\n  labels:\n    app: nodejs-app\n    tier: frontend\nspec:\n  containers:\n  - name: nodejs-konteyner\n    image: my-nodejs-app:1.0.0 # Kendi Docker imaj\u0131n\u0131z\u0131n ad\u0131\n    ports:\n    - containerPort: 3000\n    env:\n    - name: NODE_ENV\n      value: production\n    - name: GREETING_MESSAGE\n      value: \"Merhaba Kubernetes D\u00fcnyas\u0131!\"\n    resources:\n      requests:\n        memory: \"64Mi\"\n        cpu: \"250m\"\n      limits:\n        memory: \"128Mi\"\n        cpu: \"500m\"\n    livenessProbe:\n      httpGet:\n        path: \/health\n        port: 3000\n      initialDelaySeconds: 5\n      periodSeconds: 10\n    readinessProbe:\n      httpGet:\n        path: \/ready\n        port: 3000\n      initialDelaySeconds: 5\n      periodSeconds: 5\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu manifestteki \u00f6nemli eklemeler \u015funlard\u0131r:<\/p>\n<ul>\n<li><code>env<\/code>: Uygulaman\u0131n i\u00e7ine enjekte edilecek ortam de\u011fi\u015fkenlerini tan\u0131mlar. Burada <code>NODE_ENV<\/code> ve <code>GREETING_MESSAGE<\/code> de\u011fi\u015fkenlerini belirttik. Uygulaman\u0131z bu de\u011fi\u015fkenlere eri\u015ferek farkl\u0131 davran\u0131\u015flar sergileyebilir.<\/li>\n<li><code>resources<\/code>: Pod'un kaynak isteklerini (<code>requests<\/code>) ve limitlerini (<code>limits<\/code>) tan\u0131mlar.\n<ul>\n<li><code>requests<\/code>: Kubernetes zamanlay\u0131c\u0131s\u0131n\u0131n bu Pod'u yerle\u015ftirece\u011fi d\u00fc\u011f\u00fcmde garanti alt\u0131na almas\u0131 gereken minimum kaynak miktar\u0131d\u0131r. Bu, Pod'un \u00e7al\u0131\u015fmas\u0131 i\u00e7in gereken \"asgari\" kaynaklar\u0131 ifade eder.<\/li>\n<li><code>limits<\/code>: Pod'un kullanabilece\u011fi maksimum kaynak miktar\u0131d\u0131r. E\u011fer bir Pod bu limiti a\u015farsa, Kubernetes taraf\u0131ndan k\u0131s\u0131tlanabilir veya sonland\u0131r\u0131labilir. Bu, bir Pod'un k\u00fcmedeki di\u011fer Pod'lar\u0131n kaynaklar\u0131n\u0131 t\u00fcketmesini engeller.<\/li>\n<\/ul>\n<\/li>\n<li><code>livenessProbe<\/code> ve <code>readinessProbe<\/code>: Daha \u00f6nce bahsetti\u011fimiz sa\u011fl\u0131k kontrolleri. Uygulaman\u0131n <code>\/health<\/code> ve <code>\/ready<\/code> endpoint'lerini kullanarak sa\u011fl\u0131\u011f\u0131n\u0131 denetlemesini sa\u011flar.<\/li>\n<\/ul>\n<h3>Pod'u Da\u011f\u0131tma ve Kontrol Etme<\/h3>\n<p>Dosyay\u0131 kaydettikten sonra, Pod'u da\u011f\u0131tmak i\u00e7in <code>kubectl apply -f nodejs-app-pod.yaml<\/code> komutunu kullan\u0131n. Ard\u0131ndan <code>kubectl get pods<\/code> ve <code>kubectl describe pod nodejs-web-app-pod<\/code> komutlar\u0131yla Pod'un durumunu kontrol edebilirsiniz. E\u011fer her \u015fey yolundaysa, Pod'unuz <code>Running<\/code> durumunda olacakt\u0131r.<\/p>\n<p>Pod'unuzun loglar\u0131n\u0131 izleyerek uygulaman\u0131n ger\u00e7ekten \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan emin olabilirsiniz:<\/p>\n<pre><code>\nkubectl logs nodejs-web-app-pod\n    <\/pre>\n<p><\/code><\/p>\n<p>E\u011fer uygulaman\u0131z basit\u00e7e \"Merhaba Kubernetes D\u00fcnyas\u0131!\" mesaj\u0131n\u0131 g\u00f6steriyorsa, ortam de\u011fi\u015fkenlerinin ba\u015far\u0131yla enjekte edildi\u011fini ve uygulaman\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6rmelisiniz.<\/p>\n<div class=\"expert-tip\">\n        Uzman \u0130pucu: Uygulaman\u0131z\u0131n yap\u0131land\u0131rma dosyalar\u0131n\u0131 Pod i\u00e7ine ConfigMap olarak enjekte etmek, hassas olmayan veriler i\u00e7in esneklik ve s\u00fcr\u00fcm kontrol\u00fc sa\u011flar. Hassas veriler (veritaban\u0131 \u015fifreleri gibi) i\u00e7in ise Secret'lar\u0131 kullanmal\u0131s\u0131n\u0131z. Bu sayede uygulama kodunu de\u011fi\u015ftirmeden yap\u0131land\u0131rmalar\u0131 g\u00fcncelleyebilirsiniz.\n    <\/div>\n<p>Bu ger\u00e7ek d\u00fcnya senaryosu, Pod'lar\u0131n sadece bir konteyneri \u00e7al\u0131\u015ft\u0131rmakla kalmay\u0131p, ayn\u0131 zamanda uygulaman\u0131n ihtiya\u00e7 duydu\u011fu ortam\u0131 (ortam de\u011fi\u015fkenleri, kaynaklar) nas\u0131l sa\u011flad\u0131\u011f\u0131n\u0131 ve ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc nas\u0131l y\u00f6netti\u011fini g\u00f6stermektedir. Bu sayede, daha karma\u015f\u0131k mikro hizmet mimarilerini olu\u015fturmak i\u00e7in sa\u011flam bir temel olu\u015fturabilirsiniz.<\/p>\n<h2>Geli\u015fmi\u015f Pod Yap\u0131land\u0131rmalar\u0131 ve \u0130pu\u00e7lar\u0131: Kaynak Y\u00f6netimi ve A\u011f<\/h2>\n<p>Temel Pod olu\u015fturma ve y\u00f6netme bilgisine sahip olduktan sonra, Pod'lar\u0131n\u0131z\u0131n performans\u0131n\u0131, g\u00fcvenli\u011fini ve kararl\u0131l\u0131\u011f\u0131n\u0131 art\u0131racak daha geli\u015fmi\u015f yap\u0131land\u0131rmalar\u0131 ke\u015ffedelim. \u00d6zellikle kaynak y\u00f6netimi ve a\u011f ayarlar\u0131, b\u00fcy\u00fck \u00f6l\u00e7ekli ve kritik uygulamalar i\u00e7in hayati \u00f6neme sahiptir. Bu b\u00f6l\u00fcmde, Pod'lar\u0131n\u0131zdan en iyi verimi alman\u0131za yard\u0131mc\u0131 olacak baz\u0131 ipu\u00e7lar\u0131na ve yap\u0131land\u0131rma \u00f6rneklerine de\u011finece\u011fiz.<\/p>\n<h3>Kaynak \u0130stekleri ve Limitleri (Resource Requests & Limits)<\/h3>\n<p>Daha \u00f6nce Node.js \u00f6rne\u011finde k\u0131saca de\u011findi\u011fimiz kaynak istekleri ve limitleri, k\u00fcmenizin sa\u011fl\u0131\u011f\u0131 ve Pod'lar\u0131n\u0131z\u0131n \u00f6ng\u00f6r\u00fclebilir performans\u0131 i\u00e7in kritik bir \u00f6neme sahiptir. Do\u011fru yap\u0131land\u0131r\u0131ld\u0131\u011f\u0131nda:<\/p>\n<ul>\n<li><strong>Kaynak \u0130stekleri (<code>requests<\/code>):<\/strong> Pod'unuzun \u00e7al\u0131\u015fmas\u0131 i\u00e7in garanti edilen minimum kaynak miktar\u0131d\u0131r (CPU ve bellek). Kubernetes zamanlay\u0131c\u0131s\u0131, bir Pod'u bir d\u00fc\u011f\u00fcme yerle\u015ftirirken bu istekleri dikkate al\u0131r. E\u011fer d\u00fc\u011f\u00fcmde istenen kaynaklar yoksa, Pod <code>Pending<\/code> durumunda kalabilir.\n<ul>\n<li><strong>CPU:<\/strong> \"m\" (millicores) birimiyle ifade edilir. <code>250m<\/code>, 0.25 CPU \u00e7ekirde\u011fi anlam\u0131na gelir.<\/li>\n<li><strong>Bellek:<\/strong> \"Mi\" (mebibytes) veya \"Gi\" (gibibytes) birimiyle ifade edilir. <code>64Mi<\/code>, 64 mebibytes bellek anlam\u0131na gelir.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Kaynak Limitleri (<code>limits<\/code>):<\/strong> Pod'unuzun kullanabilece\u011fi maksimum kaynak miktar\u0131d\u0131r.\n<ul>\n<li>CPU limiti a\u015f\u0131l\u0131rsa, konteyner k\u0131s\u0131tlan\u0131r (throttling).<\/li>\n<li>Bellek limiti a\u015f\u0131l\u0131rsa, konteyner sonland\u0131r\u0131l\u0131r (OOMKilled - Out Of Memory Killed).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<pre><code>\nresources:\n  requests:\n    memory: \"128Mi\"\n    cpu: \"500m\"\n  limits:\n    memory: \"256Mi\"\n    cpu: \"1000m\" # veya \"1\" (1 CPU \u00e7ekirde\u011fi)\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu ayarlar, hem uygulaman\u0131z\u0131n performans\u0131n\u0131 garanti alt\u0131na al\u0131r hem de k\u00fcmedeki kaynaklar\u0131n adil bir \u015fekilde da\u011f\u0131t\u0131lmas\u0131n\u0131 sa\u011flar. Yanl\u0131\u015f kaynak limitleri, performans d\u00fc\u015f\u00fc\u015flerine veya uygulaman\u0131z\u0131n beklenmedik \u015fekilde \u00e7\u00f6kmesine yol a\u00e7abilir.<\/p>\n<div class=\"pod-info-card\">\n<h3>Kaynak Y\u00f6netimi \u0130pu\u00e7lar\u0131<\/h3>\n<p>Pod'unuz i\u00e7in CPU ve bellek kaynaklar\u0131n\u0131 do\u011fru belirlemek, k\u00fcmenizin istikrarl\u0131 \u00e7al\u0131\u015fmas\u0131 i\u00e7in kritik \u00f6neme sahiptir. Uygulaman\u0131z\u0131n ger\u00e7ek d\u00fcnya y\u00fck\u00fc alt\u0131nda ne kadar kaynak t\u00fcketti\u011fini g\u00f6zlemlemek i\u00e7in izleme ara\u00e7lar\u0131 kullan\u0131n ve buna g\u00f6re ayarlamalar yap\u0131n.<\/p>\n<\/p><\/div>\n<h3>Service Account: Pod G\u00fcvenli\u011fi<\/h3>\n<p>Her Pod, varsay\u0131lan olarak bir Service Account'a atan\u0131r. Bu Service Account, Pod i\u00e7indeki s\u00fcre\u00e7lerin Kubernetes API ile nas\u0131l etkile\u015fim kurabilece\u011fini tan\u0131mlar. Uygulaman\u0131z\u0131n Kubernetes API ile etkile\u015fime girmesi gerekiyorsa (\u00f6rne\u011fin, di\u011fer Pod'lar\u0131 ke\u015ffetmek veya bir ConfigMap'i okumak i\u00e7in), uygun RBAC (Role-Based Access Control) izinlerine sahip \u00f6zel bir Service Account olu\u015fturman\u0131z ve Pod'unuza ataman\u0131z gerekir. Bu, g\u00fcvenlik a\u00e7\u0131s\u0131ndan \"en az ayr\u0131cal\u0131k\" ilkesini uygulamak i\u00e7in \u00f6nemlidir.<\/p>\n<pre><code>\nspec:\n  serviceAccountName: benim-ozel-service-hesabim\n  containers:\n  - name: ...\n    <\/pre>\n<p><\/code><\/p>\n<h3>Node Selector ve Affinity\/Anti-Affinity: Pod Zamanlama Kontrol\u00fc<\/h3>\n<p>Bazen Pod'lar\u0131n\u0131z\u0131n belirli \u00f6zelliklere sahip d\u00fc\u011f\u00fcmlerde (node) \u00e7al\u0131\u015fmas\u0131n\u0131 isteyebilirsiniz. \u00d6rne\u011fin, GPU'lu d\u00fc\u011f\u00fcmlerde makine \u00f6\u011frenimi Pod'lar\u0131 veya belirli bir b\u00f6lgedeki d\u00fc\u011f\u00fcmlerde veritaban\u0131 Pod'lar\u0131. Kubernetes, Pod zamanlamas\u0131n\u0131 kontrol etmek i\u00e7in \u00e7e\u015fitli mekanizmalar sunar:<\/p>\n<ul>\n<li><strong>Node Selector:<\/strong> Basit ve do\u011frudan bir yakla\u015f\u0131md\u0131r. Pod'unuzu belirli etiketlere sahip d\u00fc\u011f\u00fcmlerde \u00e7al\u0131\u015ft\u0131r\u0131r.\n<pre><code>\nspec:\n  nodeSelector:\n    disktype: ssd\n  containers:\n  - name: ...\n            <\/pre>\n<p><\/code>\n        <\/li>\n<li><strong>Node Affinity\/Anti-Affinity:<\/strong> Daha esnek ve geli\u015fmi\u015f zamanlama kurallar\u0131 tan\u0131mlaman\u0131z\u0131 sa\u011flar. \"Tercih etti\u011fim d\u00fc\u011f\u00fcmler\" (<code>preferredDuringSchedulingIgnoredDuringExecution<\/code>) veya \"kesinlikle bu d\u00fc\u011f\u00fcmlerde \u00e7al\u0131\u015f\" (<code>requiredDuringSchedulingIgnoredDuringExecution<\/code>) gibi kurallar belirleyebilirsiniz. Anti-affinity ise Pod'lar\u0131n belirli ko\u015fullar\u0131 sa\u011flayan d\u00fc\u011f\u00fcmlerde <em>\u00e7al\u0131\u015fmamas\u0131n\u0131<\/em> veya belirli di\u011fer Pod'larla <em>ayn\u0131 d\u00fc\u011f\u00fcmde olmamas\u0131n\u0131<\/em> sa\u011flar. Bu, y\u00fcksek eri\u015filebilirlik ve performans i\u00e7in \u00f6nemlidir.<\/li>\n<\/ul>\n<h3>Mobil Uyumlu HTML \u00d6rne\u011fi (CSS Media Query)<\/h3>\n<p>Makale i\u00e7inde interaktif veya bilgi kutular\u0131 gibi \u00f6\u011feler kulland\u0131\u011f\u0131n\u0131zda, bunlar\u0131n farkl\u0131 ekran boyutlar\u0131nda d\u00fczg\u00fcn g\u00f6r\u00fcnmesi \u00f6nemlidir. A\u015fa\u011f\u0131daki CSS \u00f6rne\u011fi, bu makalede kulland\u0131\u011f\u0131m\u0131z <code>.pod-info-card<\/code> s\u0131n\u0131f\u0131 i\u00e7in mobil uyumlulu\u011fu nas\u0131l sa\u011flayabilece\u011finizi g\u00f6sterir:<\/p>\n<pre><code class=\"language-html\">\n<style>\n  \/* Varsay\u0131lan stil: B\u00fcy\u00fck ekranlar i\u00e7in *\/\n  .pod-info-card {\n    border: 1px solid #ccc;\n    padding: 20px;\n    margin-bottom: 20px;\n    background-color: #f9f9f9;\n    border-left: 5px solid #007bff;\n    border-radius: 8px;\n    box-shadow: 0 2px 5px rgba(0,0,0,0.1);\n  }\n  .pod-info-card h3 {\n    color: #007bff;\n    margin-top: 0;\n  }\n  .pod-info-card p {\n    font-size: 1rem;\n    line-height: 1.6;\n  }\n\n  \/* Mobil cihazlar i\u00e7in stil (768px geni\u015fli\u011fin alt\u0131) *\/\n  @media (max-width: 768px) {\n    .pod-info-card {\n      padding: 15px;\n      margin-bottom: 15px;\n      border-left-width: 3px; \/* Daha k\u00fc\u00e7\u00fck mobil ekranlarda border daha ince olabilir *\/\n      border-radius: 5px;\n    }\n    .pod-info-card h3 {\n      font-size: 1.2rem;\n    }\n    .pod-info-card p {\n      font-size: 0.9rem;\n    }\n  }\n\n  \/* \u00c7ok k\u00fc\u00e7\u00fck cihazlar i\u00e7in stil (480px geni\u015fli\u011fin alt\u0131) *\/\n  @media (max-width: 480px) {\n    .pod-info-card {\n      padding: 10px;\n      margin-bottom: 10px;\n      border-left-width: 2px;\n    }\n    .pod-info-card h3 {\n      font-size: 1rem;\n    }\n    .pod-info-card p {\n      font-size: 0.85rem;\n    }\n  }\n<\/style>\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu CSS medya sorgular\u0131, sayfan\u0131n g\u00f6r\u00fcnt\u00fclenen geni\u015fli\u011fine ba\u011fl\u0131 olarak farkl\u0131 stiller uygulayarak, i\u00e7eri\u011fin her cihazda okunabilir ve estetik kalmas\u0131n\u0131 sa\u011flar. Mobil uyumluluk, g\u00fcn\u00fcm\u00fcz web standartlar\u0131nda vazge\u00e7ilmez bir \u00f6zelliktir.<\/p>\n<p>Bu geli\u015fmi\u015f yap\u0131land\u0131rmalar, Pod'lar\u0131n\u0131z\u0131n daha verimli, g\u00fcvenli ve esnek olmas\u0131n\u0131 sa\u011flar. Kubernetes'in sundu\u011fu t\u00fcm bu yetenekleri kullanarak, uygulamalar\u0131n\u0131z i\u00e7in sa\u011flam ve optimize edilmi\u015f bir temel olu\u015fturabilirsiniz.<\/p>\n<h2>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h2>\n<p>Bu makalede Pod olu\u015fturman\u0131n temellerini ve baz\u0131 geli\u015fmi\u015f yap\u0131land\u0131rmalar\u0131n\u0131 ele ald\u0131k. Ancak Kubernetes'e yeni ba\u015flayanlar\u0131n akl\u0131na tak\u0131lan baz\u0131 genel sorular olabilir. \u0130\u015fte Pod'larla ilgili en s\u0131k kar\u015f\u0131la\u015f\u0131lan sorulardan baz\u0131lar\u0131:<\/p>\n<h3>1. Pod'lar neden ge\u00e7ici (ephemeral) yap\u0131lard\u0131r?<\/h3>\n<p>Pod'lar, modern, bulut yerlisi uygulama geli\u015ftirme paradigmalar\u0131na uygun olarak tasarlanm\u0131\u015ft\u0131r. Bu paradigma, uygulamalar\u0131n durum bilgisi i\u00e7ermeyen (stateless) ve at\u0131labilir (disposable) olmas\u0131n\u0131 te\u015fvik eder. Bir Pod \u00f6ld\u00fc\u011f\u00fcnde (\u00f6rne\u011fin bir hata nedeniyle veya bir d\u00fc\u011f\u00fcm \u00e7\u00f6kmesiyle), Kubernetes taraf\u0131ndan otomatik olarak yeniden olu\u015fturulur. Ancak bu yeniden olu\u015fturma, yeni bir IP adresi ve temiz bir dosya sistemi ile tamamen yeni bir Pod anlam\u0131na gelir. Bu ge\u00e7icilik, \u00f6l\u00e7eklenebilirli\u011fi ve otomatik kendi kendine iyile\u015fmeyi kolayla\u015ft\u0131r\u0131r. Kal\u0131c\u0131 verilere ihtiya\u00e7 duyan uygulamalar i\u00e7in Pod'lar genellikle Persistent Volume (Kal\u0131c\u0131 Depolama Birimi) ile birlikte kullan\u0131l\u0131r, b\u00f6ylece Pod'lar de\u011fi\u015fse bile veriler korunur.<\/p>\n<h3>2. Bir Pod i\u00e7indeki kapsay\u0131c\u0131lar nas\u0131l ileti\u015fim kurar?<\/h3>\n<p>Bir Pod i\u00e7indeki t\u00fcm kapsay\u0131c\u0131lar ayn\u0131 a\u011f ad alan\u0131n\u0131 (network namespace) payla\u015f\u0131r. Bu, onlar\u0131n <code>localhost<\/code> \u00fczerinden birbirleriyle ileti\u015fim kurabilece\u011fi anlam\u0131na gelir. Her kapsay\u0131c\u0131, Pod'un payla\u015ft\u0131\u011f\u0131 IP adresini ve port alan\u0131n\u0131 kullanabilir. \u00d6rne\u011fin, bir web sunucusu kapsay\u0131c\u0131s\u0131 8080 portunu dinlerken, ayn\u0131 Pod i\u00e7indeki bir sidecar kapsay\u0131c\u0131s\u0131 da 8081 portunu dinleyebilir ve web sunucusu <code>localhost:8081<\/code> \u00fczerinden bu sidecar ile ileti\u015fim kurabilir. Bu yak\u0131nl\u0131k ve payla\u015f\u0131lan a\u011f, s\u0131k\u0131 bir \u015fekilde birlikte \u00e7al\u0131\u015fan s\u00fcre\u00e7ler i\u00e7in idealdir.<\/p>\n<h3>3. Pod'lar ve Deployment'lar aras\u0131ndaki fark nedir?<\/h3>\n<p>Pod, Kubernetes'in da\u011f\u0131tabilece\u011fi en k\u00fc\u00e7\u00fck birimdir ve tek bir uygulama \u00f6rne\u011fini temsil eder. Deployment ise, Pod'lar\u0131 y\u00f6netmek i\u00e7in kullan\u0131lan daha \u00fcst d\u00fczey bir soyutlamad\u0131r. Bir Deployment, bir uygulama i\u00e7in ka\u00e7 adet \u00f6zde\u015f Pod kopyas\u0131n\u0131n (replica) \u00e7al\u0131\u015fmas\u0131 gerekti\u011fini, Pod'lar\u0131n nas\u0131l g\u00fcncellenece\u011fini (\u00f6rne\u011fin s\u0131f\u0131r kesinti ile yuvarlanan g\u00fcncellemeler - rolling updates) ve e\u011fer bir Pod ar\u0131zalan\u0131rsa nas\u0131l otomatik olarak yeniden olu\u015fturulaca\u011f\u0131n\u0131 tan\u0131mlar. Yani, do\u011frudan Pod olu\u015fturmak yerine, genellikle bir Deployment olu\u015fturarak Pod'lar\u0131n\u0131z\u0131n kararl\u0131 ve y\u00f6netilebilir olmas\u0131n\u0131 sa\u011flars\u0131n\u0131z. Deployment'lar, uygulaman\u0131z\u0131n \u00f6l\u00e7eklenmesini ve y\u00fcksek eri\u015filebilirli\u011fini sa\u011flaman\u0131n anahtar\u0131d\u0131r.<\/p>\n<h3>4. Pod'um neden <code>Pending<\/code> durumunda kal\u0131yor?<\/h3>\n<p>Bir Pod'un <code>Pending<\/code> durumunda kalmas\u0131n\u0131n birka\u00e7 yayg\u0131n nedeni vard\u0131r:<\/p>\n<ul>\n<li><strong>Kaynak Yetersizli\u011fi:<\/strong> Pod'un istedi\u011fi CPU veya bellek kaynaklar\u0131na sahip uygun bir d\u00fc\u011f\u00fcm k\u00fcmede bulunmuyor olabilir. <code>kubectl describe pod <pod-ad\u0131><\/code> komutu ile olaylar\u0131 kontrol edin.<\/li>\n<li><strong>\u0130maj \u00c7ekme Sorunlar\u0131:<\/strong> Konteyner imaj\u0131 mevcut de\u011fil, imaj ad\u0131 yanl\u0131\u015f yaz\u0131lm\u0131\u015f, imaj deposuna eri\u015fim izni yok veya imaj\u0131n \u00e7ekilmesi \u00e7ok uzun s\u00fcr\u00fcyor olabilir.<\/li>\n<li><strong>D\u00fc\u011f\u00fcm Problemleri:<\/strong> Bir d\u00fc\u011f\u00fcm\u00fcn disk alan\u0131 dolu olabilir, a\u011f ba\u011flant\u0131s\u0131 kesilmi\u015f olabilir veya Kubelet (d\u00fc\u011f\u00fcmdeki Kubernetes arac\u0131s\u0131) d\u00fczg\u00fcn \u00e7al\u0131\u015fm\u0131yor olabilir.<\/li>\n<li><strong>A\u011f Yap\u0131land\u0131rma Sorunlar\u0131:<\/strong> CNI (Container Network Interface) eklentisinde bir sorun olabilir.<\/li>\n<\/ul>\n<p>Bu sorunlar\u0131 te\u015fhis etmek i\u00e7in genellikle <code>kubectl describe pod <pod-ad\u0131><\/code> ve <code>kubectl logs <pod-ad\u0131><\/code> komutlar\u0131 size yol g\u00f6sterecektir.<\/p>\n<h3>5. Pod'uma nas\u0131l harici eri\u015fim sa\u011flar\u0131m?<\/h3>\n<p>Pod'lar varsay\u0131lan olarak k\u00fcme i\u00e7inde kendilerine atanm\u0131\u015f bir IP adresine sahiptir ve d\u0131\u015far\u0131dan do\u011frudan eri\u015filemezler (g\u00fcvenlik ve esneklik nedenleriyle). Bir Pod'a veya Pod grubuna d\u0131\u015far\u0131dan eri\u015fim sa\u011flamak i\u00e7in Kubernetes Service (Hizmet) nesnelerini kullan\u0131rs\u0131n\u0131z. En yayg\u0131n Service t\u00fcrleri \u015funlard\u0131r:<\/p>\n<ul>\n<li><strong>ClusterIP:<\/strong> K\u00fcme i\u00e7inde bir Pod grubuna (label selector ile belirlenen) dahili bir IP adresi atar. K\u00fcme i\u00e7indeki di\u011fer Pod'lar bu IP \u00fczerinden eri\u015febilir.<\/li>\n<li><strong>NodePort:<\/strong> ClusterIP'ye ek olarak, her d\u00fc\u011f\u00fcmde belirli bir portu a\u00e7ar ve bu porttan gelen trafi\u011fi Service'e y\u00f6nlendirir. B\u00f6ylece, <code><d\u00fc\u011f\u00fcm-IP>:<nodeport><\/code> \u00fczerinden d\u0131\u015far\u0131dan eri\u015filebilir.<\/li>\n<li><strong>LoadBalancer:<\/strong> Genellikle bulut sa\u011flay\u0131c\u0131lar\u0131 taraf\u0131ndan desteklenir (AWS ELB, GCP Load Balancer vb.). Uygulaman\u0131z i\u00e7in harici bir y\u00fck dengeleyici provision eder ve gelen trafi\u011fi Service'e y\u00f6nlendirir.<\/li>\n<li><strong>Ingress:<\/strong> Uygulama katman\u0131nda (HTTP\/HTTPS) trafik y\u00f6nlendirmesi i\u00e7in kullan\u0131l\u0131r. Birden fazla Service'e tek bir d\u0131\u015f IP adresi \u00fczerinden karma\u015f\u0131k y\u00f6nlendirme kurallar\u0131 uygulaman\u0131z\u0131 sa\u011flar.<\/li>\n<\/ul>\n<p>Uygulaman\u0131z\u0131n t\u00fcr\u00fcne ve ihtiya\u00e7lar\u0131na g\u00f6re uygun Service tipini se\u00e7erek Pod'lar\u0131n\u0131za d\u0131\u015far\u0131dan eri\u015fim sa\u011flayabilirsiniz.<\/p>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Kubernetes ortam\u0131nda uygulamalar\u0131n\u0131z\u0131 ba\u015far\u0131yla da\u011f\u0131tmak i\u00e7in Pod&#8217;lar\u0131n temel s\u00f6zdizimini anlamak kritik \u00f6neme sahiptir. Bu rehberde, bir Pod&#8217;u s\u0131f\u0131rdan&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-35266","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>Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi<\/title>\n<meta name=\"description\" content=\"Kubernetes ortam\u0131nda uygulamalar\u0131n\u0131z\u0131 ba\u015far\u0131yla da\u011f\u0131tmak i\u00e7in Pod&#039;lar\u0131n temel s\u00f6zdizimini anlamak kritik \u00f6neme sahiptir. Bu rehberde, bir Pod&#039;u s\u0131f\u0131rdan nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131, ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc nas\u0131l y\u00f6netece\u011finizi ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz.\" \/>\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\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi\" \/>\n<meta property=\"og:description\" content=\"Kubernetes ortam\u0131nda uygulamalar\u0131n\u0131z\u0131 ba\u015far\u0131yla da\u011f\u0131tmak i\u00e7in Pod&#039;lar\u0131n temel s\u00f6zdizimini anlamak kritik \u00f6neme sahiptir. Bu rehberde, bir Pod&#039;u s\u0131f\u0131rdan nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131, ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc nas\u0131l y\u00f6netece\u011finizi ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-27T14:01:04+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=\"23 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi\",\"datePublished\":\"2025-11-27T14:01:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/\"},\"wordCount\":4481,\"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\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/\",\"name\":\"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-27T14:01:04+00:00\",\"description\":\"Kubernetes ortam\u0131nda uygulamalar\u0131n\u0131z\u0131 ba\u015far\u0131yla da\u011f\u0131tmak i\u00e7in Pod'lar\u0131n temel s\u00f6zdizimini anlamak kritik \u00f6neme sahiptir. Bu rehberde, bir Pod'u s\u0131f\u0131rdan nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131, ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc nas\u0131l y\u00f6netece\u011finizi ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi\"}]},{\"@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":"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi","description":"Kubernetes ortam\u0131nda uygulamalar\u0131n\u0131z\u0131 ba\u015far\u0131yla da\u011f\u0131tmak i\u00e7in Pod'lar\u0131n temel s\u00f6zdizimini anlamak kritik \u00f6neme sahiptir. Bu rehberde, bir Pod'u s\u0131f\u0131rdan nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131, ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc nas\u0131l y\u00f6netece\u011finizi ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz.","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\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi","og_description":"Kubernetes ortam\u0131nda uygulamalar\u0131n\u0131z\u0131 ba\u015far\u0131yla da\u011f\u0131tmak i\u00e7in Pod'lar\u0131n temel s\u00f6zdizimini anlamak kritik \u00f6neme sahiptir. Bu rehberde, bir Pod'u s\u0131f\u0131rdan nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131, ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc nas\u0131l y\u00f6netece\u011finizi ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz.","og_url":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-27T14:01:04+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"23 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi","datePublished":"2025-11-27T14:01:04+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/"},"wordCount":4481,"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\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/","name":"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-27T14:01:04+00:00","description":"Kubernetes ortam\u0131nda uygulamalar\u0131n\u0131z\u0131 ba\u015far\u0131yla da\u011f\u0131tmak i\u00e7in Pod'lar\u0131n temel s\u00f6zdizimini anlamak kritik \u00f6neme sahiptir. Bu rehberde, bir Pod'u s\u0131f\u0131rdan nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131, ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fc nas\u0131l y\u00f6netece\u011finizi ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m ke\u015ffedeceksiniz.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-pod-olusturmanin-temelleri-basit-sozdizimi-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes Pod Olu\u015fturman\u0131n Temelleri: Basit S\u00f6zdizimi Rehberi"}]},{"@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\/35266","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=35266"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/35266\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=35266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=35266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=35266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}