Адаптация приложений для кластеров смешанной ОС Kubernetes с помощью селекторов узлов или таинтс и допусковAdapt apps for mixed-OS Kubernetes clusters using node selectors or taints and tolerations

Применимо к: AKS в Azure Stack ХЦИ, среда выполнения AKS в Windows Server 2019 DatacenterApplies to: AKS on Azure Stack HCI, AKS runtime on Windows Server 2019 Datacenter

Служба Kubernetes Azure на Azure Stack ХЦИ позволяет запускать кластеры Kubernetes с узлами Linux и Windows, но требует внесения небольших изменений в приложения для использования в этих кластерах смешанных ОС.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. В этом пошаговом руководство вы узнаете, как обеспечить планирование приложения в правильной ОС узла с помощью селекторов узлов или таинтс и утверждений.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.

В этом пошаговом руководство предполагается базовое понимание концепций Kubernetes.This how-to guide assumes a basic understanding of Kubernetes concepts. Дополнительные сведения см. в статье основные понятия Kubernetes Core для службы Kubernetes Azure на Azure Stack хЦи.For more information, see Kubernetes core concepts for Azure Kubernetes Service on Azure Stack HCI.

Селектор узлаNode Selector

Селектор узлов — это простое поле в спецификации Pod YAML, которое ограничивает модули CER только на работоспособные узлы, соответствующие операционной системе.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. В спецификации Pod YAML укажите a  nodeSelector   -Windows или Linux, как показано в примерах ниже.In your pod specification YAML, specify a nodeSelector - Windows or Linux, as shown in the examples below.

kubernetes.io/os = Windows

илиor,

kubernetes.io/os = Linux

Дополнительные сведения о Нодеселекторс см. на странице селекторы узлов.For more information on nodeSelectors, visit node selectors.

Таинтс и допускиTaints and tolerations

Таинтс и допуски работают вместе, чтобы гарантировать непреднамеренное планирование модулей Pod на узлах.Taints and tolerations work together to ensure that pods aren't scheduled on nodes unintentionally. Узел может быть "загрязненными", чтобы не принимать модули Pod, которые явно не допускают его таинт с помощью "допустимости" в спецификации 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.

Узлы ОС Windows в службе Kubernetes Azure на Azure Stack ХЦИ могут быть загрязненными со следующей парой "ключ-значение".Windows OS nodes in Azure Kubernetes Service on Azure Stack HCI can be tainted with the following key-value pair. Пользователи не должны использовать другой.Users shouldn't use a different one.

node.kubernetes.io/os=Windows:NoSchedule

Запустите kubectl get и найдите рабочие узлы Windows, которые требуется таинт.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

Выходные данные: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

Таинт рабочие узлы Windows Server 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

Вы указываете допустимость для Pod в спецификации Pod YAML.You specify a toleration for a pod in the pod specification YAML. Следующее разрешение "соответствует" таинт, созданной в строке kubectl таинт, и поэтому Pod с допуском можно запланировать на My-AKS-хЦи-Cluster-MD-MD-1-5h4bl или My-AKS-хЦи-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

Дополнительные сведения о таинтс и допусках см. в таинтсах и Разклонениях.For more information on taints and tolerations, visit Taints and Tolerations.

Дальнейшие действияNext steps

В этом пошаговом руководство вы узнали, как добавить селекторы узлов или таинтс и допуски в кластеры Kubernetes с помощью kubectl.In this how-to guide, you learned how to add node selectors or taints and tolerations to your Kubernetes clusters using kubectl. Далее вы можете выполнить такую задачу:Next, you can: