Ativar o isolamento de computação

Os aplicativos do Kf podem ser implantados em nós dedicados no cluster. Esse recurso é obrigatório se você tiver circunstâncias em que queira ter mais controle sobre um nó que recebe um pod de aplicativo. Exemplo:

  • Se você estiver compartilhando o mesmo cluster para aplicativos diferentes, mas quiser nós dedicados para um aplicativo específico.
  • Se você quiser nós dedicados a uma determinada organização (espaço do Kf).
  • Se você quiser ter um sistema operacional específico como alvo, como o Windows.
  • Se você quiser colocar os pods de dois serviços diferentes que se comunicam com frequência.

Para ativar o isolamento de computação, o Kf usa o nodeSelector do Kubernetes. Para usar esse recurso, primeiro adicione rótulos aos nós ou pools de nós que você quer que os pods de aplicativos acessem e adicione os mesmos rótulos qualificados ao espaço do Kf. Todos os apps instalados nesse espaço serão colocados nos nós com rótulos correspondentes.

O Kf cria um pod do Kubernetes para executar cada build do Kf. A funcionalidade BuildNodeSelector pode ser usada para isolar recursos de computação e executar somente os pods de build. Um caso de uso possível é isolar os pods de build para execução em nós com SSD enquanto os pods de apps são executados em outros nós. A funcionalidade BuildNodeSelectors otimiza recursos de computação e aumenta a flexibilidade no cluster. Consulte o capítulo Configurar BuildNodeSelectors e um pool de nós de build nesta página.

Configurar o nodeSelector em um cluster do Kf

Por padrão, o isolamento de computação está desativado. Use o procedimento a seguir para configurar rótulos e o nodeSelector.

  1. Adicione um rótulo (distype=ssd) ao nó que você quer que os pods do aplicativo acessem.

    kubectl label nodes nodeid disktype=ssd
  2. Adicione o mesmo rótulo ao espaço do Kf. Todos os aplicativos implantados nesse espaço são acessados nos nós qualificados.

    kf configure-space set-nodeselector space-name disktype ssd

    Adicione vários rótulos executando o mesmo comando novamente.

  3. Verifique se o rótulo está configurado.

    kf configure-space get-nodeselector space-name
  4. Exclua o rótulo do espaço.

    kf configure-space unset-nodeselector space-name disktype

Substituir nodeSelector para pilhas do Kf

A implantação de aplicativos do Kf pode ser ainda mais direcionada com base na pilha (buildpack) que está sendo usada para criar e empacotar o aplicativo. Por exemplo, se você quiser que os aplicativos criados com spaceStacksV2 acessem nós com o kernel do Linux 4.4.1. Os valores nodeSelector em uma pilha substituirão os valores configurados no espaço.

Para configurar o nodeSelector em uma pilha:

  1. Edite o config-defaults do cluster do Kf e adicione os rótulos.

    $ kubectl -n kf edit configmaps config-defaults
    
  2. Adicione nodeSelector à definição das pilhas.

    .....
    .....
    spaceStacksV2: |
    - name:  cflinuxfs3
            image: cloudfoundry/cflinuxfs3
            nodeSelector:
                  OS_KERNEL: LINUX_4.4.1 
    .....
    .....
    

Configurar BuildNodeSelectors e um pool de nós de build

Os seletores de nós de build só são eficazes para substituir os seletores de nós nos pods de build. Eles não afetam os pods de apps. Por exemplo, se você especificar os seletores de nós no espaço e os seletores de nós de build no Kfsystem, os pods de apps terão os seletores de nós do espaço, enquanto os pods de build terão os seletores de nós de build do Kfsystem. Se os seletores de nós forem especificados apenas no espaço, os pods de apps e de build terão o seletor de nós do espaço.

  1. Adicione rótulos, como disktype:ssd, aos nós a que você quer atribuir os pods de build.

    kubectl label nodes nodeid disktype=ssd
  2. Adicione/atualize os seletores de nós de build (no formato de pares key:value) aplicando um patch no CR do KfSystem.

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {<key>:<value>}}]'

    Por exemplo, para adicionar disktype=ssd como o seletor de nós de build:

    kubectl patch kfsystem kfsystem --type='json' -p='[{'op': 'replace', 'path': '/spec/kf/config/buildNodeSelectors', 'value': {"disktype":"ssd"}}]'