Home TürkçeKubernetes Kubernetes Metrics Server ve Kurulumu

Kubernetes Metrics Server ve Kurulumu

by Fatih Boy
1 comment

Bir Kubernetes Cluster’ını üretim ortamında yönetmek için kuşkusuz metrikleri takip etmeniz gerekli. Metrikler, node seviyesinde olacağı gibi pod seviyesinde de olmalı. Bu sayede bir ve ya daha fazla pod’un/node’un yüke tabi olduğunu görebilir, yatayda çoğaltılması kararını verebilirsiniz. Daha da iyisi ve önemlisi, Kubernetes Cluster’ının pod düzeyinde buna otomatik olarak karar vererek gerekli aksiyonu almasını sağlayabilirsiniz.

Kubernetes v1.13 sürümü ile tamamen kaldırılması öncesinde, bir önceki paragrafta belirttiğim metrikleri toplamak Heapster’ın görevlerinden birisiydi. Heapster’ın emekli olmasıyla metrik toplama görevini Metrics Server devraldı.  Metrics Server, en basit tanımıyla, Kubernetes Cluster’ında CPU ve RAM gibi kaynakların kullanım verilerini tek bir noktada toplayan bir uygulamadır. Kubernetes 1.8 ile birlikte cpu ve ram gibi kaynak kullanım verileri Metrics API üzerinden sunulmaktadır.

Metrics API ile ilgili düşülmesi gereken önemli bir not; sağlanan veriler anlıktır. Geriye dönük bir depolama olmadığı için, örneğin, 1 saat önceki durumu size sunamayacaktır. Bu isteri karşılamak için Prometheus v.b. bir çözümü konumlandırmanız ve Metrics API değerlerini çekerek depolamanız gerekecektir.

Kubernetes 1.8 ile birlikte kube-up.sh ile Kubernetes Cluster kurulumunu gerçekleştirdiyseniz şanslısınız. Kubernetes 1.8 kube-up.sh kurulumu ile Metrics Server varsayılan olarak gelmektedir.  Eğer sisteminizde kurulu bir Metrics Server bulunmuyorsa aşağıda paylaştığım adımları takip ederek kurulumunu yapabilirsiniz. Kurulum adımlarını Elle Kurulum ve Helm Chart ile kurulum olmak üzere iki başlıkta sizlerle paylaşacağım. Pek çoğunuzun Helm Chart ile kurulumu tercih edeceğinizi düşünmekle birlikte elle kurulum yöntemini anlatmakta fayda görüyorum. Dolayısıyla önceliği elle kurulum yöntemine veriyorum.

Elle Kurulum

Metrics Server’ı elle kurmak için tek geresinim sisteminizde git’in kurulu olmasıdır. Aşağıdaki komut yardımıyla git kurulumunu yapabilirsiniz;

yum install -y git

Git kurulumunun ardından Metrics Server deposunu yerele kopyalamalısınız;

git clone https://github.com/kubernetes-incubator/metrics-server.git

İşlemlere yerele kopyalanan metrics server deposunda devam edeceğiz;

cd metrics-server/

Kubernetes 1.8+ sürümleri için aşağıdaki komut çalıştırılır;

kubectl create -f deploy/1.8+/

Bu adımlar ardından Metrics Server kurulumu tamamlanmış olacaktır. Test etmek için aşağıdaki şekilde top komutu kullanılabilir;

kubectl top node

Kurulum Hataları

Bu noktada kimi senaryolarda kurulum adımlarını takip ederken karşılaşabileceğiniz hatalara ve çözüm yollarına değinmek isterim.

Hata 1

Kurulumu tamamladınız; ama Horizontal Pod Autoscaler çalışmıyor ve yatayda pod’larınızı çoğaltmıyor. Logları kontrol ettiğinizde aşağıdaki mesajı gördünüz;

Warning FailedGetResourceMetric: horizontal-pod-autoscaler unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)
Warning FailedComputeMetricsReplicas horizontal-pod-autoscaler failed to get cpu utilization: unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)

Bu durumda öncelikle yeniden kurulum yapacağımız için mevcut kurulumu aşağıdaki şekilde silmelisiniz;

kubectl delete -f deploy/1.8+/

Ardından, deploy/1.8+/metrics-server-deployment.yaml dosyasına aşağıdaki satırlar eklenir;

command:
- /metrics-server
- --kubelet-insecure-tls
Hatayı düzeltmek üzere eklenecek girdiler

aşağıdaki komutla metric-server yeniden oluşturulur;

kubectl create -f deploy/1.8+/

Hata 2

Bazı senaryolarda DNS çözümleme hatası nedeniyle metrikler okunamayabilir. Bu durumda yukarıda eklediğimiz bölüme aşağıdaki parametre de dahil edilmelidir;

- --kubelet-preferred-address-types=InternalIP

Bu parametre ile internal ip ile gidilmesi sağlanabilir. Alternatif olarak aşağıdaki şekilde çözümleme sırası da verilebilir;

- --kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname

aşağıdaki komutla metric-server yeniden oluşturulur;

kubectl create -f deploy/1.8+/

 

Helm Chart ile Kurulum

Elle kuruluma alternatif olarak aşağıdaki komutu kullanarak Metrics Server’ı elle kurmanız da mümkün;

helm install stable/metrics-server --name metric-server --namespace kube-system

yapılandırma parametreleri Metrics Server Helm Chart sayfasında bulunabilir. kurulum aşağıdaki komut yardmıyla kontrol edilebilir;

kubectl get apiservice v1beta1.metrics.k8s.io -o yaml
ApiService metriklerini okuma

Kurulum Hataları

Elle kurulumdakine benzer olarak Helm Chart yardımıyla yapılan kurulumlarda da kimi senaryolarda kurulum adımlarını takip ederken karşılaşabileceğiniz hatalara ve çözüm yollarına değinmek isterim.

Hata 1

Kurulumu tamamladınız; ama Horizontal Pod Autoscaler çalışmıyor ve yatayda pod’larınızı çoğaltmıyor. Logları kontrol ettiğinizde aşağıdaki mesajı gördünüz;

Warning FailedGetResourceMetric: horizontal-pod-autoscaler unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)
Warning FailedComputeMetricsReplicas horizontal-pod-autoscaler failed to get cpu utilization: unable to get metrics for resource cpu: unable to fetch metrics from API: the server could not find the requested resource (get pods.metrics.k8s.io)

Bu durum da kurulum aşağıdaki şekilde kurulurken –kubelet-insecure-tls parametresi kullanılamalıdır;

helm install stable/metrics-server --name metric-server --namespace kube-system --set args[0]="--kubelet-insecure-tls"

Hata 2

Bazı senaryolarda DNS çözümleme hatası nedeniyle metrikler okunamayabilir. Bu durumda yukarıda eklediğimiz bölüme aşağıdaki parametre de dahil edilmelidir;

helm install stable/metrics-server --name metric-server --namespace kube-system --set args[0]="--kubelet-preferred-address-types=InternalIP"

Bu parametre ile internal ip ile gidilmesi sağlanabilir. Alternatif olarak aşağıdaki şekilde çözümleme sırası da verilebilir;

helm install stable/metrics-server --name metric-server --namespace kube-system --set args[0]="--kubelet-preferred-address-types=InternalDNS,InternalIP,ExternalDNS,ExternalIP,Hostname"

Elle kurulumda olduğu gibi Helm Chart kurulumunda da bu adımlar ardından aşağıdaki top komutu v.b. metric toplayan komutlar çalıştırılabilir;

kubectl top node

Şu Yazıları da Sevebilirsiniz

1 comment

Kubernetes Eğitimi: Metrics Server Kurulumu - Fatih'in Notları 18 Eylül 2019 - 10:13

[…] önceki makalemde sizlere Metrics Server’ı tanıtarak nasıl kuracağınızı anlatmıştır. Aşağıda […]

Reply

Leave a Comment

* Bu formu kullanarak, verilerinizin bu web sitesi tarafından saklanması ve kullanılmasını kabul ediyorsunuz.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul Et Daha Fazla Bilgi