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

Azure 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 için uygulamalarınızda küçük düzenlemeler yapmanız gerekir. Bu nasıl yapılır kılavuzunda, düğüm seçicileri veya renk tonları ve toleransları kullanarak uygulamanızın doğru konak işletim sisteminde zamanlanmasını nasıl sağlayacağınızı öğreneceksiniz.

Bu makalede Kubernetes kavramlarını temel olarak anlamayı varsaymaktadır. Daha fazla bilgi için bkz. AKS karma için Kubernetes temel kavramları.

Düğüm seçicileri

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

kubernetes.io/os = Windows

Veya

kubernetes.io/os = Linux

nodeSelectors 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. YaML pod belirtimindeki bir "tolerans" aracılığıyla taint'ini açıkça tolere etmeyen podları reddetmek için düğüm "bozuk" olabilir.

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

Yeni kümeye renk tonu 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

Mevcut 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ıldığını denetlemek için aşağıdaki komutu çalıştırın:

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

Örnek çıktı:

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 renk tonu çizgisi tarafından kubectl oluşturulan renk tonuyla "eşleşir". Sonuç olarak toleransı olan bir pod, bozuk düğümlere zamanlanabilir.

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

Dağıttığınız pod belirtiminin denetimi size aitse bu bölümdeki adımlar iyi çalışır. 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ırma 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. Örnek:

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 tonlamaları ve toleransları eklemeyi öğrendiniz. Ardından şunları yapabilirsiniz: