Adaptar aplicativos para uso em clusters kubernetes de so misto
Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server
O AKS habilitado pelo Azure Arc permite que você execute clusters do Kubernetes com nós do Linux e do Windows, mas você deve fazer pequenas edições em seus aplicativos para uso nesses clusters de so misto. Neste guia de instruções, você aprenderá a garantir que seu aplicativo seja agendado no sistema operacional do host correto usando seletores de nó ou taints e tolerations.
Este artigo pressupõe uma compreensão básica dos conceitos do Kubernetes. Para obter mais informações, consulte Conceitos básicos do Kubernetes para AKS habilitado pelo Arc.
Seletores de nó
Um seletor de nó é um campo simples no YAML de especificação de pod que restringe os pods a serem agendados apenas para nós íntegros que correspondem ao sistema operacional. No YAML de especificação do pod, especifique um nodeSelector
valor do Windows ou linux, conforme mostrado nos seguintes exemplos:
kubernetes.io/os = Windows
ou
kubernetes.io/os = Linux
Para obter mais informações sobre nodeSelectors, consulte seletores de nó.
Taints e tolerâncias
Taints e tolerations funcionam juntos para garantir que os pods não sejam agendados em nós sem querer. Um nó pode ser "contaminado" para rejeitar pods que não toleram explicitamente seu taint por meio de uma "tolerância" no YAML de especificação de pod.
Os nós do sistema operacional Windows no AKS Arc podem ser contaminados quando criados com os comandos New-AksHciNodePool ou New-AksHciCluster . Você também pode usar esses comandos para manchar nós do sistema operacional Linux. O exemplo a seguir mancha nós do Windows.
Aplicar taint ao novo cluster
Se você também criar um novo cluster, execute o comando a seguir para criar um pool de nós do Windows com um taint. Se você tiver um cluster existente ao qual deseja adicionar um pool de nós com um taint, consulte o próximo exemplo, que usa o New-AksHciNodePool
comando .
New-AksHciCluster -name mycluster -nodePoolName taintnp -nodeCount 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Adicionar pool de nós contaminados ao cluster existente
Para adicionar um pool de nós tainted a um cluster existente, execute o seguinte comando:
New-AksHciNodePool -clusterName <cluster-name> -nodePoolNAme taintnp -count 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Para marcar que o pool de nós foi implantado com êxito com o taint, execute o seguinte comando:
Get-AksHciNodePool -clusterName <cluster-name> -name taintnp
Saída de exemplo:
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}
Especificar tolerância para pod
Você pode especificar uma tolerância para um pod no YAML de especificação de pod. A tolerância a seguir "corresponde" ao taint criado pela kubectl
linha taint mostrada no exemplo anterior. O resultado é que um pod com tolerância pode agendar para os nós contaminados.
tolerations:
- key: node.kubernetes.io/os
operator: Equal
value: Windows
effect: NoSchedule
As etapas nesta seção funcionarão bem se você estiver no controle da especificação de pod que está implantando. No entanto, em alguns casos, os usuários têm um grande número pré-existente de implantações para contêineres do Linux, bem como um ecossistema de configurações comuns, como gráficos do Helm da comunidade. Você não terá acesso à especificação de pod, a menos que queira baixar e editar o gráfico.
Se você implantar esses gráficos do Helm em um ambiente de cluster misto com nós de trabalho do Linux e do Windows, os pods de aplicativo falharão com o erro "ImagePullBackOff". Por exemplo:
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
Nesse caso, você pode usar taints para ajudar com isso. Os nós do Windows Server podem ser contaminados com o par node.kubernetes.io/os=windows:NoSchedule
chave-valor .
Para obter mais informações sobre taints e tolerations, consulte Taints and Tolerations.
Próximas etapas
Neste guia de instruções, você aprendeu a adicionar seletores de nó ou taints e tolerâncias aos clusters do Kubernetes usando kubectl. Em seguida, você pode:
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de