AWS Türkçe Blog
Karpenter ile Tanışın – Açık Kaynaklı Yüksek Performanslı Kubernetes Küme Otomatik Ölçekleyici
Orijinal makale: Link (Channy Yun)
Bugün Karpenter‘ın üretime hazır olduğunu duyuruyoruz. Karpenter, AWS ile oluşturulmuş açık kaynaklı, esnek, yüksek performanslı bir Kubernetes küme otomatik ölçekleyicidir (cluster autoscaler). Değişen uygulama yüküne yanıt olarak doğru boyutta bilgi işlem kaynaklarını hızla başlatarak uygulama kullanılabilirliğinizi ve küme verimliliğinizi artırmanıza yardımcı olur. Karpenter ayrıca uygulamanızın ihtiyaçlarını karşılamak için tam zamanında bilgi işlem kaynakları sağlar ve maliyetleri azaltmak ve performansı artırmak için kısa sürede bir kümenin işlem kaynağı ayak izini otomatik olarak optimize eder.
Karpenter’dan önce Kubernetes kullanıcılarının Amazon EC2 Auto Scaling gruplarını ve Kubernetes Cluster Autoscaler‘ı kullanan uygulamaları desteklemek için kümelerinin işlem kapasitesini dinamik olarak ayarlaması gerekiyordu. AWS’teki Kubernetes müşterilerinin yaklaşık yarısı, Kubernetes Cluster Autoscaler kullanarak küme otomatik ölçeklendirmeyi yapılandırmanın zorlu ve kısıtlayıcı olduğunu bildiriyor.
Karpenter kümenize kurulduğunda, Karpenter zamanlanmamış bölmelerin (pods) toplu kaynak isteklerini gözlemler ve zamanlama gecikmelerini ve altyapı maliyetlerini azaltmak için yeni düğümler (nodes) başlatma ve bunları sonlandırma kararları alır. Karpenter bunu, Kubernetes kümesi içindeki olayları gözlemleyerek ve ardından temel bulut sağlayıcısının Amazon EC2 gibi bilgi işlem hizmetine komutlar göndererek yapar.
Karpenter, Apache Lisansı 2.0 altında lisanslanmış açık kaynaklı bir projedir. Tüm büyük bulut sağlayıcıları ve şirket içi ortamlar dahil olmak üzere herhangi bir ortamda çalışan herhangi bir Kubernetes kümesiyle çalışmak üzere tasarlanmıştır. Ek bulut sağlayıcıları oluşturmaya veya temel proje işlevselliğini geliştirmeye yönelik katkıları memnuniyetle karşılıyoruz. Bir hata bulursanız, bir öneriniz varsa veya katkıda bulunacak bir şeyiniz varsa lütfen GitHub‘da bizimle iletişime geçin.
AWS’te Karpenter’a Başlarken
Herhangi bir Kubernetes kümesinde Karpenter’ı kullanmaya başlamak için, kullanılabilir bir miktar işlem kapasitesi olduğundan emin olun ve bunu genel havuzda sağlanan Helm çizelgelerini kullanarak kurun. Karpenter ayrıca, seçtiğiniz sağlayıcıda bilgi işlem kaynakları sağlamak için izinler gerektirir.
Kümenize yüklendikten sonra, varsayılan Karpenter sağlayıcısı, kümedeki yetersiz bilgi işlem kaynakları nedeniyle zamanlanamayan, gelen Kubernetes bölmelerini gözlemler ve zamanlama ve kaynak gereksinimlerini karşılamak için otomatik olarak yeni kaynakları başlatır.
AWS’te Karpenter ile Başlarken‘e dayalı bir Amazon EKS kümesinde Karpenter’ı kullanmaya hızlı bir başlangıç göstermek istiyorum. AWS Komut Satırı Arabirimi (AWS Command Line Interface – AWS CLI), kubectl, eksctl ve Helm (Kubernetes için paket yöneticisi) kurulumunu gerektirir. Bu araçları kurduktan sonra eksctl
ile bir küme oluşturun. Bu örnek yapılandırma dosyası, bir ilk düğüme sahip temel bir kümeyi belirtir.
Karpenter, kendi kendini yöneten düğüm grupları, yönetilen düğüm grupları veya AWS Fargate dahil olmak üzere her yerde çalışabilir. Karpenter, hesabınızda EC2 bulut sunucuları sağlayacaktır.
Ardından, belgeleri izleyerek sunucuları başlatmak gibi izinleri almak için Karpenter denetleyicisi için AWS CloudFormation şablonunu ve Service Accounts için IAM Rollerini (IRSA) kullanarak gerekli AWS Kimlik ve Erişim Yönetimi (IAM) kaynaklarını oluşturmanız gerekir. Karpenter’ı kümenize dağıtmak için Helm grafiğini de yüklemeniz gerekir.
Karpenter sağlayıcıları, kümenizdeki Karpenter davranışını yapılandırmanıza olanak tanıyan bir Kubernetes kaynağıdır. Varsayılan bir sağlayıcı oluşturduğunuzda, Karpenter’ın kümenizde bilgi işlem kaynakları sağlaması için gerekenlerin yanı sıra daha fazla özelleştirme yapmadan, Karpenter, sunucu türleri, bölgeler, mimariler, işletim sistemleri ve sunucu satın alma türleri gibi düğüm özelliklerini otomatik olarak keşfeder. Açık bir iş gereksinimi yoksa, bu belirtim:gereksinimleri tanımlamanız gerekmez.
ttlSecondsAfterEmpty
değeri, Karpenter’ı boş düğümleri sonlandıracak şekilde yapılandırır. Bu değer devre dışı bırakılırsa, düşük kullanım nedeniyle düğümler hiçbir zaman küçülmez. Daha fazla bilgi edinmek için Karpenter sitesindeki Sağlayıcı özel kaynak tanımlarına (Custom Resource Definitions – CRD’ler) bakın.
Karpenter artık etkin ve kümenizdeki düğümleri sağlamaya başlamaya hazır. Bir dağıtım kullanarak bazı bölmeler oluşturun ve yanıt olarak Karpenter sağlayıcı düğümlerini izleyin.
Dağıtımı ölçeklendirelim ve Karpenter denetleyicisinin günlüklerini kontrol edelim.
Sağlayıcının denetleyicisi, yeni bir sunucu başlatan ve hazırlanabilir bölmeleri yeni düğümlere bağlayan bölme değişikliklerini dinler.
Şimdi, dağıtımı silin. 30 saniye sonra (ttlSecondsAfterEmpty = 30
), Karpenter boş düğümleri sonlandırmalıdır.
“kubectl” ile bir düğümü silerseniz, Karpenter ilgili sunucuyu incelikle kordon altına alır, boşaltır ve kapatır. Yakından bakıldığında Karpenter, tüm bölmeler boşaltılana ve sunucu sonlandırılana kadar silme işlemini engelleyen düğüm nesnesine bir sonlandırıcı ekler.
Bilmeniz Gerekenler
Kapenter özellikleri hakkında akılda tutulması gereken birkaç şey:
Hızlandırılmış Bilgi İşlem: Karpenter, her tür Kubernetes uygulamasıyla çalışır, ancak çok sayıda farklı işlem kaynağının hızlı bir şekilde sağlanmasını ve hızlı bir şekilde kaldırılmasını gerektiren kullanım durumları için özellikle iyi performans gösterir. Örneğin, buna makine öğrenimi modellerini eğitmek, simülasyonları çalıştırmak veya karmaşık finansal hesaplamalar yapmak için toplu işler dahildir. Hızlandırılmış EC2 bulut sunucuları gerektiren kullanım durumları için nvidia.com/gpu, amd.com/gpu ve aws.amazon.com/neuron özel kaynaklarından yararlanabilirsiniz.
Sağlayıcı Uyumluluğu: Karpenter sağlayıcıları, Amazon EKS tarafından yönetilen düğüm grupları ve EC2 Auto Scaling grupları gibi statik kapasite yönetimi çözümleriyle birlikte çalışacak şekilde tasarlanmıştır. Hem dinamik hem de statik olarak yönetilen kapasiteye sahip karma bir model veya tamamen statik bir yaklaşım olarak sağlayıcıları kullanarak kapasitenizin tamamını yönetmeyi seçebilirsiniz. Kubernetes Cluster Autoscaler’ı Karpenter ile aynı anda kullanmamanızı öneririz çünkü her iki sistem de zamanlanmayan bölmelere yanıt olarak düğümleri ölçeklendirir. Birlikte yapılandırılırsa, her iki sistem de bu bölmeler için sunucuları başlatmak veya sonlandırmak için yarışacaktır.
Karpenter hakkında daha fazla bilgi edinmek için AWS Container Day’deki belgelere ve demo videosuna bakın.