Aracılığıyla paylaş


Azure Red Hat OpenShift (ARO) kümesinde Azure Spot Sanal Makineler kullanma

Bu makalede, Azure Red Hat OpenShift kümenizi (ARO) Azure Spot Sanal Makineler kullanacak şekilde yapılandırmanıza olanak sağlayan gerekli ayrıntılar sağlanır.

Azure Spot Sanal Makineler kullanmak, kullanılmayan kapasitemizden önemli bir maliyet tasarrufuyla yararlanmanızı sağlar. Azure'ın kapasiteye geri ihtiyacı olduğunda, Azure altyapısı Azure Spot Sanal Makineler çıkaracaktır. Spot Örnekleri hakkında daha fazla bilgi için bkz. Spot Sanal Makineler.

Başlamadan önce

Başlamadan önce bir Azure Red Hat Openshift kümesinin dağıtıldığından emin olun. ARO kümesine ihtiyacınız varsa genel küme için ARO hızlı başlangıcına veya özel küme için özel küme öğreticisine bakın. Kümenizi Spot VM'leri kullanacak şekilde yapılandırma adımları hem özel hem de genel kümeler için aynıdır.

Bir ARO kümesinde her zaman Spot olmayan vm'ler olan en az üç çalışan düğümü ve üç denetim düğümü olmalıdır. ARO kümesinde spot VM tabanlı denetim düğümü olamaz.

Spot VM'ler ekleme

Azure Red Hat Openshift'te makine yönetimi MachineSet kullanılarak gerçekleştirilir. MachineSet kaynakları makine gruplarıdır. MachineSet'ler, ReplicaSet'ler podlara olduğu gibi makinelere yöneliktir. Daha fazla makineye ihtiyacınız varsa veya bunların ölçeğini azaltmanız gerekiyorsa, işlem gereksinimlerinizi karşılamak için makine kümesindeki Çoğaltmalar alanını değiştirirsiniz. Daha fazla bilgi edinmek için OpenShift MachineSet belgelerimize göz atın

Spot VM'lerin kullanımı, alanı bir MachineSet'in şablon belirtiminin içine eklenerek spotVMOptions belirtilir. Bu MachineSet'i oluşturmak için şunları yapacağız:

  1. Kümenizde çalışan bir MachineSet'in kopyasını alın.
  2. Değiştirilmiş bir MachineSet yapılandırması oluşturun.
  3. Bu MachineSet'i kümenize dağıtın

İlk olarak, CLI kullanarak OpenShift kümenize bağlanın.

oc login $apiServer -u kubeadmin -p <kubeadmin password>

Ardından kümenizdeki MachineSet'leri listeleyeceksiniz. Varsayılan kümede 3 MachineSet dağıtılır:

oc get machinesets -n openshift-machine-api

Aşağıda bu komuttan örnek bir çıkış gösterilmektedir:

NAME                                    DESIRED   CURRENT   READY   AVAILABLE   AGE
aro-cluster-5t2dj-worker-eastus1   1         1         1       1           2d22h
aro-cluster-5t2dj-worker-eastus2   1         1         1       1           2d22h
aro-cluster-5t2dj-worker-eastus3   1         1         1       1           2d22h

Ardından, dağıtılan MachineSet'i açıklayacaksınız. Machineset'i> yukarıda listelenen MachineSet'lerden biriyle değiştirin <ve bir dosyaya çıkışını sağlayın.

oc get machineset <machineset> -n openshift-machine-api -o yaml > spotmachineset.yaml

MachineSet'te aşağıdaki parametreleri değiştirmeniz gerekir:

  • metadata.name
  • spec.selector.matchLabels.machine.openshift.io/cluster-api-machineset
  • spec.template.metadata.labels.machine.openshift.io/cluster-api-machineset
  • spec.template.spec.providerSpec.value.spotVMOptions (Bu alanı ekleyin ve olarak ayarlayın {}.)

Aşağıda, bağlamla ilgili bazı ek bilgiler de dahil olmak üzere mevcut bir çalışan MachineSet üzerinde yeni bir Spot MachineSet temel alırken yapmanız gereken önemli değişiklikleri vurgulayan kısaltılmış bir Spot MachineSet YAML örneği verilmiştir. (Örnek, işlevsel bir MachineSet'in tamamını temsil etmez; aşağıda birçok alan atlanmıştır.)

apiVersion: machine.openshift.io/v1beta1
kind: MachineSet
metadata:
  name: aro-cluster-abcd1-spot-eastus
spec:
  replicas: 2
  selector:
    matchLabels:
      machine.openshift.io/cluster-api-cluster: aro-cluster-abcd1
      machine.openshift.io/cluster-api-machineset: aro-cluster-abcd1-spot-eastus
  template:
    metadata:
        machine.openshift.io/cluster-api-machineset: aro-cluster-abcd1-spot-eastus
    spec:
      providerSpec:
        value:
          spotVMOptions: {}
      taints:
        - effect: NoExecute
          key: spot
          value: 'true'

Dosya güncelleştirildikten sonra uygulayın.

oc create -f spotmachineset.yaml

MachineSet'inizin başarıyla oluşturulduğunu doğrulamak için aşağıdaki komutu çalıştırın:

oc get machinesets -n openshift-machine-api

Aşağıda örnek bir çıkış verilmişti. Makineleriniz "Hazır" durumunda olduğunda Machineset'iniz hazır olur.

  NAME                                    DESIRED   CURRENT   READY   AVAILABLE   AGE
aro-cluster-5t2dj-worker-eastus1           1         1         1       1           3d1h
aro-cluster-5t2dj-worker-eastus2           1         1         1       1           3d1h
aro-cluster-5t2dj-worker-eastus3           1         1         1       1           3d1h
spot                                       1         1         1       1           2m47s

Kesilebilir iş yüklerini zamanlama

Kesintiye uğramayan düğümlerin bu düğümlerde zamanlanmasını önlemek ve üzerinde zamanlanmasını istediğiniz podlara bu taint toleranslarını eklemek için Spot düğümlerine bir renk tonu eklemeniz önerilir. MachineSet belirtimi aracılığıyla düğümleri taint yapabilirsiniz.

Örneğin, aşağıdaki YAML'yi öğesine spec.template.specekleyebilirsiniz:

     taints:
        - effect: NoExecute
          key: spot
          value: 'true'

Bu, taint için spot='true' toleransları olmadığı sürece podların sonuç düğümünde zamanlanmasını önler ve bu toleransı olmayan tüm podları çıkarır.

Renk tonlarını ve toleransları uygulama hakkında daha fazla bilgi edinmek için bkz . Düğüm renk tonlarını kullanarak pod yerleşimini denetleme.

Kota

Kullanmakta olduğunuz makine türünün kotası kısa bir süre için çok düşükse ve sonunda yeterli olması gerekse bile (örneğin, başka bir düğüm oluşturulduğunda bir düğüm silinmeye devam ediyorsa) kota sorunları nedeniyle makineler başarısız duruma geçebilir. Bu nedenle, Spot örneklerinin gerekenden biraz daha yüksek olması için kullanacağınız makine türü için kota ayarlamanız önerilir (belki 2*n olabilir; burada n, bir makine tarafından kullanılan çekirdek sayısıdır). Bu ek yük, nispeten basit olsa da el ile müdahale edilen başarısız makineleri düzeltmek zorunda kalmamaktır.

Düğüm hazırlığı

Yukarıda bağlantılı Spot VM belgelerinde açıklandığı gibi, VM'ler artık kullanılabilir olmadığında veya belirtilen maksimum fiyatla artık kullanılabilir olmadığında Serbest bırakılmış sağlama durumuna geçer.

Bu, OpenShift'te Kendisini Hazır Değil düğümleri olarak gösterir. Makineler, düğüm olarak sağlanan aşamada iyi durumda kalır.

VM'ler yeniden kullanılabilir olduğunda Hazır duruma dönerler

Sorun giderme

Düğüm Hazır Değil durumunda takıldı, temel alınan VM serbest bırakıldı

Vm serbest bırakıldıktan sonra düğüm Hazır Değil durumunda uzun süre takılı kalırsa, düğümü silmeyi veya ilgili OpenShift makine nesnesini silmeyi deneyebilirsiniz.

Spot Makine Başarısız durumda takıldı

Spot VM kullanan bir makine (OpenShift nesnesi) Başarısız durumda takılı kalırsa, el ile silmeyi deneyin. VM artık mevcut olmadığından 403 nedeniyle silinemiyorsa makineyi düzenleyin ve sonlandırıcıları kaldırın.