Karma işletim sistemi Kubernetes kümelerinde kullanmak için uygulamaları uyarlama
Şunlar için geçerlidir: Azure Yerel 22H2'de 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:NoSchedule
ile 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: