Adapte aplicativos para clusters kubernetes mistos de sistema operacional usando seletores de nó ou os contras e TolerationsAdapt apps for mixed-OS Kubernetes clusters using node selectors or taints and tolerations

O serviço kubernetes do Azure em Azure Stack HCI permite que você execute clusters kubernetes com nós Linux e Windows, mas exige que você faça pequenas edições em seus aplicativos para uso nesses clusters mistos de sistema operacional.Azure Kubernetes Service on Azure Stack HCI enables you to run Kubernetes clusters with both Linux and Windows nodes, but requires you to make small edits to your apps for use in these mixed-OS clusters. Neste guia de instruções, você aprende a garantir que seu aplicativo seja agendado no sistema operacional do host correto usando os seletores de nó ou os Tolerations.In this how-to guide, you learn how to ensure your application gets scheduled on the right host OS using either node selectors or taints and tolerations.

Este guia de instruções pressupõe uma compreensão básica dos conceitos de kubernetes.This how-to guide assumes a basic understanding of Kubernetes concepts. Para obter mais informações, consulte kubernetes Core Concepts for Azure kubernetes Service on Azure Stack HCI.For more information, see Kubernetes core concepts for Azure Kubernetes Service on Azure Stack HCI.

Seletor de nóNode Selector

O seletor de nó é um campo simples na especificação de Pod YAML que restringe o pods a ser agendado apenas para nós íntegros que correspondem ao sistema operacional.Node Selector is a simple field in the pod specification YAML that constrains pods to only be scheduled onto healthy nodes matching the operating system. Em sua especificação de Pod YAML, especifique um  nodeSelector   -Windows ou Linux, conforme mostrado nos exemplos abaixo.In your pod specification YAML, specify a nodeSelector - Windows or Linux, as shown in the examples below.

kubernetes.io/os = Windows

ouor,

kubernetes.io/os = Linux

Para obter mais informações sobre nodeSelectors, visite seletores de nó.For more information on nodeSelectors, visit node selectors.

Contras e TolerationsTaints and tolerations

Taints Os contras e Tolerations trabalham juntos para garantir que os pods não sejam agendados para nós de forma involuntária.Taints and tolerations work together to ensure that pods aren't scheduled on nodes unintentionally. Um nó pode ser "comprovado" para não aceitar pods que não toleram explicitamente seu "toleration" na especificação de Pod YAML.A node can be "tainted" to not accept pods that don't explicitly tolerate its taint through a "toleration" in the pod specification YAML.

Os nós do sistema operacional Windows no serviço kubernetes do Azure em Azure Stack HCI podem ser Condos com o seguinte par chave-valor.Windows OS nodes in Azure Kubernetes Service on Azure Stack HCI can be tainted with the following key-value pair. Os usuários não devem usar um diferente.Users shouldn't use a different one.

node.kubernetes.io/os=Windows:NoSchedule

Execute kubectl get e identifique os nós de trabalho do Windows que você deseja que você queira fazer isso.Run kubectl get and identify the Windows worker nodes you want to taint.

kubectl get nodes --all-namespaces -o=custom-columns=NAME:.metadata.name,OS:.status.nodeInfo.operatingSystem

Saída:Output:

NAME                                     OS
my-aks-hci-cluster-control-plane-krx7j   linux
my-aks-hci-cluster-md-md-1-5h4bl         windows
my-aks-hci-cluster-md-md-1-5xlwz         windows

Os nós de trabalho do seu Windows Server estão usando kubectl taint node .Taint Windows server worker nodes using kubectl taint node.

kubectl taint node my-aks-hci-cluster-md-md-1-5h4bl node.kubernetes.io/os=Windows:NoSchedule
kubectl taint node my-aks-hci-cluster-md-md-1-5xlwz node.kubernetes.io/os=Windows:NoSchedule

Você especifica um toleration para um pod na especificação de Pod YAML.You specify a toleration for a pod in the pod specification YAML. O toleration a seguir "corresponde" ao o seu que foi criado pela linha de kubectl do e, portanto, um pod com o toleration seria capaz de agendar em My-AKs-HCI-cluster-MD-MD-1-5h4bl ou My-AKs-HCI-cluster-MD-MD-1-5xlwz:The following toleration "matches" the taint created by the kubectl taint line above, and thus a pod with the toleration would be able to schedule onto my-aks-hci-cluster-md-md-1-5h4bl or my-aks-hci-cluster-md-md-1-5xlwz:

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

Para obter mais informações sobre os dados e os tolerationss, visite os seus Tolerations.For more information on taints and tolerations, visit Taints and Tolerations.

Próximas etapasNext steps

Neste guia de instruções, você aprendeu a adicionar seletores de nó ou os tolerationss e os seus clusters kubernetes usando o kubectl.In this how-to guide, you learned how to add node selectors or taints and tolerations to your Kubernetes clusters using kubectl. Em seguida, você pode:Next, you can: