Aracılığıyla paylaş


Karma işletim sistemi Kubernetes kümelerinde kullanmak için uygulamaları uyarlama

Şunlar için geçerlidir: Azure Stack HCI 22H2 üzerinde AKS, Windows Server'da AKS

Arc tarafından etkinleştirilen AKS, Kubernetes kümelerini hem Linux hem de Windows düğümleriyle çalıştırmanıza olanak tanır, ancak bu karma işletim sistemi kümelerinde kullanmak üzere uygulamalarınızda küçük düzenlemeler yapmanız gerekir. Bu nasıl yapılır kılavuzunda, düğüm seçicileri veya toint'leri ve toleransları kullanarak uygulamanızın doğru konak işletim sisteminde zamanlanmasını nasıl sağlayacağınız açıklanmaktadır.

Bu makalede Kubernetes kavramlarını temel olarak anlayan bir kavram olduğu varsayılır. Daha fazla bilgi için bkz . Arc tarafından etkinleştirilen AKS için Kubernetes temel kavramları.

Düğüm seçicileri

Düğüm seçici , pod belirtimi YAML'de podları yalnızca işletim sistemiyle eşleşen iyi durumdaki düğümlerde zamanlanacak şekilde kısıtlayan basit bir alandır. Pod belirtiminizde YAML, aşağıdaki örneklerde gösterildiği gibi bir nodeSelector Windows veya Linux değeri belirtin:

kubernetes.io/os = Windows

veya

kubernetes.io/os = Linux

Düğüm seçicileri hakkında daha fazla bilgi için bkz . düğüm seçicileri.

Renk tonları ve toleranslar

Taint'ler ve toleranslar , podların düğümlerde istemeden zamanlanmadığından emin olmak için birlikte çalışır. Bir düğüm, pod belirtimi YAML'deki bir "tolerans" aracılığıyla taint'ini açıkça tolere etmeyen podları reddetmek için "tainted" olabilir.

AKS Arc'taki Windows işletim sistemi düğümleri New-AksHciNodePool veya New-AksHciCluster komutları ile oluşturulduğunda tainted yapılabilir. Linux işletim sistemi düğümlerini taint yapmak için de bu komutları kullanabilirsiniz. Aşağıdaki örnek, Windows düğümlerini kısıtlar.

Yeni kümeye taint uygulama

Yeni bir küme de oluşturuyorsanız, aşağıdaki komutu çalıştırarak taint içeren bir Windows düğüm havuzu oluşturun. Taint içeren bir düğüm havuzu eklemek istediğiniz mevcut bir kümeniz varsa, komutunu kullanan New-AksHciNodePool sonraki örne bakın.

New-AksHciCluster -name mycluster -nodePoolName taintnp -nodeCount 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule

Var olan kümeye bozuk düğüm havuzu ekleme

Var olan bir kümeye bozuk düğüm havuzu eklemek için aşağıdaki komutu çalıştırın:

New-AksHciNodePool -clusterName <cluster-name> -nodePoolNAme taintnp -count 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule

Düğüm havuzunun taint ile başarıyla dağıtılıp dağıtılmadığını denetlemek için aşağıdaki komutu çalıştırın:

Get-AksHciNodePool -clusterName <cluster-name> -name taintnp

Örnek çıkış:

Status       : {Phase, Details}
ClusterName  : mycluster
NodePoolName : taintnp
Version      : v1.20.7-kvapkg.1
OsType       : Windows
NodeCount    : 0
VmSize       : Standard_K8S3_v1
Phase        : Deployed
Taints       : {sku=Windows:NoSchedule}

Pod için tolerans belirtme

YaML pod belirtiminde bir pod için tolerans belirtebilirsiniz. Aşağıdaki tolerans, önceki örnekte gösterilen taint çizgisi tarafından kubectl oluşturulan taint ile "eşleşir". Sonuç olarak, toleransı olan bir pod, boyanmış düğümlere zamanlanabilir.

tolerations:
- key: node.kubernetes.io/os
  operator: Equal
  value: Windows
  effect: NoSchedule

Bu bölümdeki adımlar, dağıttığınız pod belirtiminin denetimindeyseniz işe yarar. Ancak bazı durumlarda, kullanıcıların Linux kapsayıcıları için önceden var olan çok sayıda dağıtımın yanı sıra topluluk Helm grafikleri gibi yaygın yapılandırmalardan oluşan bir ekosistemi vardır. Grafiği indirip düzenlemek istemediğiniz sürece pod belirtimine erişemezsiniz.

Bu Helm grafiklerini hem Linux hem de Windows çalışan düğümleriyle karma bir küme ortamına dağıtırsanız, uygulama podlarınız "ImagePullBackOff" hatasıyla başarısız olur. Örneğin:

kubectl get pods
NAMESPACE              NAME                                                    READY   STATUS              RESTARTS   AGE
default                nginx-deployment-558fc78868-795dp                       0/1     ImagePullBackOff    0          6m24s
default                nginx-deployment-6b474476c4-gpb77                       0/1     ImagePullBackOff    0          11m

Bu örnekte, bu konuda yardımcı olması için renk tonlarını kullanabilirsiniz. Windows Server düğümleri anahtar-değer çifti node.kubernetes.io/os=windows:NoScheduleile boyanabilir.

Taint'ler ve toleranslar hakkında daha fazla bilgi için bkz . Taints ve Tolerations.

Sonraki adımlar

Bu nasıl yapılır kılavuzunda kubectl kullanarak Kubernetes kümelerinize düğüm seçicileri veya toint'leri ve toleransları eklemeyi öğrendiniz. Ardından şunları yapabilirsiniz: