Tüm Ürünler
Search
Belge Merkezi

Elastic Container Instance:Spot örnek oluşturun

Son Güncelleme:Oct 06, 2026

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.

    Not

    Spot ö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.

    Not
    • Sistem 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:

    Önemli

    Piyasa 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:

  • SpotWithPriceLimit: Spot örnek için maksimum saatlik fiyat belirler. Bu stratejiyi kullanıyorsanız k8s.aliyun.com/eci-spot-price-limit açıklamasını kullanarak fiyat sınırını da belirtmeniz gerekir.

  • SpotAsPriceGo: Sistem otomatik olarak mevcut piyasa fiyatından teklif verir.

    Önemli

    SpotAsPriceGo ilkesini kullanırsanız ve seçilen alanda belirtilen örnek türü için kaynaklar kıt ise fiyat standart kullandıkça öde fiyatına kadar yükselebilir.

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-strategy değeri SpotWithPriceLimit olarak ayarlandığında geçerlidir.

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.

Önemli
  • Açıklamaları pod'un meta verileri altına ekleyin. Örneğin, bir Job oluştururken açıklamayı spec>template>metadata altı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

apiVersion: batch/v1
kind: Job
metadata:
  name: test
spec:
  template:
    metadata:
      labels:
        app: perl
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-use-specs : "ecs.c6.large"           # Specify an ECS instance type.
        k8s.aliyun.com/eci-spot-strategy: "SpotWithPriceLimit"  # Use a bidding strategy with a custom price limit.
        k8s.aliyun.com/eci-spot-price-limit: "0.25"            # Set the maximum hourly price.
    spec:
      containers:
      - name: pi
        image: registry.cn-shanghai.aliyuncs.com/eci_open/perl:5
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

Yukarıdaki YAML örneği, ecs.c6.large örnek türüne sahip bir spot örnek oluşturur.

  • Oluşturma sırasında, örnek türü ve fiyat sınırı gereksinimlerini karşılayan hiçbir envanter yoksa oluşturma işlemi başarısız olur.

  • Oluşturulduktan sonra örnek 1 saatlik bir koruma süresine sahiptir. 1 saatlik koruma süresi sona erdiğinde, piyasa fiyatı teklifinizi aşarsa veya örnek türü için envanter yetersiz kalırsa spot örnek geri alınır.

Örnek 2: vCPU ve bellek belirtin ve SpotAsPriceGo kullanın

  • pod.spec.resources kullanarak vCPU ve bellek belirtin

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: test
    spec:
      template:
        metadata:
          labels:
            app: perl
            alibabacloud.com/eci: "true" 
          annotations:
            k8s.aliyun.com/eci-spot-strategy: "SpotAsPriceGo"  # Use the system's automatic bidding, which follows the real-time market price.
        spec:
          containers:
          - name: pi
            image: registry.cn-shanghai.aliyuncs.com/eci_open/perl:5
            command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
            resources:
              limits:              # Specify 2 vCPUs and 4 GiB of memory for the pi container.
                cpu: 2000m
                memory: 4096Mi
          restartPolicy: Never
  • Bir açıklama kullanarak vCPU ve bellek belirtin

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: test
    spec:
      template:
        metadata:
          labels:
            app: perl
            alibabacloud.com/eci: "true" 
          annotations:
            k8s.aliyun.com/eci-use-specs : "2-4Gi"             # Specify vCPU and memory. Instances with 2 vCPUs or more are supported.
            k8s.aliyun.com/eci-spot-strategy: "SpotAsPriceGo"  # Use the system's automatic bidding, which follows the real-time market price.
        spec:
          containers:
          - name: pi
            image: registry.cn-shanghai.aliyuncs.com/eci_open/perl:5
            command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
          restartPolicy: Never

Yukarıdaki YAML örnekleri, 2 vCPU ve 4 GiB belleğe sahip bir spot örnek oluşturur.

  • Oluşturma sırasında, kaynak gereksinimlerini karşılayan hiçbir envanter yoksa oluşturma işlemi başarısız olur.

  • Oluşturulduktan sonra örnek 1 saatlik bir koruma süresine sahiptir. 1 saatlik koruma süresi sona erdiğinde, piyasa fiyatı teklifinizi aşarsa veya örnek türü için envanter yetersiz kalırsa spot örnek geri alınır.

Örnek 3: Koruma süresi ayarlamayın

apiVersion: batch/v1
kind: Job
metadata:
  name: test
spec:
  template:
    metadata:
      labels:
        app: perl
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-use-specs : "2-4Gi"             # Specify vCPU and memory. Instances with 2 vCPUs or more are supported.
        k8s.aliyun.com/eci-spot-strategy: "SpotAsPriceGo"  # Use the system's automatic bidding, which follows the real-time market price.
        k8s.aliyun.com/eci-spot-duration: "0"              # Set no protection period.
    spec:
      containers:
      - name: pi
        image: registry.cn-shanghai.aliyuncs.com/eci_open/perl:5
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

Yukarıdaki YAML örneği, 2 vCPU ve 4 GiB belleğe sahip bir spot örnek oluşturur.

  • Oluşturma sırasında, kaynak gereksinimlerini karşılayan hiçbir envanter yoksa oluşturma işlemi başarısız olur.

  • Oluşturulduktan sonra koruma süresi yoktur. Piyasa fiyatı teklifi aştığında veya örnek türü için envanter yetersiz kaldığında spot örnek hemen geri alınır.

Örnek 4: Kullandıkça öde örneğine geri dönün

apiVersion: batch/v1
kind: Job
metadata:
  name: test
spec:
  template:
    metadata:
      labels:
        app: perl
        alibabacloud.com/eci: "true" 
      annotations:
        k8s.aliyun.com/eci-use-specs : "ecs.c6.large"           # Specify an ECS instance type.
        k8s.aliyun.com/eci-spot-strategy: "SpotWithPriceLimit"  # Use a bidding strategy with a custom price limit.
        k8s.aliyun.com/eci-spot-price-limit: "0.05"            # Set the maximum hourly price.
        k8s.aliyun.com/eci-spot-fallback: "true"                # Automatically convert to a pay-as-you-go instance if spot inventory is unavailable.
    spec:
      containers:
      - name: pi
        image: registry.cn-shanghai.aliyuncs.com/eci_open/perl:5
        command: ["perl",  "-Mbignum=bpi", "-wle", "print bpi(2000)"]
      restartPolicy: Never

Yukarıdaki YAML örneği, ecs.c6.large örnek türüne sahip bir spot örnek oluşturur.

  • Oluşturma sırasında, örnek türü ve fiyat sınırı gereksinimlerini karşılayan envanter mevcutsa bir spot örnek oluşturulur. Oluşturulduktan sonra örnek 1 saatlik bir koruma süresine sahiptir. 1 saatlik koruma süresi sona erdiğinde, piyasa fiyatı teklifinizi aşarsa veya örnek türü için envanter yetersiz kalırsa spot örnek geri alınır.

  • Oluşturma sırasında, örnek türü ve fiyat sınırı gereksinimlerini karşılayan hiçbir envanter yoksa bir kullandıkça öde örnek oluşturulur. Oluşturulduktan sonra sistem örneği otomatik olarak geri almaz.

    Örnek oluşturulduktan sonra, pod'un kullandıkça öde örneğine geri dönüp dönmediğini doğrulamak için kubectl describe pod komutunu çalıştırarak pod'un olaylarını kontrol edebilirsiniz. SpotDegraded olayı, örneğin kullandıkça öde örneğine geri döndüğünü gösterir.

    Events:
      Type     Reason                  Age   From               Message
      ----     ------                  ---   ----               -------
      Warning  MissingClusterDNS       32m   virtual-kubelet    pod: "default/test4-dbrw6(3ef7c65d-3908-40e3-ab1f-39ff9562a36b)". virtual-kubelet does not have ClusterDNS IP configured and cannot create Pod using "ClusterFirst" policy. Falling back to "Default" policy.
      Warning  SpotDegraded            32m   EciService         [eci.containergroup]Spot[SpotStrategy:SpotWithPriceLimit,SpotPriceLimit:0.001,SpotDuration:1] will be degraded because the specified instance is out of stock
      Normal   SuccessfulHitImageCache 32m   EciService         [eci.imagecache]Successfully hit image cache imc-2ze7udxttnd(xxx), eci will be scheduled with this image cache.
      Normal   Pulled                  32m   kubelet            Container image "registry-vpc.cn-beijing.aliyuncs.com/eci_open/perl:5" already present on machine
      Normal   Created                 32m   kubelet            Created container pi
      Normal   Started                 32m   kubelet            Started container pi

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 SpotToBeReleased olayı oluşturulur.

    Önemli

    ECI, 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 describe komutunu çalıştırın. Çıktının Events bö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 events komutunu ç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 Failed olarak değişir ve neden BidFailed olur.

    • Pod bilgilerini görüntülemek için kubectl get pod komutunu ç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 describe komutunu ç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.

Önemli

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:

  1. API isteği

    Sanal düğüm bir SpotToBeReleased olayı alır ve Eviction API'yi çağırır.

  2. PDB kontrolü

    API sunucusu, hedef pod ile ilişkili PodDisruptionBudget'ı doğrular.

  3. Tahliye yürütmesi

    API sunucusu tahliyeye izin verirse pod şu şekilde silinir:

    1. 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.

    2. 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.

    3. 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.

    4. Pod'un bekleme süresi dolduğunda kubelet yerel pod'u zorla sonlandırır.

    5. Kubelet, API sunucusuna pod kaynağını silmesini bildirir.

    6. API sunucusu pod kaynağını siler.

  4. İş 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.

Not

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.