Kubernetes Vertical Pod Autoscaling

Codecode123
2 min readNov 20, 2020

--

Merhaba,bu makalemde sizlere Kubernetes için Vertical Autoscaling özelliğinden bahsetmeye çalışacağım.

Vertical Pod Autoscaling (VPA), containerın kaynaklarının yetersiz kalmaması veya gereksiz kaynak kullanılmamasına olanak tanır. Optimum seviyede CPU ve bellek kullanımını önerir ve clusterınız için kaynakların verimli bir şekilde kullanılması adına otomatik güncellemeler yapabilir.

VPA, sizin belirlemiş olduğunuz kişisel tahminleriniz veya ara sıra çalışan karşılaştırmalar yerine canlı verilere göre kaynak optimizasyonu yapar.

Bazı workloadlar ara sıra çok fazla kaynak ihtiyacı duyabilirler ancak kaynak sınırlarını kalıcı olarak artırmak çoğu zaman kullanılmayan CPU ve bellek kaynaklarının boşuna harcanmasına sebep olur ve bu kaynakları kullanabilecek nodları sınırlamış olurlar.

VPA 3 bileşenden oluşur:

  • Admission controller
    Oluşturma sırasında podların kaynak isteklerini üzerine yazmak için mutating admission webhook kullanan kabul denetleyicisidir.
  • Recommender
    Kaynak kullanımını izleyen ve hedef değerleri hesaplayan bileşendir.
  • Updater
    Yeni kaynak sınırlarıyla güncellenmesi gereken podları belirler.

Nasıl çalıştığına gelecek olursak, güncel kaynak sınırı kullanmayan podlar sonlandırılır daha sonra pod denetleyicisi kubernetes API service den değişim talep eder daha sonra VPA admission controller güncellenmiş kaynak bilgilerini ve yeni sınır değerlerini podun spesifikasyonuna enjekte eder.

Nasıl kullanılacağına gelecek olursak

Kubernetes sağlayıcınız doğrudan VPA’yı desteklemiyorsa, clusterınıza yüklemek için aşağıdaki linki inceleyebilirsiniz.

VPA, bir deployment veya replica set cluster için ölçeklendirmeyi yapılandırmak üzere custom resource VerticalPodAutoscaler’ı kullanır.

VPA’nın your-app deploymentı için kaynak isteklerini yönetmesini istersek aşağıdaki gibi bir manifest kullanabiliriz.

apiVersion: "autoscaling.k8s.io/v1beta2"
kind: VerticalPodAutoscaler
metadata:
name: your-app
spec:
targetRef:
apiVersion: "apps/v1"
kind: Deployment
name: your-app
resourcePolicy:
containerPolicies:
- containerName: '*'
controlledResources: ["cpu", "memory"]
minAllowed:
cpu: 500m
memory: 100Mi
maxAllowed:
cpu: 1000m
memory: 500Mi
updatePolicy:
updateMode: "Auto"

Manifestimizde belittiğimiz gibi VPA, podları izleyecek ve 100 ile 500 megabayt bellek ile 500 ile 1000 miliCPU arasında uygun kaynak değerini ayarlamaya çalışacak. VPA, podlar için yeni kaynak değerleri hesaplarsa, mevcut podları sırayla öldürür ve yeni podları yeni değerleri ile devreye alır.

Umarım faydalı olmuştur şimdilik hoşça kalın…

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

--

--

Codecode123
Codecode123

Written by Codecode123

Kubernetes,Rancher,Docker,Azure DevOps,Jenkins,Bamboo,Bitbucket, Git,SonarQube,JFrog,Powershell, .Net, JIRA-Confluence Administrator ,New Relic,Grafana

No responses yet

Write a response