{"id":37129,"date":"2025-12-27T20:40:46","date_gmt":"2025-12-27T17:40:46","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37129"},"modified":"2025-12-27T20:40:46","modified_gmt":"2025-12-27T17:40:46","slug":"kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/","title":{"rendered":"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma"},"content":{"rendered":"<p><body><\/p>\n<h2>Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma<\/h2>\n<p>Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131 ve y\u00f6netiminde end\u00fcstri standard\u0131 haline gelmi\u015f g\u00fc\u00e7l\u00fc bir konteyner orkestrasyon platformudur. Bu platformun en kritik yeteneklerinden biri, de\u011fi\u015fen i\u015f y\u00fcklerine uyum sa\u011flayabilen dinamik \u00f6l\u00e7ekleme yetene\u011fidir. Uygulamalar\u0131n\u0131z\u0131n performans\u0131n\u0131 ve kullan\u0131labilirli\u011fini art\u0131rman\u0131n yan\u0131 s\u0131ra, gereksiz kaynak t\u00fcketimini \u00f6nleyerek maliyetleri optimize etmek i\u00e7in otomatik \u00f6l\u00e7ekleme vazge\u00e7ilmezdir. Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyici (Horizontal Pod Autoscaler &#8211; HPA), bu otomatik \u00f6l\u00e7ekleme stratejilerinin temel ta\u015flar\u0131ndan biridir. HPA, i\u015f y\u00fck\u00fcne ba\u011fl\u0131 olarak pod replikalar\u0131n\u0131n say\u0131s\u0131n\u0131 otomatik olarak art\u0131r\u0131p azaltarak uygulamalar\u0131n esnekli\u011fini ve verimlili\u011fini sa\u011flar. Bu makalede, HPA&#8217;n\u0131n ne oldu\u011funu, nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve \u00f6zellikle metrik verilerini sa\u011flamak i\u00e7in kritik bir bile\u015fen olan Metrics Server ile nas\u0131l yap\u0131land\u0131r\u0131laca\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde inceleyece\u011fiz.<\/p>\n<h3>Kubernetes&#8217;te \u00d6l\u00e7ekleme Kavramlar\u0131<\/h3>\n<p>Kubernetes, farkl\u0131 \u00f6l\u00e7ekleme stratejileri sunarak \u00e7e\u015fitli senaryolara uyum sa\u011flar. Temel olarak iki ana otomatik \u00f6l\u00e7ekleme t\u00fcr\u00fc vard\u0131r:<\/p>\n<h4>Dikey Pod Otomatik \u00d6l\u00e7ekleyici (Vertical Pod Autoscaler &#8211; VPA)<\/h4>\n<p>VPA, bir pod&#8217;un CPU ve bellek gibi kaynak gereksinimlerini otomatik olarak ayarlar. Bu, bir pod&#8217;un daha fazla veya daha az kayna\u011fa ihtiya\u00e7 duydu\u011funda, pod&#8217;u yeniden ba\u015flatarak veya kaynak tan\u0131mlar\u0131n\u0131 g\u00fcncelleyerek yap\u0131l\u0131r. VPA, genellikle sabit bir pod say\u0131s\u0131yla \u00e7al\u0131\u015f\u0131rken, pod ba\u015f\u0131na en uygun kaynak tahsisini sa\u011flamak i\u00e7in kullan\u0131l\u0131r. Ancak, ayn\u0131 anda hem HPA hem de VPA&#8217;y\u0131 CPU veya bellek gibi \u00e7ak\u0131\u015fan metrikler i\u00e7in kullanmak, beklenmedik davran\u0131\u015flara yol a\u00e7abilir.<\/p>\n<h4>Yatay Pod Otomatik \u00d6l\u00e7ekleyici (Horizontal Pod Autoscaler &#8211; HPA)<\/h4>\n<p>HPA, bir uygulaman\u0131n pod say\u0131s\u0131n\u0131, tan\u0131mlanan metrik hedeflerine g\u00f6re otomatik olarak art\u0131r\u0131p azalt\u0131r. \u00d6rne\u011fin, bir uygulaman\u0131n CPU kullan\u0131m\u0131 belirli bir e\u015fi\u011fi a\u015ft\u0131\u011f\u0131nda, HPA daha fazla pod ba\u015flatarak y\u00fck\u00fc da\u011f\u0131t\u0131r. CPU kullan\u0131m\u0131 d\u00fc\u015ft\u00fc\u011f\u00fcnde ise gereksiz pod&#8217;lar\u0131 sonland\u0131r\u0131r. Bu yakla\u015f\u0131m, uygulaman\u0131n de\u011fi\u015fen taleplere an\u0131nda uyum sa\u011flamas\u0131na olanak tan\u0131r ve b\u00f6ylece hem performans hem de maliyet etkinli\u011fi optimize edilir. Makalemizin odak noktas\u0131 HPA olacakt\u0131r.<\/p>\n<h3>Horizontal Pod Autoscaler (HPA) Nedir ve Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h3>\n<p>HPA, Kubernetes&#8217;in bir kontrol d\u00fczlemi bile\u015feni olan <code>kube-controller-manager<\/code> taraf\u0131ndan y\u00f6netilen bir API kayna\u011f\u0131d\u0131r. Temel amac\u0131, bir Deployment, ReplicaSet, StatefulSet veya di\u011fer \u00f6l\u00e7eklenebilir kaynaklar\u0131n pod replikas\u0131 say\u0131s\u0131n\u0131 otomatik olarak ayarlamakt\u0131r.<\/p>\n<h4>HPA Kontrol D\u00f6ng\u00fcs\u00fc<\/h4>\n<p>HPA, belirli aral\u0131klarla (varsay\u0131lan olarak 15 saniyede bir) \u00e7al\u0131\u015f\u0131r ve a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izler:<br \/>\n1.  <strong>Metrik Toplama:<\/strong> HPA, hedefledi\u011fi kaynak (\u00f6rne\u011fin bir Deployment) ile ili\u015fkili pod&#8217;lar\u0131n metriklerini toplar. Bu metrikler genellikle CPU ve bellek kullan\u0131m\u0131 gibi temel kaynak metrikleri veya \u00f6zel metrikler olabilir. Temel metrikler i\u00e7in Metrics Server&#8217;dan, \u00f6zel metrikler i\u00e7in ise Custom Metrics API&#8217;den veya External Metrics API&#8217;den veri al\u0131r.<br \/>\n2.  <strong>Hedef Analizi:<\/strong> Toplanan metrikler, HPA tan\u0131m\u0131nda belirtilen hedeflerle kar\u015f\u0131la\u015ft\u0131r\u0131l\u0131r. \u00d6rne\u011fin, pod&#8217;lar\u0131n ortalama CPU kullan\u0131m\u0131 %50&#8217;nin \u00fczerine \u00e7\u0131kt\u0131\u011f\u0131nda \u00f6l\u00e7ekleme tetiklenir.<br \/>\n3.  <strong>\u00d6l\u00e7ekleme Karar\u0131:<\/strong> HPA, mevcut pod say\u0131s\u0131 ile hedeflenen metrik de\u011ferine ula\u015fmak i\u00e7in gereken pod say\u0131s\u0131 aras\u0131ndaki fark\u0131 hesaplar. Bu hesaplama sonucunda, pod say\u0131s\u0131n\u0131n art\u0131r\u0131lmas\u0131 (scale-out) veya azalt\u0131lmas\u0131 (scale-in) gerekti\u011fine karar verir.<br \/>\n4.  <strong>Kaynak G\u00fcncelleme:<\/strong> HPA, belirlenen \u00f6l\u00e7ekleme karar\u0131na g\u00f6re hedef kayna\u011f\u0131n (\u00f6rne\u011fin Deployment) replika say\u0131s\u0131n\u0131 g\u00fcnceller. Deployment, bu de\u011fi\u015fikli\u011fi alg\u0131layarak yeni pod&#8217;lar\u0131 ba\u015flat\u0131r veya mevcut pod&#8217;lar\u0131 sonland\u0131r\u0131r.<\/p>\n<h4>\u00d6l\u00e7ekleme Algoritmalar\u0131<\/h4>\n<p>HPA, temel olarak pod&#8217;lar\u0131n ortalama CPU veya bellek kullan\u0131m\u0131n\u0131 hedefler. Ancak, Kubernetes v1.6&#8217;dan itibaren \u00f6zel metrikleri (Custom Metrics API arac\u0131l\u0131\u011f\u0131yla) ve v1.10&#8217;dan itibaren harici metrikleri (External Metrics API arac\u0131l\u0131\u011f\u0131yla) de destekleyerek \u00e7ok daha esnek \u00f6l\u00e7ekleme senaryolar\u0131na olanak tan\u0131r.<\/p>\n<h4>\u00d6l\u00e7ekleme K\u0131s\u0131tlamalar\u0131<\/h4>\n<p>Her HPA tan\u0131m\u0131, <code>minReplicas<\/code> ve <code>maxReplicas<\/code> alanlar\u0131n\u0131 i\u00e7erir. Bu alanlar, HPA&#8217;n\u0131n pod say\u0131s\u0131n\u0131 hangi aral\u0131kta tutabilece\u011fini belirler. Bu sayede, uygulaman\u0131n performans\u0131n\u0131n belirli bir seviyenin alt\u0131na d\u00fc\u015fmesi veya gereksiz yere \u00e7ok fazla kaynak t\u00fcketmesi engellenir.<\/p>\n<h3>Metrics Server Nedir ve Neden Gereklidir?<\/h3>\n<p>Metrics Server, Kubernetes k\u00fcmesi i\u00e7indeki d\u00fc\u011f\u00fcmlerden ve pod&#8217;lardan metrik verilerini toplayan ve bu verileri Kubernetes API arac\u0131l\u0131\u011f\u0131yla kullan\u0131ma sunan k\u00fcme \u00e7ap\u0131nda bir toplay\u0131c\u0131d\u0131r. HPA&#8217;n\u0131n temel CPU ve bellek metriklerini alabilmesi i\u00e7in Metrics Server&#8217;a mutlak suretle ihtiyac\u0131 vard\u0131r.<\/p>\n<h4>Metrics Server&#8217;\u0131n G\u00f6revleri<\/h4>\n<p>1.  <strong>Metrik Toplama:<\/strong> Her d\u00fc\u011f\u00fcmde \u00e7al\u0131\u015fan kubelet, cAdvisor arac\u0131l\u0131\u011f\u0131yla kendi d\u00fc\u011f\u00fcm\u00fcndeki ve \u00fczerindeki pod&#8217;lardaki kaynak kullan\u0131m metriklerini (CPU, bellek) toplar.<br \/>\n2.  <strong>API Sunumu:<\/strong> Metrics Server, kubelet&#8217;lerden gelen bu metrikleri toplar, i\u015fler ve <code>\/apis\/metrics.k8s.io\/v1beta1<\/code> adresinde bir API sunar.<br \/>\n3.  <strong>HPA&#8217;ya Veri Sa\u011flama:<\/strong> HPA, \u00f6l\u00e7ekleme kararlar\u0131 i\u00e7in bu API \u00fczerinden metrik verilerini sorgular. <code>kubectl top nodes<\/code> ve <code>kubectl top pods<\/code> gibi komutlar da asl\u0131nda Metrics Server&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 verileri kullan\u0131r.<\/p>\n<h4>Metrik Ak\u0131\u015f\u0131<\/h4>\n<p>Metriklerin ak\u0131\u015f\u0131 \u015fu \u015fekildedir:<br \/>\n<code>cAdvisor (her d\u00fc\u011f\u00fcmde kubelet i\u00e7inde \u00e7al\u0131\u015f\u0131r) -> Kubelet Summary API -> Metrics Server -> Kube-API Server -> HPA\/kubectl<\/code><\/p>\n<p>Metrics Server&#8217;\u0131n varl\u0131\u011f\u0131, HPA&#8217;n\u0131n do\u011fru ve g\u00fcncel metrik verilerine eri\u015fmesini sa\u011flar. E\u011fer Metrics Server k\u00fcmede kurulu de\u011filse veya d\u00fczg\u00fcn \u00e7al\u0131\u015fm\u0131yorsa, HPA temel CPU\/bellek metriklerini okuyamaz ve \u00f6l\u00e7ekleme yapamaz.<\/p>\n<h3>HPA ve Metrics Server \u0130li\u015fkisi<\/h3>\n<p>HPA, \u00f6l\u00e7ekleme kararlar\u0131n\u0131 vermek i\u00e7in gerekli olan CPU ve bellek metriklerini do\u011frudan Kubernetes API sunucusundan ister. Ancak, API sunucusu bu metrikleri kendisi toplamaz; bunun yerine, Metrics Server taraf\u0131ndan sa\u011flanan <code>\/apis\/metrics.k8s.io<\/code> API&#8217;sini sorgulayarak bu verilere ula\u015f\u0131r. Bu nedenle, Metrics Server, HPA&#8217;n\u0131n temel metrikler \u00fczerinden otomatik \u00f6l\u00e7ekleme yapabilmesi i\u00e7in vazge\u00e7ilmez bir \u00f6nko\u015fuldur. Metrics Server olmadan, <code>kubectl top<\/code> komutlar\u0131 \u00e7al\u0131\u015fmayaca\u011f\u0131 gibi, HPA da <code>no metrics currently available<\/code> gibi hatalar vererek i\u015flevsiz kalacakt\u0131r.<\/p>\n<h3>HPA Yap\u0131land\u0131rmas\u0131: Ad\u0131m Ad\u0131m K\u0131lavuz<\/h3>\n<p>Bu b\u00f6l\u00fcmde, basit bir web uygulamas\u0131n\u0131 Metrics Server kullanarak CPU kullan\u0131m\u0131na g\u00f6re \u00f6l\u00e7eklendirmek i\u00e7in HPA&#8217;y\u0131 nas\u0131l yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 ad\u0131m ad\u0131m g\u00f6rece\u011fiz.<\/p>\n<h4>\u00d6nko\u015fullar<\/h4>\n<p>*   \u00c7al\u0131\u015f\u0131r durumda bir Kubernetes k\u00fcmesi (minikube, kind, kubeadm ile kurulmu\u015f bir k\u00fcme vb.).<br \/>\n*   <code>kubectl<\/code> komut sat\u0131r\u0131 arac\u0131 y\u00fckl\u00fc ve k\u00fcmenize ba\u011fl\u0131.<br \/>\n*   Metrics Server&#8217;\u0131n k\u00fcmenizde kurulu ve \u00e7al\u0131\u015f\u0131r durumda olmas\u0131.<\/p>\n<h4>Ad\u0131m 1: Uygulama Da\u011f\u0131tma ve Kaynak \u0130stekleri Tan\u0131mlama<\/h4>\n<p>HPA&#8217;n\u0131n CPU veya bellek kullan\u0131m\u0131na g\u00f6re \u00f6l\u00e7ekleme yapabilmesi i\u00e7in, pod&#8217;lar\u0131n\u0131z\u0131n kaynak isteklerini (requests) tan\u0131mlamas\u0131 zorunludur. HPA, bir pod&#8217;un kullan\u0131m\u0131n\u0131, tan\u0131mlanan isteklere (request) oranla y\u00fczde olarak hesaplar. E\u011fer kaynak istekleri tan\u0131mlanmam\u0131\u015fsa, HPA CPU veya bellek kullan\u0131m\u0131n\u0131 do\u011fru bir \u015fekilde de\u011ferlendiremez.<\/p>\n<p>A\u015fa\u011f\u0131da, CPU iste\u011fi 100m (0.1 CPU \u00e7ekirde\u011fi) olan basit bir Nginx uygulamas\u0131n\u0131 da\u011f\u0131tan bir Deployment ve bir Service YAML dosyas\u0131 bulunmaktad\u0131r.<\/p>\n<pre><code class=\"language-yaml\"># deployment.yaml\napiVersion: apps\/v1\nkind: Deployment\nmetadata:\n  name: hpa-demo-app\n  labels:\n    app: hpa-demo\nspec:\n  replicas: 1\n  selector:\n    matchLabels:\n      app: hpa-demo\n  template:\n    metadata:\n      labels:\n        app: hpa-demo\n    spec:\n      containers:\n      - name: hpa-demo-container\n        image: k8s.gcr.io\/hpa-example\n        ports:\n        - containerPort: 80\n        resources:\n          requests:\n            cpu: \"100m\" # HPA i\u00e7in kritik: CPU iste\u011fi tan\u0131mlanmal\u0131\n            memory: \"128Mi\"\n          limits:\n            cpu: \"200m\"\n            memory: \"256Mi\"\n---\n<h2>service.yaml<\/h2>\napiVersion: v1\nkind: Service\nmetadata:\n  name: hpa-demo-service\nspec:\n  selector:\n    app: hpa-demo\n  ports:\n    - protocol: TCP\n      port: 80\n      targetPort: 80\n  type: ClusterIP<\/code><\/pre>\n<p>Bu dosyalar\u0131 kaydedin ve k\u00fcmenize uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f deployment.yaml\nkubectl apply -f service.yaml<\/code><\/pre>\n<p>Pod&#8217;unuzun \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl get pods -l app=hpa-demo<\/code><\/pre>\n<h4>Ad\u0131m 2: Metrics Server Kurulumu ve Do\u011frulamas\u0131<\/h4>\n<p>E\u011fer k\u00fcmenizde Metrics Server kurulu de\u011filse, kurman\u0131z gerekmektedir. \u00c7o\u011fu Kubernetes da\u011f\u0131t\u0131m\u0131nda (minikube gibi) varsay\u0131lan olarak kurulu olabilir. E\u011fer kurulu de\u011filse, genellikle a\u015fa\u011f\u0131daki komutlarla kurulabilir:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f https:\/\/github.com\/kubernetes-sigs\/metrics-server\/releases\/latest\/download\/components.yaml<\/code><\/pre>\n<p>Kurulumdan sonra, Metrics Server pod&#8217;unun \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 ve metrikleri toplad\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl get pods -n kube-system -l k8s-app=metrics-server\nkubectl top nodes\nkubectl top pods -l app=hpa-demo<\/code><\/pre>\n<p>E\u011fer <code>kubectl top<\/code> komutlar\u0131 d\u00fc\u011f\u00fcm ve pod metriklerini g\u00f6steriyorsa, Metrics Server d\u00fczg\u00fcn \u00e7al\u0131\u015f\u0131yor demektir. Aksi takdirde, Metrics Server pod&#8217;unun loglar\u0131n\u0131 kontrol ederek sorunlar\u0131 gidermeniz gerekebilir.<\/p>\n<h4>Ad\u0131m 3: HPA Kayna\u011f\u0131n\u0131 Olu\u015fturma<\/h4>\n<p>\u015eimdi, da\u011f\u0131tt\u0131\u011f\u0131m\u0131z <code>hpa-demo-app<\/code> Deployment&#8217;\u0131 i\u00e7in bir HPA kayna\u011f\u0131 olu\u015ftural\u0131m. Bu HPA, pod&#8217;lar\u0131n ortalama CPU kullan\u0131m\u0131n\u0131n %50&#8217;sini hedefleyecek ve pod say\u0131s\u0131n\u0131 minimum 1, maksimum 10 aras\u0131nda tutacakt\u0131r.<\/p>\n<pre><code class=\"language-yaml\"># hpa.yaml\napiVersion: autoscaling\/v2\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: hpa-demo-hpa\nspec:\n  scaleTargetRef:\n    apiVersion: apps\/v1\n    kind: Deployment\n    name: hpa-demo-app\n  minReplicas: 1\n  maxReplicas: 10\n  metrics:\n  - type: Resource\n    resource:\n      name: cpu\n      target:\n        type: Utilization\n        averageUtilization: 50 # Pod'lar\u0131n ortalama CPU kullan\u0131m\u0131n\u0131 %50 hedefle<\/code><\/pre>\n<p>Bu HPA tan\u0131m\u0131n\u0131 kaydedin ve uygulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl apply -f hpa.yaml<\/code><\/pre>\n<h4>Ad\u0131m 4: HPA Durumunu G\u00f6zlemleme<\/h4>\n<p>HPA&#8217;n\u0131n durumunu kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">kubectl get hpa<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 \u015f\u00f6yle bir \u015feye benzeyecektir:<\/p>\n<pre><code class=\"language-\">NAME           REFERENCE                 TARGETS        MINPODS   MAXPODS   REPLICAS   AGE\nhpa-demo-hpa   Deployment\/hpa-demo-app   <unknown>\/50%   1         10        1          30s<\/code><\/pre>\n<p>Ba\u015flang\u0131\u00e7ta <code>TARGETS<\/code> s\u00fctununda <code><unknown>\/50%<\/code> g\u00f6rebilirsiniz. Bu normaldir, \u00e7\u00fcnk\u00fc HPA&#8217;n\u0131n metrikleri toplamas\u0131 ve ilk \u00f6l\u00e7ekleme karar\u0131n\u0131 vermesi birka\u00e7 saniye s\u00fcrebilir. Birka\u00e7 saniye sonra tekrar kontrol etti\u011finizde ger\u00e7ek CPU kullan\u0131m\u0131n\u0131 g\u00f6receksiniz:<\/p>\n<pre><code class=\"language-\">NAME           REFERENCE                 TARGETS   MINPODS   MAXPODS   REPLICAS   AGE\nhpa-demo-hpa   Deployment\/hpa-demo-app   0%\/50%    1         10        1          1m<\/code><\/pre>\n<p>Daha detayl\u0131 bilgi i\u00e7in <code>describe<\/code> komutunu kullan\u0131n:<\/p>\n<pre><code class=\"language-bash\">kubectl describe hpa hpa-demo-hpa<\/code><\/pre>\n<p>Bu komut, HPA&#8217;n\u0131n mevcut durumunu, olaylar\u0131 (events) ve ald\u0131\u011f\u0131 \u00f6l\u00e7ekleme kararlar\u0131n\u0131 g\u00f6sterir.<\/p>\n<h4>Ad\u0131m 5: Y\u00fck Olu\u015fturarak HPA&#8217;y\u0131 Test Etme<\/h4>\n<p>\u015eimdi, <code>hpa-demo-app<\/code> pod&#8217;una y\u00fck bindirerek HPA&#8217;n\u0131n nas\u0131l \u00f6l\u00e7eklendi\u011fini g\u00f6zlemleyelim. Bunun i\u00e7in ge\u00e7ici bir &#8220;y\u00fck \u00fcreteci&#8221; pod&#8217;u kullanabiliriz:<\/p>\n<pre><code class=\"language-bash\">kubectl run -it --rm load-generator --image=busybox -- \/bin\/sh -c \"while true; do wget -q -O- http:\/\/hpa-demo-service; done\"<\/code><\/pre>\n<p>Bu komut, <code>hpa-demo-service<\/code>&#8216;e s\u00fcrekli istek g\u00f6nderen bir <code>busybox<\/code> pod&#8217;u ba\u015flat\u0131r. Bu, <code>hpa-demo-app<\/code> pod&#8217;unun CPU kullan\u0131m\u0131n\u0131 art\u0131racakt\u0131r.<\/p>\n<p>Yeni bir terminal a\u00e7\u0131n ve HPA&#8217;n\u0131n durumunu s\u00fcrekli izleyin:<\/p>\n<pre><code class=\"language-bash\">watch kubectl get hpa hpa-demo-hpa<\/code><\/pre>\n<p>CPU kullan\u0131m\u0131 %50&#8217;yi a\u015ft\u0131\u011f\u0131nda, HPA&#8217;n\u0131n <code>REPLICAS<\/code> s\u00fctunundaki pod say\u0131s\u0131n\u0131 art\u0131rd\u0131\u011f\u0131n\u0131 (scale-out) g\u00f6receksiniz. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-\">NAME           REFERENCE                 TARGETS    MINPODS   MAXPODS   REPLICAS   AGE\nhpa-demo-hpa   Deployment\/hpa-demo-app   250%\/50%   1         10        5          5m<\/code><\/pre>\n<p>Y\u00fck \u00fcreteci pod&#8217;unu durdurmak i\u00e7in ilk terminaldeki <code>load-generator<\/code> komutunu Ctrl+C ile sonland\u0131r\u0131n. Y\u00fck azald\u0131\u011f\u0131nda, HPA&#8217;n\u0131n pod say\u0131s\u0131n\u0131 tekrar minimuma d\u00fc\u015f\u00fcrd\u00fc\u011f\u00fcn\u00fc (scale-in) g\u00f6zlemleyeceksiniz. Bu \u00f6l\u00e7ekleme i\u015flemleri, HPA&#8217;n\u0131n <code>stabilizationWindow<\/code> (kararl\u0131l\u0131k penceresi) ayarlar\u0131 nedeniyle hemen ger\u00e7ekle\u015fmeyebilir; bir s\u00fcre beklemeniz gerekebilir.<\/p>\n<h3>Geli\u015fmi\u015f HPA Yap\u0131land\u0131rmalar\u0131<\/h3>\n<p>HPA, temel CPU kullan\u0131m\u0131n\u0131n \u00f6tesinde daha karma\u015f\u0131k \u00f6l\u00e7ekleme senaryolar\u0131n\u0131 destekler.<\/p>\n<h4>Bellek Kullan\u0131m\u0131na G\u00f6re \u00d6l\u00e7ekleme<\/h4>\n<p>CPU gibi, bellek kullan\u0131m\u0131 da bir kaynak metri\u011fi olarak HPA taraf\u0131ndan izlenebilir. Bellek kullan\u0131m\u0131na g\u00f6re \u00f6l\u00e7ekleme i\u00e7in HPA tan\u0131m\u0131n\u0131z\u0131 a\u015fa\u011f\u0131daki gibi g\u00fcncelleyebilirsiniz:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: autoscaling\/v2\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: hpa-demo-hpa-memory\nspec:\n  scaleTargetRef:\n    apiVersion: apps\/v1\n    kind: Deployment\n    name: hpa-demo-app\n  minReplicas: 1\n  maxReplicas: 10\n  metrics:\n  - type: Resource\n    resource:\n      name: memory\n      target:\n        type: Utilization\n        averageUtilization: 70 # Pod'lar\u0131n ortalama bellek kullan\u0131m\u0131n\u0131 %70 hedefle<\/code><\/pre>\n<p>Bellek kullan\u0131m\u0131na g\u00f6re \u00f6l\u00e7ekleme yaparken, uygulaman\u0131z\u0131n bellek s\u0131z\u0131nt\u0131lar\u0131 veya ani bellek t\u00fcketim art\u0131\u015flar\u0131 gibi davran\u0131\u015flar\u0131n\u0131 dikkate alman\u0131z \u00f6nemlidir.<\/p>\n<h4>\u00d6zel Metrikler (Custom Metrics) ile \u00d6l\u00e7ekleme<\/h4>\n<p>Bazen CPU veya bellek gibi temel kaynak metrikleri, bir uygulaman\u0131n ger\u00e7ek y\u00fck\u00fcn\u00fc veya performans\u0131n\u0131 yans\u0131tmayabilir. Bu durumlarda, uygulaman\u0131z\u0131n veya i\u015f mant\u0131\u011f\u0131n\u0131z\u0131n \u00fcretti\u011fi \u00f6zel metrikleri kullanarak \u00f6l\u00e7ekleme yapabilirsiniz. \u00d6rne\u011fin, bir kuyruktaki mesaj say\u0131s\u0131, bir API&#8217;ye gelen istek say\u0131s\u0131 veya bir veritaban\u0131 ba\u011flant\u0131 havuzunun dolulu\u011fu gibi metrikler.<\/p>\n<p>\u00d6zel metrikleri kullanmak i\u00e7in, Prometheus gibi bir metrik toplama sistemi ve Prometheus Adapter gibi bir Custom Metrics API adapt\u00f6r\u00fc kurman\u0131z gerekir. Bu adapt\u00f6r, Prometheus&#8217;tan metrikleri al\u0131p bunlar\u0131 Kubernetes Custom Metrics API&#8217;sine sunar.<\/p>\n<p>\u00d6zel bir metri\u011fe g\u00f6re HPA tan\u0131m\u0131 \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: autoscaling\/v2\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: hpa-demo-hpa-custom\nspec:\n  scaleTargetRef:\n    apiVersion: apps\/v1\n    kind: Deployment\n    name: hpa-demo-app\n  minReplicas: 1\n  maxReplicas: 10\n  metrics:\n  - type: Object # Belirli bir Kubernetes objesine ait metrik\n    object:\n      metric:\n        name: http_requests_per_second # \u00d6zel metrik ad\u0131\n      describedObject:\n        apiVersion: apps\/v1\n        kind: Deployment\n        name: hpa-demo-app\n      target:\n        type: Value\n        value: \"100\" # Saniyede 100 HTTP iste\u011fi hedefle<\/code><\/pre>\n<p>Bu \u00f6rnekte, HPA, <code>hpa-demo-app<\/code> Deployment&#8217;\u0131na gelen HTTP isteklerinin saniyede 100&#8217;\u00fc a\u015fmas\u0131 durumunda \u00f6l\u00e7eklenecektir. <code>type: Value<\/code> yerine <code>type: AverageValue<\/code> kullanarak pod ba\u015f\u0131na ortalama de\u011feri hedefleyebilirsiniz.<\/p>\n<h4>Harici Metrikler (External Metrics) ile \u00d6l\u00e7ekleme<\/h4>\n<p>Harici metrikler, Kubernetes k\u00fcmesinin d\u0131\u015f\u0131ndaki kaynaklardan gelen metriklerdir. \u00d6rne\u011fin, AWS SQS kuyru\u011fundaki mesaj say\u0131s\u0131, Google Cloud Pub\/Sub&#8217;daki abonelik boyutu veya harici bir izleme sisteminden gelen herhangi bir \u00f6zel metrik. Harici metrikler i\u00e7in de bir External Metrics API adapt\u00f6r\u00fc (\u00f6rne\u011fin KEDA veya farkl\u0131 bir Prometheus adapt\u00f6r\u00fc) gereklidir.<\/p>\n<p>Harici bir metri\u011fe g\u00f6re HPA tan\u0131m\u0131 \u00f6rne\u011fi:<\/p>\n<pre><code class=\"language-yaml\">apiVersion: autoscaling\/v2\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: hpa-demo-hpa-external\nspec:\n  scaleTargetRef:\n    apiVersion: apps\/v1\n    kind: Deployment\n    name: hpa-demo-app\n  minReplicas: 1\n  maxReplicas: 10\n  metrics:\n  - type: External # Harici bir kaynaktan gelen metrik\n    external:\n      metric:\n        name: sqs_queue_length # Harici metrik ad\u0131\n        selector: # \u0130ste\u011fe ba\u011fl\u0131 etiket se\u00e7ici\n          matchLabels:\n            queue_name: my-app-queue\n      target:\n        type: AverageValue\n        averageValue: \"50\" # Pod ba\u015f\u0131na ortalama 50 kuyruk mesaj\u0131 hedefle<\/code><\/pre>\n<p>Bu \u00f6rnekte, HPA, <code>my-app-queue<\/code> adl\u0131 SQS kuyru\u011fundaki mesaj say\u0131s\u0131n\u0131n pod ba\u015f\u0131na ortalama 50&#8217;yi a\u015fmas\u0131 durumunda \u00f6l\u00e7eklenecektir.<\/p>\n<h4>Birden Fazla Metrik ile \u00d6l\u00e7ekleme<\/h4>\n<p>HPA, ayn\u0131 anda birden fazla metri\u011fi izleyebilir. Birden fazla metrik tan\u0131mland\u0131\u011f\u0131nda, HPA her bir metrik i\u00e7in ayr\u0131 ayr\u0131 \u00f6l\u00e7ekleme \u00f6nerileri hesaplar ve en y\u00fcksek pod say\u0131s\u0131n\u0131 \u00f6neren metri\u011fin karar\u0131n\u0131 uygular. Bu, uygulaman\u0131z\u0131n her zaman en kritik y\u00fck ko\u015fuluna g\u00f6re \u00f6l\u00e7eklenmesini sa\u011flar.<\/p>\n<pre><code class=\"language-yaml\">apiVersion: autoscaling\/v2\nkind: HorizontalPodAutoscaler\nmetadata:\n  name: hpa-demo-hpa-multi\nspec:\n  scaleTargetRef:\n    apiVersion: apps\/v1\n    kind: Deployment\n    name: hpa-demo-app\n  minReplicas: 1\n  maxReplicas: 10\n  metrics:\n  - type: Resource\n    resource:\n      name: cpu\n      target:\n        type: Utilization\n        averageUtilization: 50\n  - type: Resource\n    resource:\n      name: memory\n      target:\n        type: Utilization\n        averageUtilization: 70\n  - type: Object\n    object:\n      metric:\n        name: http_requests_per_second\n      describedObject:\n        apiVersion: apps\/v1\n        kind: Deployment\n        name: hpa-demo-app\n      target:\n        type: Value\n        value: \"100\"<\/code><\/pre>\n<p>Bu HPA, CPU, bellek ve HTTP istekleri metriklerinden herhangi biri hedefi a\u015ft\u0131\u011f\u0131nda \u00f6l\u00e7eklenecektir.<\/p>\n<h3>HPA ve Metrics Server En \u0130yi Uygulamalar\u0131<\/h3>\n<p>*   <strong>Kaynak \u0130stekleri (Requests) Tan\u0131mlama:<\/strong> HPA&#8217;n\u0131n CPU ve bellek kullan\u0131m\u0131na g\u00f6re do\u011fru \u00f6l\u00e7ekleme yapabilmesi i\u00e7in t\u00fcm pod&#8217;lar\u0131n\u0131zda <code>resources.requests.cpu<\/code> ve <code>resources.requests.memory<\/code> tan\u0131mlar\u0131n\u0131n yap\u0131lmas\u0131 zorunludur. Bu, HPA&#8217;n\u0131n pod&#8217;lar\u0131n kullan\u0131m oranlar\u0131n\u0131 hesaplamas\u0131 i\u00e7in bir referans noktas\u0131 sa\u011flar.<br \/>\n*   <strong><code>minReplicas<\/code> ve <code>maxReplicas<\/code> De\u011ferleri:<\/strong> Uygulaman\u0131z\u0131n minimum ve maksimum kapasite gereksinimlerini dikkatlice belirleyin. <code>minReplicas<\/code> uygulaman\u0131z\u0131n temel y\u00fck\u00fc kald\u0131rabilmesini sa\u011flarken, <code>maxReplicas<\/code> k\u00fcme kaynaklar\u0131n\u0131n a\u015f\u0131r\u0131 t\u00fcketilmesini veya kontrols\u00fcz \u00f6l\u00e7eklemeyi \u00f6nler.<br \/>\n*   <strong><code>stabilizationWindow<\/code> ve <code>cooldown<\/code> S\u00fcreleri:<\/strong> HPA, h\u0131zl\u0131 \u00f6l\u00e7ekleme dalgalanmalar\u0131n\u0131 (flapping) \u00f6nlemek i\u00e7in <code>stabilizationWindow<\/code> (v2beta2 ve sonras\u0131) ve eski versiyonlarda <code>scale-down-stabilization-window<\/code> gibi parametreler kullan\u0131r. Bu ayarlar, HPA&#8217;n\u0131n \u00f6l\u00e7ekleme kararlar\u0131n\u0131 belirli bir s\u00fcre boyunca &#8220;stabilize&#8221; etmesini sa\u011flar. \u00d6zellikle <code>scale-in<\/code> (pod azaltma) i\u015flemleri i\u00e7in bu s\u00fcre \u00f6nemlidir; ani y\u00fck d\u00fc\u015f\u00fc\u015flerinde pod&#8217;lar\u0131n hemen kapat\u0131lmas\u0131n\u0131 engelleyerek ge\u00e7ici y\u00fck art\u0131\u015flar\u0131na kar\u015f\u0131 koruma sa\u011flar.<br \/>\n*   <strong>Metrik Do\u011frulu\u011fu ve Gecikmesi:<\/strong> Metrics Server&#8217;\u0131n ve \u00f6zel\/harici metrik adapt\u00f6rlerinin do\u011fru ve g\u00fcncel veri sa\u011flamas\u0131 kritik \u00f6neme sahiptir. Metrik toplama ve iletimindeki gecikmeler, HPA&#8217;n\u0131n reaktifli\u011fini etkileyebilir.<br \/>\n*   <strong>G\u00f6zlem ve \u0130zleme:<\/strong> HPA&#8217;n\u0131n etkinli\u011fini anlamak ve olas\u0131 sorunlar\u0131 tespit etmek i\u00e7in HPA&#8217;n\u0131n kendisini, hedefledi\u011fi pod&#8217;lar\u0131 ve metrik kaynaklar\u0131n\u0131 s\u00fcrekli olarak izleyin. Prometheus ve Grafana gibi ara\u00e7lar bu konuda size yard\u0131mc\u0131 olabilir. HPA olaylar\u0131n\u0131 (<code>kubectl describe hpa<\/code>) ve pod metriklerini (<code>kubectl top pods<\/code>) d\u00fczenli olarak kontrol edin.<\/p>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h3>\n<p>*   <strong>Metrics Server \u00c7al\u0131\u015fm\u0131yor\/Metrikler G\u00f6r\u00fcnm\u00fcyor:<\/strong><br \/>\n    *   Metrics Server pod&#8217;unun <code>kube-system<\/code> namespace&#8217;inde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 do\u011frulay\u0131n (<code>kubectl get pods -n kube-system -l k8s-app=metrics-server<\/code>).<br \/>\n    *   Pod loglar\u0131n\u0131 kontrol edin (<code>kubectl logs -n kube-system <metrics-server-pod-name><\/code>).<br \/>\n    *   K\u00fcme i\u00e7indeki sertifika sorunlar\u0131 veya API eri\u015fim izinleri nedeniyle Metrics Server&#8217;\u0131n kubelet&#8217;lerden metrikleri alamamas\u0131 yayg\u0131n bir sorundur. Kubernetes da\u011f\u0131t\u0131m\u0131n\u0131z\u0131n belgelerini kontrol edin.<br \/>\n*   <strong>HPA \u00d6l\u00e7ekleme Yapm\u0131yor veya Hata Veriyor:<\/strong><br \/>\n    *   <code>kubectl get hpa<\/code> \u00e7\u0131kt\u0131s\u0131nda <code>TARGETS<\/code> s\u00fctununda <code><unknown><\/code> veya <code>no metrics currently available<\/code> g\u00f6r\u00fcyorsan\u0131z, Metrics Server&#8217;\u0131n d\u00fczg\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve metrikleri toplad\u0131\u011f\u0131ndan emin olun.<br \/>\n    *   Hedefledi\u011finiz pod&#8217;lar\u0131n kaynak isteklerinin (<code>resources.requests.cpu<\/code>, <code>resources.requests.memory<\/code>) tan\u0131ml\u0131 oldu\u011fundan emin olun. HPA, bu de\u011ferlere g\u00f6re kullan\u0131m oranlar\u0131n\u0131 hesaplar.<br \/>\n    *   HPA tan\u0131m\u0131ndaki <code>scaleTargetRef<\/code>&#8216;in do\u011fru Deployment\/StatefulSet\/ReplicaSet&#8217;i i\u015faret etti\u011finden emin olun.<br \/>\n    *   <code>kubectl describe hpa <hpa-name><\/code> komutuyla HPA olaylar\u0131n\u0131 kontrol edin. HPA&#8217;n\u0131n neden \u00f6l\u00e7ekleme yapmad\u0131\u011f\u0131na dair ipu\u00e7lar\u0131 bulabilirsiniz.<br \/>\n*   <strong>Gereksiz \u00d6l\u00e7ekleme (Flapping):<\/strong><br \/>\n    *   Uygulaman\u0131z\u0131n y\u00fck profili \u00e7ok de\u011fi\u015fken ise, HPA&#8217;n\u0131n <code>stabilizationWindow<\/code> ayarlar\u0131n\u0131 g\u00f6zden ge\u00e7irin. Daha uzun bir kararl\u0131l\u0131k penceresi, ani d\u00fc\u015f\u00fc\u015flerde pod&#8217;lar\u0131n hemen kapat\u0131lmas\u0131n\u0131 engelleyebilir.<br \/>\n    *   Hedeflenen metrik y\u00fczdesini veya de\u011ferini art\u0131rarak HPA&#8217;n\u0131n daha az hassas olmas\u0131n\u0131 sa\u011flayabilirsiniz.<br \/>\n    *   <code>minReplicas<\/code> ve <code>maxReplicas<\/code> de\u011ferlerini uygulaman\u0131z\u0131n ger\u00e7ek ihtiya\u00e7lar\u0131na g\u00f6re ayarlay\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Kubernetes Horizontal Pod Autoscaler (HPA) ve Metrics Server, modern bulut yerel uygulamalar\u0131n dinamik ve verimli bir \u015fekilde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayan temel bile\u015fenlerdir. Metrics Server, HPA&#8217;n\u0131n do\u011fru ve g\u00fcncel CPU ve bellek metriklerine eri\u015fmesini sa\u011flayarak, uygulamalar\u0131n de\u011fi\u015fen i\u015f y\u00fcklerine otomatik olarak uyum sa\u011flamas\u0131na olanak tan\u0131r. Bu sayede, uygulamalar\u0131n\u0131z\u0131n performans\u0131 optimize edilirken, gereksiz kaynak t\u00fcketimi ve dolay\u0131s\u0131yla maliyetler de minimize edilmi\u015f olur.<\/p>\n<p>HPA&#8217;n\u0131n temel CPU\/bellek metrikleri ile basit kurulumundan, \u00f6zel ve harici metriklerle daha karma\u015f\u0131k ve i\u015f odakl\u0131 \u00f6l\u00e7ekleme senaryolar\u0131na kadar sundu\u011fu esneklik, onu her Kubernetes y\u00f6neticisi ve geli\u015ftiricisi i\u00e7in vazge\u00e7ilmez bir ara\u00e7 haline getirir. Do\u011fru yap\u0131land\u0131rma, s\u00fcrekli izleme ve en iyi uygulamalar\u0131n takip edilmesiyle, Kubernetes k\u00fcmelerinizde y\u00fcksek performansl\u0131, dayan\u0131kl\u0131 ve maliyet etkin uygulamalar \u00e7al\u0131\u015ft\u0131rabilirsiniz. Uygulamalar\u0131n\u0131z\u0131n kaynak kullan\u0131m\u0131n\u0131 proaktif olarak y\u00f6neterek, hem kullan\u0131c\u0131 deneyimini iyile\u015ftirecek hem de operasyonel verimlili\u011fi art\u0131racaks\u0131n\u0131z.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma\nKubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131 ve y\u00f6netiminde end\u00fcs","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":[874],"tags":[],"class_list":{"0":"post-37129","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-server","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 Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma\" \/>\n<meta property=\"og:description\" content=\"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131 ve y\u00f6netiminde end\u00fcs\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-27T17:40:46+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=\"16 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma\",\"datePublished\":\"2025-12-27T17:40:46+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/\"},\"wordCount\":2698,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Server\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/\",\"name\":\"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-27T17:40:46+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma\"}]},{\"@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 Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/","og_locale":"tr_TR","og_type":"article","og_title":"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma","og_description":"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma Kubernetes, modern uygulama da\u011f\u0131t\u0131m\u0131 ve y\u00f6netiminde end\u00fcs","og_url":"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-27T17:40:46+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"16 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma","datePublished":"2025-12-27T17:40:46+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/"},"wordCount":2698,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Server"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/","url":"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/","name":"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-27T17:40:46+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/kubernetes-yatay-pod-otomatik-olcekleyiciyi-hpa-metrics-server-ile-yapilandirma\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Kubernetes Yatay Pod Otomatik \u00d6l\u00e7ekleyiciyi (HPA) Metrics Server ile Yap\u0131land\u0131rma"}]},{"@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\/37129","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=37129"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37129\/revisions"}],"predecessor-version":[{"id":37130,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37129\/revisions\/37130"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37129"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37129"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37129"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}