ECI, spot örnekleri destekler. Örnek maliyetlerini azaltmak için kısa ömürlü İşler (Jobs) ve yüksek ölçeklenebilirliğe ve hata toleransına sahip belirli durumsuz uygulamalarda spot örnekleri kullanabilirsiniz. Bu konuda, Kubernetes kümesinde bir spot ECI pod'unun nasıl oluşturulacağı açıklanmaktadır.
Arka plan bilgileri
Spot örnek, düşük maliyetli ve teklife dayalı bir bilgi işlem kaynağıdır. Konteynerlerinizi çalıştırmak üzere Alibaba Cloud'daki boşta kalan kaynaklara teklif verebilirsiniz. Teklifiniz mevcut piyasa fiyatının altına düştüğünde veya kaynak envanteri yetersiz kaldığında bu kaynaklar geri alınır.
Spot örnekler; esnek şekilde ölçeklendirilebilen web hizmetleri, görüntü işleme, büyük veri analitiği ve büyük ölçekli paralel hesaplama gibi kısa süreli çalışan işler ile yüksek ölçeklenebilirliğe ve hata toleransına sahip durumsuz uygulamalar için uygundur. Uygulamanız ne kadar dağıtık, ölçeklenebilir ve hata toleranslı olursa, spot örnekler kullanarak maliyetlerden o kadar tasarruf edersiniz ve aktarım hızınızı o kadar artırırsınız. Daha fazla bilgi için bkz. Spot örnek nedir?.
Temel kavramlar
Bir spot örnek oluşturmadan önce aşağıdaki kavramları anlayın:
-
Faturalandırma yöntemi
Spot örneğin piyasa fiyatı arz ve talebe göre dalgalanır. Bir spot örnek oluştururken bir teklif ilkesi belirtmeniz gerekir. Teklifiniz belirtilen örnek türü için anlık piyasa fiyatından yüksekse ve envanter yeterliyse örnek başarıyla oluşturulur. Oluşturulduktan sonra örnek, koruma süresi boyunca (varsayılan olarak 1 saat) satın alma sırasındaki piyasa fiyatıyla faturalandırılır. Koruma süresi sona erdikten sonra örnek, anlık piyasa fiyatıyla faturalandırılır.
NotSpot örnekler, kullandıkça öde örneklerine kıyasla indirimli olarak sunulur. Gerçek fiyat arz ve talebe göre değişir ve yalnızca gerçek kullanım süresi için ücretlendirilirsiniz. Daha fazla bilgi için bkz. Spot örneklerin faturalandırılması.
-
Geri alma mekanizması
Koruma süresi sona erdikten sonra sistem, örnek türünün piyasa fiyatını ve envanterini her 5 dakikada bir otomatik olarak kontrol eder. Piyasa fiyatı herhangi bir anda teklifinizden yüksek olursa veya örnek türünün envanteri yetersiz kalırsa sistem spot örneği serbest bırakır.
NotSistem kaynakları geri almadan yaklaşık 3 dakika önce, örneğin serbest bırakılmak üzere olduğunu belirten bir olay oluşturur.
Sistem kaynakları geri aldıktan sonra örnek için faturalandırma durur. Örnek bilgileri korunur ve durumu Süresi Doldu olarak değişir.
Kullanım notları
Spot örnekleri kullanırken aşağıdaki hususlara dikkat edin:
-
Uygun bir örnek türü seçin ve makul bir teklif verin.
Bir örnek türü seçmenize ve teklif vermenize yardımcı olmak için son 30 güne ait spot örneklerle ilgili bilgileri sorgulamak üzere ECS OpenAPI işlemlerini çağırabilirsiniz. İlgili işlemler şunlardır:
DescribeSpotPriceHistory: Geçmiş örnek fiyatlarını sorgular.
DescribeSpotAdvice: Örneklerin ortalama serbest bırakılma oranı ve ortalama indirim oranı gibi bilgileri sorgular.
ÖnemliPiyasa fiyatı dalgalanmalarını dikkate almak ve iş maliyeti beklentilerinize uygun olmak için yeterince yüksek bir teklif belirleyin. Bu yaklaşım, bir spot örneğin başarıyla oluşturulma olasılığını artırır ve fiyat değişiklikleri nedeniyle örneğin serbest bırakılmasını önler; böylece maliyetlerden tasarruf ederken iş ihtiyaçlarınızı karşılayabilirsiniz.
Önemli verilerinizi, spot örneklerin serbest bırakılmasından etkilenmeyen depolama ortamlarında (örneğin, örnekle birlikte silme seçeneği devre dışı bırakılmış cloud diskler veya NAS) saklayın.
Oluşturma yöntemleri
Bir ECS örnek türü belirterek veya vCPU ve bellek belirterek spot bir esnek konteyner örneği oluşturabilirsiniz:
-
Bir ECS örnek türü belirtin
Faturalandırma, belirtilen örnek türünün kullandıkça öde piyasa fiyatına ve anlık indirime göre yapılır.
-
vCPU ve bellek belirtin
Bu yöntemin etkisi, bir ECS örnek türü belirtmekle aynıdır. Sistem, kaynak ve fiyat gereksinimlerini karşılayan bir ECS örnek türünü otomatik olarak eşleştirir. Faturalandırma, bu eşleşen örnek türünün piyasa fiyatına göre yapılır. Diğer bir deyişle, indirim eşleşen ECS örnek türünün piyasa fiyatına uygulanır; karşılık gelen vCPU ve belleğin kullandıkça öde fiyatına değil.
Bu yöntem yalnızca 2 vCPU veya daha fazlasını içeren teknik özellikleri destekler. Desteklenen vCPU ve bellek teknik özellikleri aşağıdaki tabloda listelenmiştir. Desteklenmeyen bir teknik özellik belirtirseniz sistem bunu otomatik olarak bir üst desteklenen teknik özelliğe yuvarlar.
vCPU
Bellek (GiB)
2
2, 4, 8, 16
4
4, 8, 16, 32
8
8, 16, 32, 64
12
12, 24, 48, 96
16
16, 32, 64, 128
24
24, 48, 96, 192
32
32, 64, 128, 256
52
96, 192, 384
64
128, 256, 512
Yapılandırma
Pod meta verilerine açıklamalar (annotations) ekleyerek bir spot örnek oluşturabilirsiniz. Aşağıdaki tabloda ilgili açıklamalar açıklanmaktadır.
|
Açıklama |
Örnek değer |
Zorunlu |
Açıklama |
|
k8s.aliyun.com/eci-spot-strategy |
SpotAsPriceGo |
Evet |
Spot örnek için teklif stratejisi. Geçerli değerler:
|
|
k8s.aliyun.com/eci-spot-price-limit |
"0.5" |
Hayır |
Spot örnek için maksimum saatlik fiyat. Üç ondalık basamağa kadar bir değer belirtebilirsiniz. Bu açıklama yalnızca |
|
k8s.aliyun.com/eci-spot-duration |
"0" |
Hayır |
Spot örnek için koruma süresi (saat cinsinden). Varsayılan değer 1'dir. 0 değeri koruma süresi olmadığını gösterir. |
|
k8s.aliyun.com/eci-spot-fallback |
"true" |
Hayır |
Envanter yetersizliği nedeniyle spot örnek oluşturulamadığında kullandıkça öde bir örnek oluşturulup oluşturulmayacağını belirtir. Varsayılan değer false'tur. |
Açıklamaları pod'un meta verileri altına ekleyin. Örneğin, bir Job oluştururken açıklamayı
spec>template>metadataaltına ekleyin.Esnek Konteyner Örneği ile ilgili açıklamalar yalnızca bir pod oluşturulduğunda uygulanır. Mevcut bir pod'a bu açıklamaları eklemek veya değiştirmek hiçbir etki yaratmaz.
Örnek 1: Bir ECS örnek türü belirtin ve SpotWithPriceLimit kullanın
Örnek 2: vCPU ve bellek belirtin ve SpotAsPriceGo kullanın
Örnek 3: Koruma süresi ayarlamayın
Örnek 4: Kullandıkça öde örneğine geri dönün
Geri alma ayrıntıları
Bir spot örnek oluşturulduktan sonra koruma süresi boyunca normal şekilde çalışır. Koruma süresi sona erdiğinde, piyasa fiyatı teklifinizi aşarsa veya kaynak envanteri yetersiz kalırsa spot örnek geri alınır. Bu bölümde, spot örnek geri alımıyla ilgili olaylar ve pod durumları açıklanmaktadır.
-
Serbest bırakma öncesi olay
Bir spot örnek geri alınmadan yaklaşık üç dakika önce bir
SpotToBeReleasedolayı oluşturulur.ÖnemliECI, spot örneğin serbest bırakılacağını Kubernetes Olayları aracılığıyla size bildirir. Bu süre zarfında, örnek geri alımından kaynaklanan iş kesintilerini önlemek için gerekli adımları atabilirsiniz. Daha fazla bilgi için bkz. Sorunsuz sonlandırma.
-
Pod hakkında ayrıntılı bilgileri görüntülemek için
kubectl describekomutunu çalıştırın. ÇıktınınEventsbölümünde serbest bırakma öncesi olayı görebilirsiniz. Aşağıda bir örnek verilmiştir:Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning SpotToBeReleased 3m32s kubelet, eci Spot ECI will be released in 3 minutes -
Olay bilgilerini görüntülemek için
kubectl get eventskomutunu çalıştırın. Çıktıda serbest bırakma öncesi olayı görebilirsiniz. Aşağıda bir örnek verilmiştir:LAST SEEN TYPE REASON OBJECT MESSAGE 3m39s Warning SpotToBeReleased pod/pi-frmr8 Spot ECI will be released in 3 minutes
-
-
Geri alma sonrası pod durumu
Bir spot örnek geri alındıktan sonra bilgileri korunur ancak durumu
Failedolarak değişir ve nedenBidFailedolur.-
Pod bilgilerini görüntülemek için
kubectl get podkomutunu çalıştırın. Çıktıda pod durumunun değiştiğini görebilirsiniz. Aşağıda bir örnek verilmiştir:NAME READY STATUS RESTARTS AGE pi-frmr8 1/1 BidFailed 0 3h5m -
Pod hakkında ayrıntılı bilgileri görüntülemek için
kubectl describekomutunu çalıştırın. Çıktıda pod durumu bilgilerini görebilirsiniz. Aşağıda bir örnek verilmiştir:Status: Failed Reason: BidFailed Message: The pod is spot instance, and have been released at 2020-04-08T12:36Z
-
Sorunsuz sonlandırma
Bir spot örnek geri alınmadan yaklaşık üç dakika önce bir SpotToBeReleased olayı oluşturulur ve pod'un koşullarındaki ContainerInstanceExpired alanı true olarak ayarlanır. Spot örnek geri alımından kaynaklanan iş kesintilerini en aza indirmek için sorunsuz sonlandırma ve pod rotasyonu uygulamak üzere bu bildirim mekanizmalarını kullanın.
Sanal Düğüm, ECI spot örnekleri için sorunsuz sonlandırmayı destekler. ECI pod'unuza k8s.aliyun.com/eci-spot-release-strategy: api-evict açıklamasını ekleyebilirsiniz. Sanal düğüm bir SpotToBeReleased olayı aldığında, spot örneği tahliye etmek için Eviction API öğesini çağırır.
Pod koşulları aracılığıyla kesinti bildirimlerini ve Eviction API aracılığıyla tahliyeyi desteklemek için ACK Virtual Node'u v2.11.0 veya sonraki bir sürüme yükseltmeniz gerekir. Daha fazla bilgi için bkz. ACK Virtual Node.
API tarafından başlatılan bir tahliye, PodDisruptionBudget (PDB) ve terminationGracePeriodSeconds yapılandırmalarınıza saygı duyar. API kullanarak bir Eviction nesnesi oluşturmak, bir pod üzerinde ilke kontrollü bir DELETE işlemi gerçekleştirmeye benzer. Süreç şu şekildedir:
-
API isteği
Sanal düğüm bir
SpotToBeReleasedolayı alır ve Eviction API'yi çağırır. -
PDB kontrolü
API sunucusu, hedef pod ile ilişkili PodDisruptionBudget'ı doğrular.
-
Tahliye yürütmesi
API sunucusu tahliyeye izin verirse pod şu şekilde silinir:
API sunucusundaki pod kaynağı bir silme zaman damgasıyla güncellenir; bundan sonra API sunucusu pod'u sonlandırılıyor olarak kabul eder. Pod kaynağı ayrıca yapılandırılan bekleme süresiyle işaretlenir.
Pod'un çalıştığı düğümdeki kubelet, pod kaynağının sonlandırılmak üzere işaretlendiğini fark eder ve yerel pod'u sorunsuz bir şekilde kapatmaya başlar.
Kubelet pod'u kapatırken kontrol düzlemi pod'u Endpoint ve EndpointSlice nesnelerinden kaldırır. Sonuç olarak, denetleyiciler artık pod'u geçerli bir nesne olarak görmez.
Pod'un bekleme süresi dolduğunda kubelet yerel pod'u zorla sonlandırır.
Kubelet, API sunucusuna pod kaynağını silmesini bildirir.
API sunucusu pod kaynağını siler.
-
İş yükü uzlaştırması
Hedef pod bir denetleyici tarafından yönetiliyorsa (ReplicaSet, StatefulSet veya hata toleranslı bir Job, sparkApplication ya da Workflow gibi), denetleyici genellikle tahliye edilen pod'un yerine yeni bir pod oluşturur.
PodDisruptionBudget yanlış yapılandırılırsa veya Eviction API çağrıldığında Ready durumunda olmayan çok sayıda pod varsa tahliye işlemi engellenebilir. Tahliye, spot örneğin süresi dolmadan tamamlanmazsa örnek hemen geri alınır.