Kubernetes ortamında Prometheus ve Grafana

Emin Aktaş
5 min readOct 9, 2020

--

K8s, Prometheus, Grafana ve get-of-metrics kurulum ve çalıştırılması işlemleri gerçekleştirilmiştir. Ubuntu 18.04.5 LTS makinesi üzerinde çalışılmıştır.

kubectl kurulum

kubectl bizim K8s kümesi ile API Server aracılığıyla iletişim kurmamızı sağlar. Yazının ilerleyen kısımlarında önceden oluşturduğum yaml dosyalarını bu komut ile K8s kümesinde konuşandırılmasını sağlayacağız.

1- Komut satırını çalıştırın ve en son sürümünü indirin.

curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"

2- kubectl binary dosyasını çalıştırılabilir hale getirin.

chmod +x ./kubectl

3- Klasörü /usr/local/bin içerisine taşıyın.

sudo mv ./kubectl /usr/local/bin/kubectl

4- kubectl kurulduğundan emin olun.

kubectl version --client --short

minikube kurulum

Tek bir makine içerisinde tek bir node (hem master hem worker görevini üstlenir) K8s kümesi oluşturulacak. Böylece kendimize ait bir geliştime ve test ortamını sağlamış oluruz.

1- Öncelikle kullandığınız makinanın sanallaştırmayı desteklediğini kontrol edin. Komutu çalıştırdıktan sonra aşağıdaki gibi çıktı almanız gerekli.

grep -E --color 'vmx|svm' /proc/cpuinfo

2- Eğer hali hazırda hypervisor kuruluysa direk olarak minikube kurulumuna geçebilirsiniz. Linux’ta, sanallaştırmanın etkinleştirilmesinin gerekli olmadığı için Docker ile kurulumundan bahsedeceğim. Öncelikle, kurulmuş eski versiyonlar varsa kaldırıldığından emin olalım.

sudo apt-get remove docker docker-engine docker.io containerd runc

3- apt paket indeksini güncelleyip, ardından HTTPS üzerinden repoları kullanmasına izin vermek için paketleri yükleyin.

sudo apt-get update
sudo apt-get -y install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

4- Docker resmi GPG anahatırın ekleyin.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

5- 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 ‘in son 8 karekterini arayarak anahtara sahip olduğunu doğrulayın.

sudo apt-key fingerprint 0EBFCD88

6- “stable” repoyu eklemek için aşağıdaki komutu kullanın.

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

7- Docker Engine son sürümünü kurulduğundan emin olmak için sudo apt-get update komutunu kullanın ardından kurulum için aşağıdaki komutu çalıştırın.

sudo apt-get install docker-ce docker-ce-cli containerd.io

8- Docker’ın kurulduğundan emin olmak için aşağıdaki komutu çalıştırın. Ekranda bir bilgi mesajı göreceksiniz ve ardından container kendi kendini yok edicek.

sudo docker run --rm hello-world

Not-1: Docker yansıları sudo docker image ls ve docker image ls farklı listeleniyorsa bağlantıda anlatılan yolu izleyerek sorun çözümlenebilir. https://docs.docker.com/engine/install/linux-postinstall/

Not-2: K8s tarafından indirilen yansıların listelenmediği veya el ile eklenen yansılar için yansı çekme hatası alındığında aşağıdaki komut ile sorun aşılabilir. (Ref: https://stackoverflow.com/a/46067700/14091937)

eval $(minikube docker-env)

Fakat makinadan çıkış yapıldığında, tekrar erişildiğinde yansıların tekrar listelenmediği görülür. Bu durumda yukarıdaki komutun her makinaya erişildiğinde tekrar çalıştırılması gerekir.

9- minikube kurulumuna başlayabiliriz artık. Son sürümünü alttaki komut ile indirin.

curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \
&& chmod +x minikube

10- Aşağıdaki komutları sırayla çalıştırarak öncelikle minikube çalıştırabilir olması için /usr/local/bin içerisine klasör oluşturup ardından kurulumu gerçekleştirin.

sudo mkdir -p /usr/local/bin/
sudo install minikube /usr/local/bin/

11- Gerekli kurulumlar tamamlandı. Şimdi local K8s Cluster’ımızı başlatma vakti. Öncelikle Docker ve minikube için gerekli izinleri verip, ardından default driverı docker olarak set edin. Son komut ile Cluster’ı başlatın. (Not: Eğer bu adımı gerçekleştirilirken hata alırsanızminikube start komutunu koşturarak önce başlatmayı deneyin ardından hata alacaksınızdır. Bu sayede home dizini içerisinde .minikube klasörü oluşturulur ve işleme kaldığınız yerden devam edebilirsiniz.)

sudo usermod -aG docker <username> && newgrp dockersudo chown -R $USER $HOME/.minikube; chmod -R u+wrx $HOME/.minikubesudo minikube config set driver dockerminikube start

Ayrıca, minikube status ile kontrol edin.

Son olarak, kubectl version --short

Kubernetes Cluster’ımızın kullanıma hazır. Şimdi sırada Grafana, Prometheus ve get-of-metrics (https://github.com/eminaktas/get-of-metrics) betimlemesini bu ortamda ayaklandıracağız.

Prometheus kurulum

Prometheus için gerekli dosyaları aşağıda Gist ile paylaştım. Bu dosyaların hepsini bir klasör altına toplayın.

Aşağıdaki pv.yml ve pvc.yml dosylarını göreceksiniz ama bunlar kustomization.ymliçerisinde yoruma alınmış durumdalar. Dosyalar konuşlandırıldığı zaman deployment.yml içerisinde Pod’un yaşamına bağlı olarak Prometheus verileri tutulacak şekilde çalışmaktadır.

Persistent Volume oluşturup kullanmak isterseniz kustomization.yml içerisindeki yorum satırlanırını kaldırıp, ardından volumes altındaki prometheus-data yı aşağıdaki gibi değiştirebilirsiniz.

- name:  prometheus-data
persistentVolumeClaim:
claimName: prometheus-pvc

Prometheus prometheus-config.yml dosyasında konfigüre edilmiş şekliyle Kubernetes kümesi içerisinde ayaklandırılacak get-of-metrics konteynerleri ve ayrıca targets.ymliçerisindeki hostların ölçümlerini kendi veri tabanına kayıtlayacaktır.

1- kubectl komutunu çalıştıralarak oluşturulmuş yml dosyalarını K8s API üzerinden K8s Master’a iletilmesini sağla ve Prometheus kısa bir süre içerisinde ayaklanır.

kubectl appyl -k .

Yeni bir hedef makine eklemek istediğinizde prometheus-config.yml içerisindeki targets.yml dosyasına hostları ekleyip, klasör içerisindeyken kubectl apply -k . komutunu çalıştırmanız yeterlidir.

Grafana kurulum

Grafana için ayarlamalar yapılmasına gerek yok. İsterseniz secret.yml içerisindeki kullanıcı bilgilerini değiştirebilirsiniz.

1- Yine tek bir adımda klasör içerisindeyken aşağıdaki komut satırıyla Grafana’yı konuşlandırın.

kubectl apply -k .

get-of-metrics kurulumu

Bu betimleme Broadcom Ağ Anahtarlarının ölçümlerin toplanması için üretilmiştir. Eğer OF-DPA’in sağladığı client_port_table_dump — s komut ile ölçümlere erişebiliyorsanız bu betimlemeyi kullanabilirisiniz.

Konuşlandırmadan önce hangi ağ anahtarına bağlanmak istiyorsanız, o ağ anahtarının host, kullanıcı adı, şifre ve bir takma isim bilgilerini secret.yml içerisinde önceden tanımlamanız gerekmektedir.

1- Prometheus ve Grafana’da olduğu gibi aynı şekilde get-of-metrics’i konuşlandıracağız.

kubectl apply -k .

Eğer birden fazla makine için bu konteyneri ayaklandırmanız gerekirse yeni makineler için sadece metadataaltındaki name etiketlerinin değerleri değiştirilmesi gerekecektir. Böylece yeni oluşturulacak konteyner için tekillik sağlanmış olur. namespace.yml içerisine dokunulması gerek yok, zaten hali hazırda ilk konuşlandırma işlemi sırasında get-of-metrics isminde bir namespace oluşturulur.

Kaynak 1: https://kubernetes.io/docs/tasks/tools/install-kubectl/

Kaynak 2: https://kubernetes.io/docs/tasks/tools/install-minikube/

Kaynak 3: https://docs.docker.com/engine/install/ubuntu/

Kaynak 4: https://medium.com/@eminaktas/broadcom-a%C4%9F-anahtar-%C3%B6l%C3%A7%C3%BCmlerinin-g%C3%B6rselle%C5%9Ftirilmesi-4ccb963a79ff

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

Emin Aktaş
Emin Aktaş

No responses yet

Write a response