Dostosowywać aplikacje dla klastrów Kubernetes mieszanych systemów operacyjnych przy użyciu selektorów lub zmian węzłów oraz odpornościAdapt apps for mixed-OS Kubernetes clusters using node selectors or taints and tolerations

Dotyczy: AKS na Azure Stack HCL, AKS Runtime w systemie Windows Server 2019 DatacenterApplies to: AKS on Azure Stack HCI, AKS runtime on Windows Server 2019 Datacenter

Usługa Azure Kubernetes na Azure Stack HCL umożliwia uruchamianie klastrów Kubernetes z węzłami Linux i Windows, ale wymaga wprowadzenia małych zmian w aplikacjach do użycia w tych klastrach mieszanych systemów operacyjnych.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. W tym przewodniku krok po kroku dowiesz się, jak upewnić się, że aplikacja jest zaplanowana w odpowiednim systemie operacyjnym hosta przy użyciu selektorów lub przydziałów węzłów oraz wartości dopuszczalnych.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.

W tym przewodniku krok po kroku założono podstawową wiedzę na temat koncepcji Kubernetes.This how-to guide assumes a basic understanding of Kubernetes concepts. Aby uzyskać więcej informacji, zobacz Kubernetes podstawowe pojęcia dotyczące usługi Azure Kubernetes Service na Azure Stack HCL.For more information, see Kubernetes core concepts for Azure Kubernetes Service on Azure Stack HCI.

Selektor węzłaNode Selector

Selektor węzła jest prostym polem w specyfikacji na YAML, który ogranicza, aby można było zaplanować tylko te węzły, które pasują do systemu operacyjnego.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. W specyfikacji na YAML Określ  nodeSelector   system Windows lub Linux, jak pokazano w poniższych przykładach.In your pod specification YAML, specify a nodeSelector - Windows or Linux, as shown in the examples below.

kubernetes.io/os = Windows

orazor,

kubernetes.io/os = Linux

Aby uzyskać więcej informacji na temat nodeSelectors, odwiedź selektory węzłów.For more information on nodeSelectors, visit node selectors.

Przyznaczenia i tolerowanieTaints and tolerations

Przydziały i tolerowania współpracują ze sobą, aby upewnić się, że nie są w celowo zaplanowane na węzłach.Taints and tolerations work together to ensure that pods aren't scheduled on nodes unintentionally. Węzeł może być "przyłączany", aby nie przyjmować zasobników, które nie są jawnie tolerowane przez "tolerowanie" w specyfikacji 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.

Węzły systemu operacyjnego Windows w usłudze Azure Kubernetes na Azure Stack HCL można przystąpić za pomocą następującej pary klucz-wartość.Windows OS nodes in Azure Kubernetes Service on Azure Stack HCI can be tainted with the following key-value pair. Użytkownicy nie powinni korzystać z innej.Users shouldn't use a different one.

node.kubernetes.io/os=Windows:NoSchedule

Uruchom kubectl get i zidentyfikuj węzły procesu roboczego systemu Windows, które chcesz umieścić w pasku.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

Dane wyjściowe: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

Przybarwienie węzłów procesu roboczego systemu Windows Server za pomocą 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

Należy określić tolerowanie pod w specyfikacji pod YAML.You specify a toleration for a pod in the pod specification YAML. Następujące tolerowanie "dopasowuje" zmiany czasu utworzonego przez wiersz polecenia kubectl góry i w ten sposób, że może to być możliwe do zaplanowania na my-AKS-HCL-Cluster-MD-MD-1-5h4bl lub My-AKS-HCL-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

Aby uzyskać więcej informacji na temat przynośników i tolerowania , zobacz.For more information on taints and tolerations, visit Taints and Tolerations.

Następne krokiNext steps

W tym przewodniku jak można dowiedzieć się, jak dodać selektory lub przystawki lub odporności węzłów oraz odporności na klastry Kubernetes przy użyciu polecenia kubectl.In this how-to guide, you learned how to add node selectors or taints and tolerations to your Kubernetes clusters using kubectl. Następnie możesz:Next, you can: