Aracılığıyla paylaş


Azure Kubernetes Service (AKS) kümesinde düğüm renk tonlarını kullanma

Bu makalede, Azure Kubernetes Service (AKS) kümesinde düğüm renk tonlarının nasıl kullanılacağı açıklanmaktadır.

Genel bakış

AKS zamanlama mekanizması düğümlere pod yerleştirmekle sorumludur ve kube-scheduler olan yukarı akış Kubernetes zamanlayıcısını temel alır. Düğüm benzenşimini kullanarak podları bir düğüm kümesine ekleyerek veya düğüme AKS zamanlayıcısıyla etkileşim kuran düğüm renk tonlarını kullanarak bir dizi podu itme talimatı vererek belirli düğümlerde çalıştırılacak podları kısıtlayabilirsiniz.

Düğüm renk tonları, zamanlayıcının işaretli düğümlere belirli podları yerleştirmekten kaçınması için bir düğümü işaretleyerek çalışır. Zamanlayıcının eşleşen bir renk tonu olan bir düğümde bu podu zamanlamasına izin vermek için bir poda toleranslar yerleştirebilirsiniz. Taint'ler ve toleranslar, zamanlayıcının düğümlere podları nasıl yerleştireceklerini denetlemenize yardımcı olmak için birlikte çalışır. Daha fazla bilgi için bkz . Örnek kullanım örnekleri, renk tointleri ve toleranslar.

Renk tonları, bir etkisi olan anahtar-değer çiftleridir. Düğüm renk tonları kullanılırken efekt alanı için üç değer vardır: NoExecute, NoScheduleve PreferNoSchedule.

  • NoExecute: Düğümde zaten çalışan podlar, eşleşen bir toleransları yoksa hemen çıkarılır. Bir pod eşleşen bir toleransa sahipse, belirtilirse tolerationSeconds çıkarılabilir.
  • NoSchedule: Yalnızca eşleşen toleransı olan podlar bu düğüme yerleştirilir. Mevcut podlar çıkarılamaz.
  • PreferNoSchedule: Zamanlayıcı, eşleşen toleransı olmayan podların yerleştirilmesini önler.

Düğüm renk tonu seçenekleri

AKS düğümlerinize uygulanabilecek iki tür düğüm renk tonu vardır: düğüm renk tonları ve düğüm başlatma renk tonları.

  • Düğüm benint'lerinin düğüm benzimi olan podları zamanlamak için düğümde kalıcı olarak kalması amaçlanıyor. Düğüm taint'leri yalnızca AKS API'sini kullanarak eklenebilir, güncelleştirilebilir veya tamamen kaldırılabilir.
  • Düğüm başlatma renk tonları önyükleme zamanında düğüme yerleştirilir ve düğümlerinizi ayarlamak için fazladan zamana ihtiyaç duyabileceğiniz senaryolarda olduğu gibi geçici olarak kullanılması amaçlanır. Kubernetes API'sini kullanarak düğüm başlatma taint'ini kaldırabilirsiniz ve düğüm yaşam döngüsü boyunca garanti değildir. Bunlar yalnızca bir düğümün ölçeği artırıldıktan veya yükseltildikten/yeniden geliştirildikten sonra görünür. Yeni düğümler, ölçeklendirmeden sonra düğüm başlatma taint'ine sahip olmaya devam ediyor. Düğüm başlatma renk tonları, yükseltmeden sonra tüm düğümlerde görünür. Başlatma renk tonlarını tamamen kaldırmak istiyorsanız, Kubernetes API'sini kullanarak düğümleri temizledikten sonra AKS API'sini kullanarak bunları kaldırabilirsiniz. AKS API'sini kullanarak küme belirtiminden başlatma renk tonlarını kaldırdığınızda, yeni oluşturulan düğümler bu başlatma renk tonlarıyla gelmez. Başlatma taint'i mevcut düğümlerde hala varsa, bir düğüm görüntüsü yükseltme işlemi gerçekleştirerek kalıcı olarak kaldırabilirsiniz.

Not

AKS düğüm havuzu API'sini kullanarak uygulanan düğüm renk tonları ve etiketler Kubernetes API'sinden değiştirilemez ve tam tersi de geçerlidir. Sistem renk tonlarında değişiklik yapılmasına izin verilmez.

Bu, düğüm başlatma renk tonları için geçerli değildir.

Düğüm renk tonlarını kullanma

Önkoşullar

Bu makalede, mevcut bir AKS kümeniz olduğu varsayılır. AKS kümesine ihtiyacınız varsa Azure CLI, Azure PowerShell veya Azure portalını kullanarak bir küme oluşturabilirsiniz.

Düğüm taint ile düğüm havuzu oluşturma

  1. komutunu kullanarak az aks nodepool add bir taint ile bir düğüm havuzu oluşturun ve taint için belirtmek sku=gpu:NoSchedule üzere parametresini kullanın--node-taints.

    az aks nodepool add \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-count 1 \
        --node-taints "sku=gpu:NoSchedule" \
        --no-wait
    
  2. Düğüm havuzunun durumunu denetleyin.

  3. Düğümde renk tonunun ayarlandığını denetleyin.

Düğüm taint'i eklemek için düğüm havuzunu güncelleştirme

  1. komutunu kullanarak düğüm taint eklemek için düğüm havuzunu güncelleştirin az aks nodepool update ve taint için belirtmek sku=gpu:NoSchedule üzere parametresini kullanın--node-taints.

    az aks nodepool update \
        --resource-group $RESOURCE_GROUP_NAME \
        --cluster-name $CLUSTER_NAME \
        --name $NODE_POOL_NAME \
        --node-taints "sku=gpu:NoSchedule" \
        --no-wait
    
  2. Düğüm havuzunun durumunu denetleyin.

  3. Düğümde renk tonunun ayarlandığını denetleyin.

Düğüm başlatma renk tonlarını kullanma (önizleme)

Önemli

AKS önizleme özellikleri self servis ve kabul temelinde kullanılabilir. Önizlemeler "olduğu gibi" ve "kullanılabilir" olarak sağlanır ve hizmet düzeyi sözleşmelerinin ve sınırlı garantinin dışında tutulur. AKS önizlemeleri, müşteri desteği tarafından kısmen en iyi çaba temelinde ele alınmaktadır. Bu nedenle, bu özellikler üretim kullanımı için tasarlanmamıştır. Daha fazla bilgi için aşağıdaki destek makalelerine bakın:

Ön koşullar ve sınırlamalar

  • Azure CLI sürümünün veya sonraki bir sürümün 3.0.0b3 yüklü ve yapılandırılmış olması gerekir. Sürümü bulmak için az --version komutunu çalıştırın. Yüklemeniz veya yükseltmeniz gerekirse, bkz. Azure CLI yükleme.
  • Başlatma renk tonlarını yalnızca AKS API'sini kullanırken küme oluşturma veya yükseltme yoluyla uygulayabilirsiniz. ARM şablonları kullanıyorsanız, düğüm havuzu oluşturma ve güncelleştirme sırasında düğüm başlatma taint'leri belirtebilirsiniz.
  • Azure CLI kullanarak Windows düğüm havuzlarına başlatma renk tonları uygulayamazsınız.

Kümenizin kimlik bilgilerini alma

  • komutunu kullanarak az aks get-credentials AKS kümenizin kimlik bilgilerini alın.

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

Azure CLI uzantısını aks-preview yükleme

  • veya komutunu kullanarak aks-preview uzantısını kaydedin veya az extension update güncelleştirinaz extension add.

    # Register the aks-preview extension
    az extension add --name aks-preview
    
    # Update the aks-preview extension
    az extension update --name aks-preview
    

Özellik bayrağını NodeInitializationTaintsPreview kaydetme

  1. NodeInitializationTaintsPreview komutunu kullanarak özellik bayrağını az feature register kaydedin.

    az feature register --namespace "Microsoft.ContainerService" --name "NodeInitializationTaintsPreview"
    

    Durumun Kayıtlı olarak gösterilmesi birkaç dakika sürer.

  2. komutunu kullanarak az feature show kayıt durumunu doğrulayın.

    az feature show --namespace "Microsoft.ContainerService" --name "NodeInitializationTaintsPreview"
    
  3. Durum Kayıtlı olarak yansıtıldığında, komutunu kullanarak Microsoft.ContainerService kaynak sağlayıcısının kaydını yenileyinaz provider register.

    az provider register --namespace Microsoft.ContainerService
    

Düğüm başlatma taint ile küme oluşturma

  1. komutunu ve --node-initialization-taints taint için belirteceğiniz sku=gpu:NoSchedule parametreyi az aks create kullanarak düğüm başlatma taint'i ile bir küme oluşturun.

    Önemli

    Belirttiğiniz düğüm başlatma taint'leri kümedeki tüm düğüm havuzlarına uygulanır. Başlatma taint'ini belirli bir düğüme uygulamak için CLI yerine ARM şablonu kullanabilirsiniz.

    az aks create \
        --resource-group $RESOURCE_GROUP_NAME \
        --name $CLUSTER_NAME \
        --node-count 1 \
        --node-init-taints "sku=gpu:NoSchedule" \
        --generate-ssh-keys
    
  2. Düğüm havuzunun durumunu denetleyin.

  3. Düğümde renk tonunun ayarlandığını denetleyin.

Düğüm başlatma taint'i eklemek için kümeyi güncelleştirme

  1. Komutunu ve --node-initialization-taints taint için belirteceğiniz sku=gpu:NoSchedule parametreyi az aks update kullanarak düğüm başlatma taint'i eklemek için bir kümeyi güncelleştirin.

    Önemli

    Düğüm başlatma taint'i ile bir kümeyi güncelleştirirken, tint'ler kümedeki tüm düğüm havuzlarına uygulanır. Yeniden görselleştirme işleminden sonra düğümde düğüm başlatma renk tonlarına yönelik güncelleştirmeleri görüntüleyebilirsiniz.

    az aks update \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --node-init-taints "sku=gpu:NoSchedule"
    
  2. Düğüm havuzunun durumunu denetleyin.

  3. Düğümde renk tonunun ayarlandığını denetleyin.

Düğüm havuzunun durumunu denetleme

  • Düğüm taint'ini veya başlatma taint'ini uyguladıktan sonra komutunu kullanarak düğüm havuzunun az aks nodepool list durumunu denetleyin.

    az aks nodepool list --resource-group $RESOURCE_GROUP_NAME --cluster-name $CLUSTER_NAME
    

    Düğüm renk tonlarını uyguladıysanız, aşağıdaki örnek çıktı düğüm havuzunun <node-pool-name> belirtilen nodeTaintsile düğümler olduğunu Creating gösterir:

    [
      {
        ...
        "count": 1,
        ...
        "name": "<node-pool-name>",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "nodeTaints":  [
          "sku=gpu:NoSchedule"
        ],
        ...
      },
     ...
    ]
    

    Düğüm başlatma taint'lerini uyguladıysanız, aşağıdaki örnek çıktı düğüm havuzunun <node-pool-name> belirtilen nodeInitializationTaintsile düğümler olduğunu Creating gösterir:

    [
      {
        ...
        "count": 1,
        ...
        "name": "<node-pool-name>",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "nodeInitializationTaints":  [
          "sku=gpu:NoSchedule"
        ],
        ...
      },
     ...
    ]
    

Düğümde renk tonunun ayarlandığını denetleyin

  • komutunu kullanarak düğüm yapılandırmasında düğüm taint'lerini ve düğüm başlatma taint'lerini kubectl describe node denetleyin.

    kubectl describe node $NODE_NAME
    

    Düğüm renk tonları uyguladıysanız, aşağıdaki örnek çıktı düğüm havuzunda belirtilen Taintsöğesinin bulunduğunu <node-pool-name> gösterir:

    [
        ...
        Name: <node-pool-name>
        ...
        Taints: sku=gpu:NoSchedule
        ...
        ],
        ...
     ...
    ]
    

Düğüm renk tonlarını kaldırma

Belirli bir düğüm taint'ini kaldırma

  • komutunu kullanarak düğüm renk tonlarını az aks nodepool update kaldırın. Aşağıdaki örnek komut düğüm havuzundan "sku=gpu:NoSchedule" düğüm taint'ini kaldırır.

    az aks nodepool update \
    --cluster-name $CLUSTER_NAME \
    --name $NODE_POOL_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --node-taints "sku=gpu:NoSchedule"
    

Tüm düğüm renk tonlarını kaldırma

  • komutunu kullanarak düğüm havuzundan tüm düğüm renk tonlarını az aks nodepool update kaldırın. Aşağıdaki örnek komut, düğüm havuzundan tüm düğüm renk tonlarını kaldırır.

    az aks nodepool update \
    --cluster-name $CLUSTER_NAME \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $NODE_POOL_NAME \
    --node-taints ""
    

Düğüm başlatma renk tonlarını kaldırma

Düğüm başlatma renk tonlarını düğümden kaldırmak için aşağıdaki seçeneklere sahipsiniz:

  • Kubernetes API'sini kullanarak düğüm başlatma taint'lerini geçici olarak kaldırın. Bunları bu şekilde kaldırırsanız, düğüm ölçeklendirme veya yükseltme gerçekleştikten sonra renk tonları yeniden görünür. Yeni düğümler, ölçeklendirmeden sonra düğüm başlatma taint'ine sahip olmaya devam ediyor. Düğüm başlatma renk tonları, yükseltmeden sonra tüm düğümlerde görünür.
  • Kubernetes API'sini kullanarak düğümün boyasını kaldırıp AKS API'sini kullanarak taint'i kaldırarak düğüm başlatma renk tonlarını kalıcı olarak kaldırın. Başlatma renk tonları AKS API kullanılarak küme belirtiminden kaldırıldıktan sonra, yeniden başlatma işlemlerinden sonra yeni oluşturulan düğümlerde başlatma renk tonları olmaz.

Düğüm havuzu çoğaltmalarından tüm başlatma taint oluşumlarını kaldırdığınızda, mevcut başlatma taint'i herhangi bir yeni başlatma taint'i içeren bir yükseltmeden sonra yeniden görünebilir.

Düğüm başlatma taint'lerini geçici olarak kaldırma

  • komutunu kullanarak kubectl taint nodes düğüm başlatma taint'lerini geçici olarak kaldırın.

    Bu komut taint'i yalnızca belirtilen düğümden kaldırır. Taint'i düğüm havuzundaki her düğümden kaldırmak istiyorsanız, taint'in kaldırılmasını istediğiniz her düğüm için komutunu çalıştırmanız gerekir.

    kubectl taint nodes $NODE_POOL_NAME sku=gpu:NoSchedule-
    

    Kaldırıldıktan sonra düğüm başlatma taint'leri, düğüm ölçeklendirme veya yükseltme işlemi gerçekleştikten sonra yeniden görünür.

Düğüm başlatma taint'lerini kalıcı olarak kaldırma

  1. Kubernetes API'sini kullanarak düğüm başlatma taint'ini kaldırmak için Düğüm başlatma taint'lerini geçici olarak kaldırma'daki adımları izleyin.

  2. komutunu kullanarak AKS API'sini kullanarak düğümden taint'i az aks update kaldırın. Bu komut, kümedeki her düğümden düğüm başlatma taint'ini kaldırır.

    az aks update \
    --resource-group $RESOURCE_GROUP_NAME \
    --name $CLUSTER_NAME \
    --node-init-taints ""
    

Taint'in düğümden kaldırılıp kaldırılmadığını denetleyin

  • komutunu kullanarak düğüm yapılandırmasında düğüm taint'lerini ve düğüm başlatma taint'lerini kubectl describe node denetleyin.

    kubectl describe node $NODE_NAME
    

    Bir düğüm taint'ini kaldırdıysanız, aşağıdaki örnek çıktıda düğüm havuzunun <node-pool-name> altında Taintskaldırılan renk tonu olmadığını gösterir:

    [
        ...
        Name: <node-pool-name>
        ...
        Taints: 
        ...
        ],
        ...
     ...
    ]
    

Sonraki adımlar