Uygulama geliştiricilerin Azure Kubernetes Service'de (AKS) kaynakları yönetmesine yönelik en iyi deneyimler
Azure Kubernetes Service'te (AKS) uygulama geliştirirken ve çalıştırırken dikkate almanız gereken birkaç önemli alan vardır. Uygulama dağıtımlarınızı yönetme şekliniz, sağladığınız hizmetlerin son kullanıcı deneyimini olumsuz etkileyebilir.
Bu makale, kümelerinizi ve iş yüklerinizi uygulama geliştiricisi açısından çalıştırmaya odaklanır. Yönetici en iyi yöntemleri hakkında bilgi için bkz . Azure Kubernetes Service'te (AKS) yalıtım ve kaynak yönetimi için küme operatörü en iyi yöntemleri.
Bu makalede aşağıdaki konular ele alınır:
- Pod kaynak istekleri ve sınırları.
- Bridge ile Kubernetes ve Visual Studio Code'a uygulama geliştirme, hata ayıklama ve dağıtma yolları.
Pod kaynak isteklerini ve sınırlarını tanımlama
En iyi yöntem kılavuzu
YAML bildirimlerinizdeki tüm podlarda pod isteklerini ve sınırlarını ayarlayın. AKS kümesi kaynak kotaları kullanıyorsa ve bu değerleri tanımlamazsanız dağıtımınız reddedilebilir.
AKS kümesindeki işlem kaynaklarını yönetmek için pod isteklerini ve sınırlarını kullanın. Pod istekleri ve sınırları, kubernetes zamanlayıcısına poda atanacak işlem kaynaklarını bildirir.
Pod CPU/Bellek istekleri
Pod istekleri, podun düzenli olarak ihtiyaç duyduğu belirli miktarda CPU ve bellek tanımlar.
Pod belirtimlerinizde bu istekleri ve sınırları yukarıdaki bilgilere göre tanımlamanız önemlidir. Bu değerleri eklemezseniz Kubernetes zamanlayıcısı, uygulamalarınızın zamanlama kararlarında yardımcı olması için gereken kaynakları dikkate alamıyor.
Pod isteklerini ayarlamak için uygulamanızın performansını izleyin. Pod isteklerini hafife alırsanız, bir düğümün aşırı zamanlanması nedeniyle uygulamanız performansı düşürebilir. İstekler fazla tahmin ediliyorsa, uygulamanızın zamanlama zorluğu artmış olabilir.
Pod CPU/Bellek sınırları
Pod sınırları , bir podun kullanabileceği maksimum CPU ve bellek miktarını ayarlar. Bellek sınırları , kaynakların yetersiz olması nedeniyle düğümler kararsız olduğunda hangi podların kaldırılması gerektiğini tanımlar. Uygun sınırlar ayarlanmadan, kaynak basıncı kaldırılana kadar podlar kaldırılır. Pod, CPU sınırını düzenli aralıklarla aşabilir ancak CPU sınırını aştığı için pod kaldırılmaz.
Pod sınırları, bir podun kaynak tüketimi denetimini kaybetmesini tanımlar. Sınır aşıldığında pod kaldırılmak üzere işaretlenir. Bu davranış düğüm durumunu korur ve düğümü paylaşan podlar üzerindeki etkiyi en aza indirir. Pod sınırı ayarlamazsanız, varsayılan olarak belirli bir düğümdeki en yüksek kullanılabilir değere ayarlanır.
Düğümlerinizin destekleyenenden daha yüksek bir pod sınırı ayarlamaktan kaçının. Her AKS düğümü, çekirdek Kubernetes bileşenleri için belirli miktarda CPU ve bellek ayırır. Uygulamanız, diğer podların başarıyla çalışması için düğümde çok fazla kaynak kullanmayı deneyebilir.
Gün veya hafta boyunca uygulamanızın performansını farklı zamanlarda izleyin. En yüksek talep sürelerini belirleyin ve pod sınırlarını maksimum gereksinimleri karşılamak için gereken kaynaklarla hizalayın.
Önemli
Pod belirtimlerinizde bu istekleri ve sınırları yukarıdaki bilgilere göre tanımlayın. Bu değerlerin eklenememesi, Kubernetes zamanlayıcısının uygulamalarınızın zamanlama kararlarında yardımcı olması için gereken kaynakları hesaplamasını önler.
Zamanlayıcı kaynakları yetersiz olan bir düğüme pod yerleştirirse uygulama performansı düşer. Küme yöneticilerinin , kaynak isteklerini ve sınırlarını ayarlamanızı gerektiren bir ad alanında kaynak kotaları ayarlaması gerekir. Daha fazla bilgi için bkz . AKS kümelerindeki kaynak kotaları.
Bir CPU isteği veya sınırı tanımladığınızda, değer CPU birimleri cinsinden ölçülür.
- 1.0 CPU, düğümdeki temel alınan bir sanal CPU çekirdeğine eşit olur.
- Gpu'lar için aynı ölçüm kullanılır.
- Milicore cinsinden ölçülen kesirler tanımlayabilirsiniz. Örneğin 100 m, temel alınan bir vCPU çekirdeğinin 0,1'idir.
Tek bir NGINX podunun aşağıdaki temel örneğinde pod 100 m CPU süresi ve 128Mi bellek ister. Pod için kaynak sınırları 250 m CPU ve 256Mi belleğe ayarlanır.
kind: Pod
apiVersion: v1
metadata:
name: mypod
spec:
containers:
- name: mypod
image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 250m
memory: 256Mi
Kaynak ölçümleri ve atamaları hakkında daha fazla bilgi için bkz . Kapsayıcılar için işlem kaynaklarını yönetme.
AKS kümesinde uygulama geliştirme ve hata ayıklama
En iyi yöntem kılavuzu
Geliştirme ekipleri, Bridge to Kubernetes kullanarak aks kümesinde dağıtım yapmalı ve hata ayıklamalıdır.
Bridge to Kubernetes ile uygulamaları doğrudan aks kümesinde geliştirebilir, hata ayıklayabilir ve test edebilirsiniz. Ekip içindeki geliştiriciler, uygulama yaşam döngüsü boyunca derlemek ve test etmek için işbirliği yapar. Kubernetes Köprüsü uzantısıyla Visual Studio veya Visual Studio Code gibi mevcut araçları kullanmaya devam edebilirsiniz.
Bridge to Kubernetes ile tümleşik geliştirme ve test işleminin kullanılması, minikube gibi yerel test ortamlarına olan ihtiyacı azaltır. Bunun yerine, güvenli ve yalıtılmış kümelerde bile aks kümesi geliştirip test edebilirsiniz.
Not
Kubernetes'e Köprü, Linux podları ve düğümleri üzerinde çalışan uygulamalarla kullanılmak üzere tasarlanmıştır.
Kubernetes için Visual Studio Code (VS Code) uzantısını kullanma
En iyi yöntem kılavuzu
YAML bildirimleri yazarken Kubernetes için VS Code uzantısını yükleyin ve kullanın. Ayrıca, AKS kümesiyle seyrek etkileşim kuran uygulama sahiplerine yardımcı olabilecek tümleşik dağıtım çözümü için uzantıyı da kullanabilirsiniz.
Kubernetes için Visual Studio Code uzantısı, AKS'ye uygulama geliştirmenize ve dağıtmanıza yardımcı olur. Uzantı aşağıdaki özellikleri sağlar:
Kubernetes kaynakları, Helm grafikleri ve şablonları için Intellisense.
VS Code içinden Kubernetes kaynaklarına göz atma, dağıtma ve düzenleme özellikleri.
Intellisense, pod belirtimlerinde ayarlanan kaynak isteklerini veya sınırlarını denetler:
Sonraki adımlar
Bu makale, kümenizi ve iş yüklerinizi küme operatörü perspektifinden çalıştırmaya odaklanmıştır. Yönetici en iyi yöntemleri hakkında bilgi için bkz . Azure Kubernetes Service'te (AKS) yalıtım ve kaynak yönetimi için küme operatörü en iyi yöntemleri.
Bu en iyi uygulamalardan bazılarını uygulamak için bkz . Bridge to Kubernetes ile geliştirme.
Azure Kubernetes Service