Aracılığıyla paylaş


Azure Kubernetes Service (AKS) kümesinde düğüm taintlerini 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ı, podları düğümler üzerine yerleştirmekten sorumludur ve yukarı akış Kubernetes zamanlayıcısı kube-scheduler'a dayanır. tr-TR: Podların belirli düğümlerde çalışmasını, podları düğüm bağımlılığı kullanarak bir dizi düğüme ekleyerek veya düğüme, AKS zamanlayıcısıyla etkileşim kuran düğüm lekeleme kullanarak bir dizi podu uzak tutma talimatı vererek kısıtlayabilirsiniz.

Düğüm taint'leri, zamanlayıcının belirli podları işaretli düğümlere yerleştirmekten kaçınmasını sağlamak için bir düğümü işaretleyerek çalışır. Pod'un bir düğümde eşleşen bir taint ile zamanlanmasına izin vermek için pod üzerine tolerations 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. taint ve toleransların örnek kullanım durumları.

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ğer eşleşen bir tolerans yoksa hemen çıkarılır. Bir pod eşleşen bir toleransa sahipse ve tolerationSeconds belirtilmişse, çıkarılabilir.
  • NoSchedule: Sadece toleransı eşleşen podlar bu düğüme yerleştirilir. Mevcut podlar tahliye edilmiyor.
  • PreferNoSchedule: Zamanlayıcı, uygun tolerasyona sahip olmayan podların yerleştirilmesini önler.

Düğüm leke 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 kirletmelerinin düğüm bağlılığı olan podları zamanlamak için düğümde kalıcı olarak kalması amaçlanıyor. Düğüm taint'leri yalnızca AKS API kullanılarak eklenebilir, güncellenebilir 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 kirlenmesini kaldırabilirsiniz ve düğüm yaşam döngüsü boyunca bu garanti edilmez. Bunlar, ölçeği artırıldığında düğümün yeni çoğaltmalarında veya bir düğüm yükseltildiğinde tüm çoğaltmalarda 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 lekelerini kaldırdığınızda, yeni oluşturulan düğümler bu başlatma lekelerine sahip olmaz. 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 bozucu işaretler ve etiketler Kubernetes API'sinden değiştirilemez ve tam tersi de geçerlidir. Sistem taint'lerinde değişiklik yapılmasına izin verilmez.

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

Düğüm taintlerini kullan

Ö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'i kullanarak düğüm havuzu oluşturma

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

    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 taint'in ayarlandığını kontrol edin.

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

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

    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 kirlenmenin belirlendiğini kontrol edin.

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 taint'lerini yalnızca AKS API'sini kullanarak küme oluşturma veya yükseltme işlemi sırasında uygulayabilirsiniz. ARM şablonu kullanarak Yönetilen Küme düzeyinde bir işlem gerçekleştiriyorsanız, düğüm havuzu oluştururken veya güncelleştirirken düğümlerin başlangıçta hangi taint'lerle işaretlenmesi gerektiğini belirtebilirsiniz. İstek gövdesinde NodeInitializationTaints mevcut olduğunda aracı havuzu seviyesindeki işlemler engellenir.
  • Azure CLI kullanarak Windows düğüm havuzlarına başlatma taint'leri 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

  • Kaydedin veya aks-preview uzantısını az extension add komutunu kullanarak güncelleştirin.

    # 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 özelliği bayrağını az feature register komutunu kullanarak 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 az provider register kaynak sağlayıcısının kaydını yenileyin.

    az provider register --namespace Microsoft.ContainerService
    

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

  1. az aks create komutunu ve taint için --node-initialization-taints belirteceğiniz sku=gpu:NoSchedule parametresini kullanarak bir 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 taint'in ayarlandığını kontrol edin.

Düğüme başlatma taint'i eklemek için kümeyi güncelleme

  1. az aks update komutunu ve taint için --node-initialization-taints belirlemek adına sku=gpu:NoSchedule parametresini kullanarak düğüm başlatma taint'i eklemek için bir kümeyi güncelleştirin.

    Önemli

    Düğüm başlatma taint'i olan bir kümeyi güncelleştirirken, taint'ler kümedeki tüm düğüm havuzlarına uygulanır. Düğümleriniz VMSS kullanıyorsa, düğümün VMSS modeli güncelleştirildikten sonra (örneğin, düğüm görüntüsü sürümü yükseltme işleminden sonra) düğümdeki düğüm başlatma taint'lerine yönelik güncelleştirmeleri görüntüleyebilirsiniz. VMSS model güncellemesini tetikleyen bir işlem gerçekleşene kadar başlatma taint'leri düğümlerinizde görünmez.

    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 taint'in ayarlandığını kontrol edin.

Düğüm havuzunun durumunu kontrol et

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

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

    Düğüm kısıtlamalarını uyguladıysanız, aşağıdaki örnek çıktı, <node-pool-name> ile belirtilen Creating özellikli nodeTaints düğümlerden oluşan düğüm havuzunu gösterir.

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

    Düğüm başlatma lekelendirmelerini uyguladıysanız, aşağıdaki örnek çıktı <node-pool-name> düğüm havuzunun belirtilen Creating ile nodeInitializationTaints düğümlerden oluştuğunu gösterir.

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

Düğümde taint'in doğru ayarlandığını kontrol edin

  • Düğüm yapılandırmasındaki düğüm bozulmalarını ve düğüm başlatma bozulmalarını kubectl describe node komutunu kullanarak denetleyin.

    kubectl describe node $NODE_NAME
    

    Düğüm lekeleri uyguladıysanız, aşağıdaki örnek çıktı, <node-pool-name> düğüm havuzunda belirtilen Taints öğesinin gösterdiğini gösterir.

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

Önemli

Düğümleriniz VMSS kullanıyorsa, düğüm başlatma ikaz işaretleri, VMSS model güncellemesini tetikleyen bir işlem gerçekleşene kadar (örneğin, Kubernetes sürüm güncellemesi veya düğüm imajı sürüm yükseltmesi gibi) kümenizdeki gerçek düğümlerde görünmez.

Düğüm kirlerini kaldır

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

  • komutunu kullanarak az aks nodepool update düğüm lekelerini 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 ""
    

Tüm düğüm kirliliklerini kaldır

  • Düğüm havuzundan tüm düğüm kirlerini kaldırmak için az aks nodepool update komutunu kullanın. Aşağıdaki örnek komut, düğüm havuzundan tüm düğüm lekelerini 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 lekelerini kaldırma

Düğümdeki başlatma lekelerini 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ştirildiğinde lekeler tekrar ortaya çıkar. Yeni düğümler, ölçeklendirmeden sonra düğüm başlatma taint'ine sahip olmaya devam ediyor. Düğüm başlatma lekeleri, yükseltmeden sonra tüm düğümlerde görünür.
  • Kubernetes API'sini kullanarak düğümün yasağını kaldırın ve ardından AKS API'sini kullanarak yasağı kaldırarak düğüm başlatma yasaklarını kalıcı olarak kaldırın. Başlatma lekeleri AKS API kullanılarak küme belirtiminden kaldırıldıktan sonra, yeniden görüntüleme işlemlerinden sonra yeni oluşturulan düğümlerde başlatma lekeleri 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ırın

  • 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'ini geçici olarak kaldırma adımlarını izleyin.

  2. AKS API'sini az aks update komutunu kullanarak düğümden taint'i 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

  • Düğüm yapılandırmasındaki düğüm bozulmalarını ve düğüm başlatma bozulmalarını kubectl describe node komutunu kullanarak denetleyin.

    kubectl describe node $NODE_NAME
    

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

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

Sonraki adımlar