Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Política de CPU

Cenários

Por padrão, o kubelet usa cotas do CFS para impor limites de CPU do pod. Quando o nó executa muitos pods ligados à CPU, a carga de trabalho pode mover-se para diferentes núcleos de CPU, dependendo se o pod é acelerado e quais núcleos de CPU estão disponíveis no momento do agendamento. Muitas cargas de trabalho não são sensíveis a essa migração e, portanto, funcionam bem sem qualquer intervenção. Algumas aplicações são sensíveis à CPU. Eles são sensíveis a:

  • Limitação da CPU
  • Comutação de contexto
  • Falta cache do processador
  • Acesso à memória entre soquetes
  • Hyperthreads que devem ser executados na mesma placa de CPU física

Se suas cargas de trabalho forem sensíveis a qualquer um desses itens e a afinidade de cache da CPU e a latência de agendamento afetarem significativamente o desempenho da carga de trabalho, o kubelet permitirá que políticas alternativas de gerenciamento de CPU (vinculação de CPU) determinem algumas preferências de posicionamento no nó. O gerenciador de CPU aloca preferencialmente recursos em um soquete e núcleos físicos completos para evitar interferências.

Ativar a política de gerenciamento da CPU

Uma política de gerenciamento de CPU é especificada pelo sinalizador de kubelet --cpu-manager-policy. Por padrão, o Kubernetes suporta as seguintes políticas:

  • Desativada (none): a política padrão. A política none ativa explicitamente o esquema de afinidade da CPU padrão existente, não fornecendo nenhuma afinidade além do que o agendador do sistema operacional faz automaticamente.
  • Ativada (static): a política static permite que os contêineres em pods garantidos com solicitações de GPU inteiras recebam maior afinidade e exclusividade da CPU no nó.

Ao criar um cluster, você pode configurar a política de gerenciamento da CPU em Advanced Settings.

Você também pode configurar a política em um pool de nós. A configuração mudará o sinalizador de kubelet --cpu-manager-policy no nó. Faça logon no console do CCE, clique no nome do cluster, acesse a página de detalhes do cluster e escolha Nodes no painel de navegação. Na página exibida, clique na guia Node Pools. Escolha More > Manage na coluna Operation do pool de nós de destino e altere o valor de cpu-manager-policy para static.

Permitir que os pods usem exclusivamente os recursos da CPU

Pré-requisitos:

Você pode usar Política de agendamento (afinidade/antiafinidade) para programar os pods configurados para os nós em que a política static está ativada. Desta forma, os pods podem usar exclusivamente os recursos da CPU.

Exemplo de YAML:
kind: Deployment
apiVersion: apps/v1
metadata:
  name: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
        - name: container-1
          image: nginx:alpine
          resources:
            requests:
              cpu: 2           # The value must be an integer and must be the same as that in limits.
              memory: 2048Mi
            limits:
              cpu: 2           # The value must be an integer and must be the same as that in requests.
              memory: 2048Mi
      imagePullSecrets:
        - name: default-secret